runproject uwu
This commit is contained in:
parent
8d3b9973a6
commit
7b2726c5d2
8 changed files with 31 additions and 19 deletions
2
TODO.md
2
TODO.md
|
@ -51,7 +51,7 @@ TODO avant rendu :
|
|||
|
||||
#### RunProjet
|
||||
|
||||
- [ ] Construit uniquement via un `ProtoProjet`
|
||||
- [x] Construit uniquement via un `ProtoProjet`
|
||||
- [ ] Avance vers sa conclusion en prenant en compte des tâches ponctuelles <!-- ?? -->
|
||||
- [ ] Vide le contenu d'un `ProtoProjet` pour se construire, rendre les tâches "read-only"
|
||||
- Méthodes (cf. le PDF du prof)
|
||||
|
|
|
@ -5,15 +5,21 @@
|
|||
|
||||
#include <algorithm>
|
||||
|
||||
struct RunProjet;
|
||||
|
||||
class Projet {
|
||||
|
||||
friend std::ostream &operator<<(std::ostream &, const Projet &);
|
||||
friend RunProjet;
|
||||
|
||||
// Auxilliaire pour simplifier les copies
|
||||
void _copy(const Projet &);
|
||||
|
||||
// Auxiliiaire pour simplifier la libération de mémoire des tâches
|
||||
void _free();
|
||||
void free_taches();
|
||||
|
||||
// Remet tous les marquages à leur valeur initiale
|
||||
virtual void cleanMarks() const = 0;
|
||||
|
||||
protected:
|
||||
Tache
|
||||
|
@ -44,9 +50,6 @@ protected:
|
|||
|
||||
// Corrige les éventuelles anomalies du vector de tâches
|
||||
void topologicalSort();
|
||||
|
||||
// Remet tous les marquages à leur valeur initiale
|
||||
virtual void cleanMarks() const = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -7,6 +7,8 @@ class ProtoProjet : public Projet {
|
|||
|
||||
friend std::ostream &operator<<(std::ostream &, const ProtoProjet &);
|
||||
|
||||
void cleanMarks() const;
|
||||
|
||||
public:
|
||||
ProtoProjet(); // constructor
|
||||
virtual ~ProtoProjet(); // destructor
|
||||
|
@ -14,8 +16,6 @@ public:
|
|||
ProtoProjet(const ProtoProjet &); // copy constructor
|
||||
const ProtoProjet &operator=(const ProtoProjet &); // copy assignement
|
||||
|
||||
void cleanMarks() const;
|
||||
|
||||
// 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);
|
||||
|
||||
|
|
|
@ -7,8 +7,9 @@ class RunProjet final : public ProtoProjet {
|
|||
friend std::ostream &operator<<(std::ostream &, const RunProjet &);
|
||||
|
||||
public:
|
||||
RunProjet(); // constructor
|
||||
virtual ~RunProjet(); // destructor
|
||||
RunProjet() = delete; // constructor
|
||||
RunProjet(ProtoProjet &); // constructor
|
||||
virtual ~RunProjet(); // destructor
|
||||
|
||||
RunProjet(const RunProjet &); // copy constructor
|
||||
const RunProjet &operator=(const RunProjet &); // copy assignement
|
||||
|
|
|
@ -7,21 +7,21 @@ Projet::Projet() : debut(new Tache("Début", 0)), fin(new Tache("Fin", 0)) {
|
|||
taches.push_back(debut);
|
||||
}
|
||||
|
||||
Projet::~Projet() { _free(); }
|
||||
Projet::~Projet() { free_taches(); }
|
||||
|
||||
void Projet::_copy(const Projet &src) {
|
||||
// Copie des tâches
|
||||
taches.reserve(src.taches.size());
|
||||
for (Tache *t : src.taches) {
|
||||
Tache *tache = new Tache(*t);
|
||||
taches.push_back(tache);
|
||||
taches.push_back(new Tache(*t));
|
||||
}
|
||||
}
|
||||
|
||||
void Projet::_free() {
|
||||
void Projet::free_taches() {
|
||||
for (Tache *it : taches) {
|
||||
delete it;
|
||||
}
|
||||
taches.clear();
|
||||
}
|
||||
|
||||
Projet::Projet(const Projet &src) : debut(src.debut), fin(src.fin) {
|
||||
|
@ -34,7 +34,7 @@ const Projet &Projet::operator=(const Projet &src) {
|
|||
}
|
||||
debut = src.debut;
|
||||
fin = src.fin;
|
||||
_free();
|
||||
free_taches();
|
||||
_copy(src);
|
||||
return *this;
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ ProtoProjet::ProtoProjet() {}
|
|||
|
||||
ProtoProjet::~ProtoProjet() {}
|
||||
|
||||
ProtoProjet::ProtoProjet(const ProtoProjet &) : Projet() {}
|
||||
ProtoProjet::ProtoProjet(const ProtoProjet &src) : Projet(src) {}
|
||||
|
||||
const ProtoProjet &ProtoProjet::operator=(const ProtoProjet &src) {
|
||||
if (this == &src) {
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
#include "../includes/RunProjet.hpp"
|
||||
|
||||
RunProjet::RunProjet() { std::cout << "Hello, runProject!\n"; }
|
||||
RunProjet::RunProjet(ProtoProjet &src) : ProtoProjet(src) { src.free_taches(); }
|
||||
|
||||
RunProjet::~RunProjet() {}
|
||||
|
||||
RunProjet::RunProjet(const RunProjet &) : ProtoProjet() {}
|
||||
RunProjet::RunProjet(const RunProjet &src) : ProtoProjet(src) {}
|
||||
|
||||
const RunProjet &RunProjet::operator=(const RunProjet &src) {
|
||||
if (this == &src) {
|
||||
|
@ -13,3 +13,11 @@ const RunProjet &RunProjet::operator=(const RunProjet &src) {
|
|||
|
||||
return *this;
|
||||
}
|
||||
|
||||
std::ostream &operator<<(std::ostream &out, const RunProjet &data) {
|
||||
for (Tache *t : data.taches) {
|
||||
out << *t << "\n";
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
|
|
@ -15,11 +15,11 @@ int main() {
|
|||
cout << pp;
|
||||
cout << "\n----------" << endl;
|
||||
|
||||
/* RunProjet rp{pp};
|
||||
RunProjet rp{pp};
|
||||
cout << "----- verification : ProtoProjet vide " << endl;
|
||||
cout << pp << endl;
|
||||
|
||||
Consultant c;
|
||||
/* Consultant c;
|
||||
cout << c.avis(rp).second << endl; // dira 25
|
||||
|
||||
Expert e;
|
||||
|
|
Reference in a new issue