[C++] Question Architecture avec interface multiple
Bonjour,
j'ai une classe Objet qui possède comme donnée des coordonnées
Code :
- class Object
- {
- int x;
- int y;
- };
|
Suivant les endroits ou je me trouve dans l'application, je voudrais qu'il soit vu comme un Displayable(pour son affichage à l'écran) ou comme un TargetObject (pour d'autres opérations) . Displayable et TargetObject sont vu un peu comme des interfaces
Code :
- class Displayable
- {
- int x;
- int y;
- void display();
- };
- class TargetObject
- {
- int x;
- int y;
- void compute();
- }
|
Le but étant de pouvoir gérer une liste d'objet, tantôt comme une liste de Displayable, tantôt comme une liste de TargetObject
Je pensais faire hériter object des 2 précédentes classes
Code :
- class Object : public Displayable, public TargetObject{...}
|
Mais dans ce cas je me retrouve avec 3 variable x (et y) différentes, et comme elles doivent tout le temps avoir la même valeur, cela devient difficile à gérer pour les modifier en même temps et il y a redondance d'information, d'autant qu'il y a évidement d'autres variables.
De plus mes classes doivent pouvoir être héritées
Je peux aussi faire une agrégation du genre
Code :
- class Object {
- int x;
- int y;
- Displayable _display;
- TargetObject _target;
|
L'avantage de la dernière méthode est que je peux utiliser des monteur pour créer mes classe héritées de object, à partir des classe héritées de Displayable et TargetObject mais j'ai le même problème de MAJ des données et de redondance
Je ne peux pas non plus supprimmer x et y de mes interface, car sinon je n'aurais plus accès à leur valeurs...
Est ce quelqu'un à une idée pour partager les données x et y pour que la modification via une "interface" (Displayable ouTargetObject) soit générale à tout l'objet de base ?
Merci d'avance
Message édité par toonj le 23-12-2009 à 10:32:02