let me cook

This commit is contained in:
Mylloon 2023-10-27 21:51:27 +02:00
parent 9173dfc39a
commit dd0c3d6bd5
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
6 changed files with 35 additions and 21 deletions

21
TODO.md
View file

@ -27,26 +27,27 @@ TODO avant rendu :
- Méthodes (cf. le PDF du prof) - Méthodes (cf. le PDF du prof)
- [x] `pick_two_random_tasks()` - [x] `pick_two_random_tasks()`
- [x] `contains()` - [x] `contains()`
- [x] Surcharge : afficher toutes les tâches - [x] Surcharge de `<<` : afficher toutes les tâches
- [ ] `consult_tasks()` <!-- faudrait testé si elles sont vraiment pas modifiable avant de cocher cette case --> - [ ] `consult_tasks()` <!-- faudrait testé si elles sont vraiment pas modifiable avant de cocher cette case -->
- [x] `topologicalSort()` - [x] `topologicalSort()`
#### ProtoProjet #### ProtoProjet
- [ ] Permet de pouvoir ajouter de nouvelles tâches - Permet de pouvoir ajouter de nouvelles tâches
- [ ] Ne peut pas progresser (a.k.a ne peut pas lancer les tâches) - Ne peut pas progresser (a.k.a ne peut pas lancer les tâches)
- Champs - Champs
- [ ] Tâche `début` - [x] Tâche `début`
- [ ] Tâche `fin` - [x] Tâche `fin`
- Méthodes (cf. le PDF du prof) **⇒ Tout ça avec l'ordre topologique** - 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à - [ ] `bool ajoute(nom, durée)` : sélectionne au hasard 2 tâches déjà
enregistrer et **ajoute** la nouvelle tâche entres-elles 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) **après** la tâche qui à l'`id` correspondant (et avant la tâche finale)
**⇒ création d'une dépendance** **⇒ création d'une dépendance**
- [ ] `bool ajoute(nom, durée, id1, id2)` : **ajoute** une tâche entre les 2 tâches - [ ] `bool ajoute(nom, durée, id1, id2)` : **ajoute** une tâche entre les 2 tâches
qui ont l'identifiant `id1` et `id2` qui ont l'identifiant `id1` et `id2`
- [ ] Surcharge de `<<`
#### RunProjet #### RunProjet
@ -56,6 +57,7 @@ TODO avant rendu :
- Méthodes (cf. le PDF du prof) - Méthodes (cf. le PDF du prof)
- [ ] `run(id)` : Lance une tâche - [ ] `run(id)` : Lance une tâche
- [ ] `run(sequence_taches)` : Exécute une liste de tâches dans l'ordre donnée - [ ] `run(sequence_taches)` : Exécute une liste de tâches dans l'ordre donnée
- [ ] Surcharge de `<<`
### Gestionnaire / Concepteur ### Gestionnaire / Concepteur
@ -66,7 +68,7 @@ TODO avant rendu :
- [ ] Calcule la durée totale restante d'un projet - [ ] Calcule la durée totale restante d'un projet
- [ ] Demande un salaire pour travailler - [ ] Demande un salaire pour travailler
- Méthodes - Méthodes
- [ ] Surcharge `<<` : Affiche une facturation - [ ] Surcharge de `<<` : Affiche une facturation
- [ ] `pair<vector<int>, int> avis(const RunProjet &)` : renvoie l'ordonnancement - [ ] `pair<vector<int>, int> avis(const RunProjet &)` : renvoie l'ordonnancement
et la durée totale restante et la durée totale restante
@ -80,6 +82,8 @@ Calcule **avec** parallélisation des tâches
### 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] Dépendantes, entre-elles
- [x] Durée exacte, fixe, propre à elle-même - [x] Durée exacte, fixe, propre à elle-même
- [x] Ne peut être lancé que si toutes les dépendances sont réalisées - [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 depends_from(Tache & x)`
- [x] `bool ajouteDependance(Tache & x)` - [x] `bool ajouteDependance(Tache & x)`
- [x] `int dureeParal()` - [x] `int dureeParal()`
- [x] Surcharge de `<<`

View file

@ -1,9 +1,9 @@
#ifndef TP5_CONSULTANT_HPP #ifndef TP5_CONSULTANT_HPP
#define TP5_CONSULTANT_HPP 1 #define TP5_CONSULTANT_HPP 1
#include <iostream> #include "Gestionnaire.hpp"
class Consultant { class Consultant final : Gestionnaire {
friend std::ostream &operator<<(std::ostream &, const Consultant &); friend std::ostream &operator<<(std::ostream &, const Consultant &);
public: public:

View file

@ -1,9 +1,9 @@
#ifndef TP5_EXPERT_HPP #ifndef TP5_EXPERT_HPP
#define TP5_EXPERT_HPP 1 #define TP5_EXPERT_HPP 1
#include <iostream> #include "Gestionnaire.hpp"
class Expert { class Expert final : Gestionnaire {
friend std::ostream &operator<<(std::ostream &, const Expert &); friend std::ostream &operator<<(std::ostream &, const Expert &);
public: public:

View file

@ -1,12 +1,15 @@
#ifndef TP5_PROJET_HPP #ifndef TP5_PROJET_HPP
#define TP5_PROJET_HPP 1 #define TP5_PROJET_HPP 1
#include "../includes/Tache.hpp" #include "Tache.hpp"
#include <algorithm> #include <algorithm>
class Projet { class Projet {
friend std::ostream &operator<<(std::ostream &, const Projet &);
protected:
Tache Tache
// Première tâche qui sera exécutée // Première tâche qui sera exécutée
debut, debut,
@ -14,9 +17,6 @@ class Projet {
// Source du graphe aka la dernière à être exécutée // Source du graphe aka la dernière à être exécutée
fin; fin;
friend std::ostream &operator<<(std::ostream &, const Projet &);
protected:
Projet(); // constructor Projet(); // constructor
virtual ~Projet(); // destructor virtual ~Projet(); // destructor
@ -30,8 +30,8 @@ protected:
const std::pair<const int, const int> pick_two_random_tasks() const; const std::pair<const int, const int> pick_two_random_tasks() const;
// Indique pour une tâche si elle fait partie du projet // Indique pour une tâche si elle fait partie du projet
const Tache *contains(const int) const; const Tache *contains(const int id) const;
const Tache *contains(const std::string) const; const Tache *contains(const std::string name) const;
// Donne une version du vecteur de tâches non modifiable // Donne une version du vecteur de tâches non modifiable
const std::vector<Tache *> consult_tasks() const; const std::vector<Tache *> consult_tasks() const;

View file

@ -17,8 +17,17 @@ public:
// Remet tous les marquages à leur valeur initiale // Remet tous les marquages à leur valeur initiale
void cleanMarks(); void cleanMarks();
// Insère une nouvelle tâche en la plaçant entre deux tâches au hasars // Insère une nouvelle tâche en la plaçant entre deux tâches au hasard
/* bool ajoute(std::string nom, int duree); */ 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 #endif

View file

@ -3,7 +3,7 @@
#include "ProtoProjet.hpp" #include "ProtoProjet.hpp"
class RunProjet : public ProtoProjet { class RunProjet final : public ProtoProjet {
friend std::ostream &operator<<(std::ostream &, const RunProjet &); friend std::ostream &operator<<(std::ostream &, const RunProjet &);
public: public: