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