From dd0c3d6bd507e0c6cada1433bc0bdb6479db19b5 Mon Sep 17 00:00:00 2001 From: Mylloon Date: Fri, 27 Oct 2023 21:51:27 +0200 Subject: [PATCH] let me cook --- TODO.md | 21 +++++++++++++-------- includes/Consultant.hpp | 4 ++-- includes/Expert.hpp | 4 ++-- includes/Projet.hpp | 12 ++++++------ includes/ProtoProjet.hpp | 13 +++++++++++-- includes/RunProjet.hpp | 2 +- 6 files changed, 35 insertions(+), 21 deletions(-) diff --git a/TODO.md b/TODO.md index 63677bd..8a12115 100644 --- a/TODO.md +++ b/TODO.md @@ -27,26 +27,27 @@ TODO avant rendu : - Méthodes (cf. le PDF du prof) - [x] `pick_two_random_tasks()` - [x] `contains()` - - [x] Surcharge : afficher toutes les tâches + - [x] Surcharge de `<<` : afficher toutes les tâches - [ ] `consult_tasks()` - [x] `topologicalSort()` #### ProtoProjet -- [ ] Permet de pouvoir ajouter de nouvelles tâches -- [ ] Ne peut pas progresser (a.k.a ne peut pas lancer les tâches) +- Permet de pouvoir ajouter de nouvelles tâches +- Ne peut pas progresser (a.k.a ne peut pas lancer les tâches) - Champs - - [ ] Tâche `début` - - [ ] Tâche `fin` + - [x] Tâche `début` + - [x] Tâche `fin` - Méthodes (cf. le PDF du prof) **⇒ Tout ça avec l'ordre topologique** - - [ ] Pas de méthode d'ajout d'un objet `Tache` + - Pas de méthode d'ajout d'un objet `Tache` - [ ] `bool ajoute(nom, durée)` : sélectionne au hasard 2 tâches déjà enregistrer et **ajoute** la nouvelle tâche entres-elles - - [ ] `bool ajoute(nom, durée, id)` : **déplace** une tâche quoi doit se réaliser + - [ ] `bool ajoute(nom, durée, id)` : **déplace** une tâche qui doit se réaliser **après** la tâche qui à l'`id` correspondant (et avant la tâche finale) **⇒ création d'une dépendance** - [ ] `bool ajoute(nom, durée, id1, id2)` : **ajoute** une tâche entre les 2 tâches qui ont l'identifiant `id1` et `id2` + - [ ] Surcharge de `<<` #### RunProjet @@ -56,6 +57,7 @@ TODO avant rendu : - Méthodes (cf. le PDF du prof) - [ ] `run(id)` : Lance une tâche - [ ] `run(sequence_taches)` : Exécute une liste de tâches dans l'ordre donnée + - [ ] Surcharge de `<<` ### Gestionnaire / Concepteur @@ -66,7 +68,7 @@ TODO avant rendu : - [ ] Calcule la durée totale restante d'un projet - [ ] Demande un salaire pour travailler - Méthodes - - [ ] Surcharge `<<` : Affiche une facturation + - [ ] Surcharge de `<<` : Affiche une facturation - [ ] `pair, int> avis(const RunProjet &)` : renvoie l'ordonnancement et la durée totale restante @@ -80,6 +82,8 @@ Calcule **avec** parallélisation des tâches ### Tâches +Est-ce que l'on ne rendrait pas la classe complètement privée avec comme ami Projet et Gestionnaire ? + - [x] Dépendantes, entre-elles - [x] Durée exacte, fixe, propre à elle-même - [x] Ne peut être lancé que si toutes les dépendances sont réalisées @@ -97,3 +101,4 @@ Calcule **avec** parallélisation des tâches - [x] `bool depends_from(Tache & x)` - [x] `bool ajouteDependance(Tache & x)` - [x] `int dureeParal()` + - [x] Surcharge de `<<` diff --git a/includes/Consultant.hpp b/includes/Consultant.hpp index 6915577..2871db6 100644 --- a/includes/Consultant.hpp +++ b/includes/Consultant.hpp @@ -1,9 +1,9 @@ #ifndef TP5_CONSULTANT_HPP #define TP5_CONSULTANT_HPP 1 -#include +#include "Gestionnaire.hpp" -class Consultant { +class Consultant final : Gestionnaire { friend std::ostream &operator<<(std::ostream &, const Consultant &); public: diff --git a/includes/Expert.hpp b/includes/Expert.hpp index 589149f..c2d19fb 100644 --- a/includes/Expert.hpp +++ b/includes/Expert.hpp @@ -1,9 +1,9 @@ #ifndef TP5_EXPERT_HPP #define TP5_EXPERT_HPP 1 -#include +#include "Gestionnaire.hpp" -class Expert { +class Expert final : Gestionnaire { friend std::ostream &operator<<(std::ostream &, const Expert &); public: diff --git a/includes/Projet.hpp b/includes/Projet.hpp index bbdcfa1..e8b326f 100644 --- a/includes/Projet.hpp +++ b/includes/Projet.hpp @@ -1,12 +1,15 @@ #ifndef TP5_PROJET_HPP #define TP5_PROJET_HPP 1 -#include "../includes/Tache.hpp" +#include "Tache.hpp" #include class Projet { + friend std::ostream &operator<<(std::ostream &, const Projet &); + +protected: Tache // Première tâche qui sera exécutée debut, @@ -14,9 +17,6 @@ class Projet { // Source du graphe aka la dernière à être exécutée fin; - friend std::ostream &operator<<(std::ostream &, const Projet &); - -protected: Projet(); // constructor virtual ~Projet(); // destructor @@ -30,8 +30,8 @@ protected: const std::pair pick_two_random_tasks() const; // Indique pour une tâche si elle fait partie du projet - const Tache *contains(const int) const; - const Tache *contains(const std::string) const; + const Tache *contains(const int id) const; + const Tache *contains(const std::string name) const; // Donne une version du vecteur de tâches non modifiable const std::vector consult_tasks() const; diff --git a/includes/ProtoProjet.hpp b/includes/ProtoProjet.hpp index 14400b9..476b8dc 100644 --- a/includes/ProtoProjet.hpp +++ b/includes/ProtoProjet.hpp @@ -17,8 +17,17 @@ public: // Remet tous les marquages à leur valeur initiale void cleanMarks(); - // Insère une nouvelle tâche en la plaçant entre deux tâches au hasars - /* bool ajoute(std::string nom, int duree); */ + // Insère une nouvelle tâche en la plaçant entre deux tâches au hasard + bool ajoute(const std::string nom, const int duree); + + // Insère une nouvelle tâche en la plaçant après la tâche avec l'ID + // renseignée et avant la tâche finale, en créant une dépendance + bool ajoute(const std::string nom, const int duree, const int id); + + // Insère une nouvelle tâche en la plaçant entre les deux tâches renseignée + // via ID + bool ajoute(const std::string nom, const int duree, const int id1, + const int id2); }; #endif diff --git a/includes/RunProjet.hpp b/includes/RunProjet.hpp index 74aa24c..4a974c1 100644 --- a/includes/RunProjet.hpp +++ b/includes/RunProjet.hpp @@ -3,7 +3,7 @@ #include "ProtoProjet.hpp" -class RunProjet : public ProtoProjet { +class RunProjet final : public ProtoProjet { friend std::ostream &operator<<(std::ostream &, const RunProjet &); public: