problème de conception : cycle
J'ai un diagramme de 3 classes :
A aggrège des objets B et des objets C
B aggrège des objets A
aggrègation != composition,
mais on m'a dit que le diagramme présente un cycle et que ça pose un problème.
Or si on y réflechit, le pattern composite(par exemple) devrait aussi présenter un cycle.
ClasseC
|
<>
|--<>ClasseA-------|
|-----ClasseB <>---|
Xavier
Mais c'est peu près ça mon sujet
En gros, la structure de donnée(celle de l'arbre) a été fixée.
Je n'ai pas le droit d'en changer.
Je précise :
quand on veut implémenter une liste chainée simple, on doit écrire par exemple une classe Cellule.
Dans mon exemple les différentes classes je les nomme A, B , et C comme j'ai du nommer la classe Cellule.
L'arbre représente une entrée à donner à une application de simulation.
Cette entrée possède les données sur une ou plusieurs populations ainsi que des données globales (des paramètres en plus ou des infos complémentaires).
Cet arbre est stocké dans un fichier XML que l'on doit envoyer à l'application de simulation.
Je répète que l'arbre et les règles de structuation sont fixées.
Un exemple concret très simple d'arbre pourrait être
.........................A....................... ici A = Entrée
......................../.|.\....................
......................C..B..B................. C=date B= population1 B=population2
......................../.|.\...\...............
......................A..A..A..A............. A = individus
...................../|\..|...|...|\...........
..................C.C.C.C..C..C.C....... C=les attributs des individus
les attributs des individus peuvent être une opinion une incertitude, etc ... et c'est pour cela que l'on peut les représenter par des objets C (qui sont les éléments les plus élémentaires de la structure et en même temps évidemment les feuilles de l'arbre.)
Le problème d'un pattern composite, c'est qu'il ne permettrait pas de distinguer les types d'objets A et B qui n'ont rien à voir :
=> L'objet A est un objet complexe qui possède une liste d'objets B et une liste d'objets C.
=> L'objet B est une liste d'objet A.
Ces 2 objets (A et B) sont donc différents par leur méthodes et leurs attributs.
Donc (selon moi) il ne convient pas du tout d'utiliser le pattern composite qui ne se serait appliqué que si les objets A et B pouvait hériter d'une classe commune (i.e avoir suffisamment de point commun).
Disons que le Design Pattern ne permettrait pas de faire un arbre avec 2 étages:
un étage (dans l'exemple niveau 1 et 3) ou il n'y a que des objets A
un étage (dans l'exemple niveau 2 et 4) ou il n'y a que des objets B et C
Pour comprendre il est peut être nécessaire de relire le tout.
Je suis désolé si je ne suis pas très clair. Je sais que vu de l'extérieur c'est pas forcément évident. :)