Bonjour,
Il y a une question qui me revient souvent quand je m'essaye a concevoir des classes. j'aurais du mal a l'exprimer avec des mots donc je préfère faire une démonstration par l'exemple :
Imaginons que je veuille développer une application qui permette de faire un MCD façon Power-Designer ou autre, peu importe car le probleme porte sur la modélisation des éléments graphiques.
Dans ce genre de logiciel, je sais que mon programme devra savoir afficher a l'écran des petites boites de couleurs ( les entités / associations etc )
Je déduis donc que je vais avoir besoin de classes qui seront toutes déssinables et qui de ce fait possèderont ce genre de propriétés ( entre autres ) : x, y, largeur, hauteur, couleur. Mettons que je nomme cette classe : TPaintable ( en delphi-like ).
Je pourrais dériver a loisir cette classe pour obtenir des rectangles des cercles des traits etc....
A l'étape suivante, je voudrais créer une classe TEntité qui hérite de TPaintable ET qui seront pour porteuses d'informations propres au MCD (identifiant, propriétés, cardinalités etc).
C'est ce dernier aspect qui me pose probleme.
En effet jusque ici ma classe ne contenait que des champs qui ont trait a sa représentation graphique. Maintenant je devrais y ajouter des champs qui sont du domaine du MCD. Du coup ça me gène beaucoup de mélanger ces deux niveaux dans une même classe : qui ressemblerais a ça :
Questions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6type TEntité = class { x, y, width, height : integer; nomEntite: string; propriétés: array of TPropriétés. }
1 - Ai-je raison d'être géné ?
2 - Comment appréhender cette distinction et sous quelle forme l'implémenter ?
jusque là on m'a toujours dit "va voir dans les design pattern, il y a tout ce qu'il faut". j'y ai été, mais n'étant pas familier de la chose, je dois dire que je ne comprends pas comment l'appliquer. Pouvez-vous me dire comment vous le feriez dans le cas de ce projet de modelisation MCD ?





Répondre avec citation







Partager