This repository has been archived on 2023-10-29. You can view files and clone it, but cannot push or open issues or pull requests.
GestionProjet/includes/Tache.hpp

63 lines
1.5 KiB
C++
Raw Normal View History

2023-10-19 23:05:11 +02:00
#ifndef TP5_TACHE_HPP
#define TP5_TACHE_HPP 1
#include <iostream>
2023-10-26 19:08:00 +02:00
#include <vector>
2023-10-19 23:05:11 +02:00
2023-10-27 18:01:17 +02:00
struct Projet;
2023-10-27 18:52:27 +02:00
class Tache final {
2023-10-26 19:08:00 +02:00
// 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<Tache *> dependances;
2023-10-27 19:31:44 +02:00
// Nom de la tâche
std::string name;
2023-10-19 23:05:11 +02:00
friend std::ostream &operator<<(std::ostream &, const Tache &);
2023-10-27 18:01:17 +02:00
friend Projet;
2023-10-19 23:05:11 +02:00
2023-10-26 19:08:00 +02:00
// Auxilliaire pour simplifier les copies
void _copy(const Tache &);
2023-10-19 23:05:11 +02:00
public:
2023-10-27 21:40:27 +02:00
// Vrai si la tâche à été visitée par le parcours en profondeur
bool visite;
2023-10-27 19:31:44 +02:00
Tache(const std::string, const int); // constructor
virtual ~Tache(); // destructor
2023-10-19 23:05:11 +02:00
Tache(const Tache &); // copy constructor
const Tache &operator=(const Tache &); // copy assignement
2023-10-26 19:08:00 +02:00
// 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;
2023-10-27 21:40:27 +02:00
// Parcours en profondeur
void PP_postfixe(std::vector<Tache *>);
2023-10-19 23:05:11 +02:00
};
#endif