Bonjour / bonsoir !
Suite aux nombreuses tentatives recentes sur cette exo , c'est maintenant a mon tour de m'y mettre J'ai fini la partie 1.1 ( aquarium / poisson / algue ).
Voici mon code , j'essaie le plus possible d'utiliser les nouveaux outils mis a notre disposition avec le c++14.
main.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <iostream> #include "Aquarium.hpp" int main() { Aquarium aq{}; aq.ajouter_algue(); aq.ajouter_algue(); aq.ajouter_poisson(std::make_unique<Poisson>("Sonia", Sexe::FEMALE)); aq.ajouter_poisson(std::make_unique<Poisson>("Michael",Sexe::MALE)); aq.passer_temps(); return 0; } |
Poisson.hpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #ifndef POISSON_HPP #define POISSON_HPP #include <string> #include "Semantique.hpp" enum class Sexe{MALE,FEMALE}; enum class Etat{VIVANT,MORT}; class Poisson : private no_copy { public: Poisson(const std::string & nom , Sexe sexe ) : nom_(nom),sexe_{sexe},etat_{Etat::VIVANT}{}; ~Poisson(){}; const std::string & nom(){return nom_;}; std::string sexe(){return (sexe_ == Sexe::FEMALE) ? "Femelle" : "Male";}; private: std::string nom_; Sexe sexe_; Etat etat_; }; #endif // POISSON_HPP |
Algue.hpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #ifndef ALGUE__HPP #define ALGUE_HPP #include "Semantique.hpp" class Algue : private no_copy { public: Algue():etat_{Etat::VIVANT}{}; ~Algue(){}; private: Etat etat_; }; #endif // ALGUE__HPP |
Aquarium.hpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #ifndef AQUARIUM_HPP #define AQUARIUM_HPP #include <vector> #include <memory> #include <iostream> #include "Poisson.hpp" #include "Algue.hpp" class Aquarium : private no_copy { public: Aquarium(){}; ~Aquarium(){}; void ajouter_poisson( std::unique_ptr<Poisson> p ) { Poissons_.push_back( std::move(p) ); } void ajouter_algue() { Algues_.push_back( std::make_unique<Algue>() ); } void passer_temps() { Tour_++; std::cout<<"Tour #" <<tour_ <<std::endl <<std::endl; std::cout<<"Algues : " <<Algues_.size() <<std::endl; std::cout<<"Poissons : " <<Poissons_.size() <<std::endl; for(const auto & p : Poissons_) std::cout<<"- " <<p->nom() <<" : " <<p->sexe() <<std::endl; std::cout<<"===============================================" <<std::endl; } private: std::vector<std::unique_ptr<Poisson>> Poissons_; std::vector<std::unique_ptr<Algue>> Algues_; unsigned int Tour_{0}; }; |
Semantique.hpp ( classe non copiable )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #ifndef SEMANTIQUE_HPP #define SEMANTIQUE_HPP class no_copy { public: no_copy(const no_copy &) = delete; no_copy & operator=(const no_copy &) = delete; protected: no_copy(){}; }; #endif // SEMANTIQUE_HPP |
Merci de prendre le temps de lire
+0
-0