#ifndef TP5_TACHE_HPP #define TP5_TACHE_HPP 1 #include #include struct Projet; class Tache final { // Compteur global pour les IDs static int counter_id; // Etat enum Etat { EnAttente, Realisee }; friend std::ostream &operator<<(std::ostream &, const Etat &); // ID unique de la tâche const int unique_id; // Durée totale pour faire la tâche int duree_total; // Etat actuelle de la tâche enum Etat etat; // Liste des dépendances std::vector dependances; friend std::ostream &operator<<(std::ostream &, const Tache &); friend Projet; // Auxilliaire pour simplifier les copies void _copy(const Tache &); public: Tache(const int); // constructor virtual ~Tache(); // destructor Tache(const Tache &); // copy constructor const Tache &operator=(const Tache &); // copy assignement // Déclenche la réalisation de la tâche après vérification bool realise(); // Indique si la tâche courante dépend d'une autre bool depends_from(const Tache &) const; // Ajoute une dépendance si possible bool ajouteDependance(Tache &); // Calcule la durée totale max de réalisation d'une tâche et des dépendances int dureeParal() const; }; #endif