Bonjour/bonsoir,
En fait le souci que j'ai eu là : https://www.developpez.net/forums/d2...obleme-design/. Il n'est pas résolu.
La question que j'ai posé oui, mais le problème sous-jacent non.
Je vais changer d'univers, les animaux c'est peut-être pas le bon exemple.
Imaginons, une personne cherche un logement, un appartement. Cet appartement est petit. Et la personne sait se contenter de peu.
L'appartement contient un lit, un four, des toilettes, une douche, il est caractérisé par une surface aussi...et un meuble supplémentaire (quand je vous disais qu'il se contentait de peu).
Ce meuble peut être une table à manger, une étagère, ou ce que vous voulez du moment qu'ils sont caractérisés différemment (la table a une surface, l'étagère une hauteur, le bureau des tiroirs...).
Il doit être choisi en fonction de la surface de l'appartement (si c'est petit, on prend une étagère, si c'est moyen un bureau, si c'est grand une grande table à manger et si c'est trop petit, alors pas de meuble du tout).
Comment je peux représenter tout ça ? Déjà l'appartement a ses différents paramètres ainsi que le meuble. Et le meuble est choisi en fonction d'un des paramètres de l'appartement.
Mais comment je fais ensuite ? Je crée N classes différentes ? Une classe mère et plusieurs classes filles avec du polymorphisme ?
Alors pour ce dernier cas je pourrais utiliser ce qu'on m'a proposé, mais je commence à me demander si c'est la meilleure solution pour ce genre de soucis.
Bref, voilà déjà la classe Appartement que je propose :
Qu'est ce que je mets alors dans Meuble sachant que je vais vouloir récupérer les caractéristiques des différents types de meubles et que donc c'est chaud avec du polymorphisme (je vais me retrouver avec une mauvaise solution, comme celle dont je parle dans le lien).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 class Appartement { public: Appartement() { mArea = 0; mMeuble = new Meuble(); } // autre constructeur avec une valeur pour mArea et donc un switch pour le meuble ~Appartement() { delete mMeuble; mMeuble = nullptr; } void setArea(int area) {mArea = area;}; int const & getArea() const {return mArea;}; void setMeuble(const Meuble &meubleCopie) { /* switch qui choisis le type de meuble en fonction de area */ } private: int mArea; Meuble *mMeuble; };
Partager