Question Architecture avec interface multiple [Resolu][C++] - C++ - Programmation
Marsh Posté le 22-12-2009 à 16:07:38
Du polymorphisme, ça n'irait pas ?
Marsh Posté le 22-12-2009 à 17:00:06
uh oui , c'ets la base basique :
Code :
|
Marsh Posté le 22-12-2009 à 17:08:52
effectivement, sauf que je voudrais pouvoir maintenir mon code display() et compute() en dehors de ma classe Object : si je veux un jour changer les propriétés d'affichage (passage 2d vers 3D par exemple), je ne veux pas avoir à toucher à ma classe Object et ses dérivés (j'ai oublié de préciser cette contrainte)
Marsh Posté le 22-12-2009 à 23:13:22
toonj a écrit : effectivement, sauf que je voudrais pouvoir maintenir mon code display() et compute() en dehors de ma classe Object : si je veux un jour changer les propriétés d'affichage (passage 2d vers 3D par exemple), je ne veux pas avoir à toucher à ma classe Object et ses dérivés (j'ai oublié de préciser cette contrainte) |
Marsh Posté le 23-12-2009 à 00:09:38
__tomjost a écrit : |
Marsh Posté le 23-12-2009 à 00:10:57
toonj a écrit : effectivement, sauf que je voudrais pouvoir maintenir mon code display() et compute() en dehors de ma classe Object : si je veux un jour changer les propriétés d'affichage (passage 2d vers 3D par exemple), je ne veux pas avoir à toucher à ma classe Object et ses dérivés (j'ai oublié de préciser cette contrainte) |
Alors tu fais des classes d'affichage et de traitement qui prennent en paramètre un de tes objets.
Marsh Posté le 23-12-2009 à 08:55:01
L'idée d'une classe d'affichage me plait bien
Ca donne (si j'ai bien tout compris !) quelque chose comme ça :
Code :
|
d'autres idées, ou des commentaires ?
Marsh Posté le 23-12-2009 à 10:19:18
Tu peux également utiliser des politiques : http://alp.developpez.com/tutoriels/type-erasure/#LIV
Marsh Posté le 23-12-2009 à 10:31:15
lien très intéressant, merci
Je considère le sujet comme résolu.
Marsh Posté le 23-12-2009 à 11:30:57
toonj a écrit : effectivement, sauf que je voudrais pouvoir maintenir mon code display() et compute() en dehors de ma classe Object : si je veux un jour changer les propriétés d'affichage (passage 2d vers 3D par exemple), je ne veux pas avoir à toucher à ma classe Object et ses dérivés (j'ai oublié de préciser cette contrainte) |
Tu vas faire comment pour passer en 3d sans modifier ta classe objet alors que c'est la que tu mets tes coordonées (x,y)? a moins que la composante z sera constante ?
Marsh Posté le 23-12-2009 à 12:51:00
Personnellement je ne mettrais même pas un membre affichage ou de traitement.
La logique c'est d'avoir une classe modèle/document qui maintiens ta géométrie/éléments.
Ensuite tu as des classes qui manipulent, affichent.....
Dans une image tu stockes pas par pixel les dépendances vers chaque action que tu peux faire par pixel.
Enfin a voir ce que tu veux faire, mais là ça me parait over-engineered pour rien.
Marsh Posté le 23-12-2009 à 22:21:14
bjone a écrit : Personnellement je ne mettrais même pas un membre affichage ou de traitement. |
tu vas trop loin avec cette class , ...
mais je crois que j'ai compris la logique , faut une seul Display()
, a la fin cet objet va etre afficher en 2D sur l'ecran , les autre dimensions
(1,3,4 ...) vont devenir 2D , alors les methods devient Compute3D , Compute4D
(ou Render3D Render4D mieux )
puis call Display() , [.... mais c'est quoi cette class ]
Marsh Posté le 22-12-2009 à 15:45:35
[C++] Question Architecture avec interface multiple
Bonjour,
j'ai une classe Objet qui possède comme donnée des coordonnées
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
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
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
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