Bonsoir codeur42,
Une pièce détermine un étage et un étage détermine un bâtiment, donc par transitivité une pièce détermine un bâtiment : ainsi l’association que vous avez établie entre BATIMENT et PIECE est redondante, inutile et doit disparaître.
Vous définissez une classe OCCUPANT dotée des attributs nom et prénom. Toutefois il est écrit :
« Pour chaque pièce il y a un nombre d'occupants prévu »
Autrement dit on peut penser que les bâtiments ne sont pas encore habités... Contentez-vous de définir un attribut NbOccupants (nombre d’occupants par pièce) pour la classe PIECE.
Selon votre DC, une pièce peut avoir plusieurs fenêtres : d’accord. En revanche vous avez modélisé la possibilité pour une fenêtre d’appartenir à plusieurs pièces : personnellement je me limiterai à l’appartenance à exactement une pièce...
Par ailleurs une fenêtre n’a rien de particulier, elle caractérise seulement une pièce, en conséquence il suffit de compter combien une pièce a de fenêtres, ce qui revient à se contenter de définir un attribut NbFenetres pour la classe PIECE plutôt que de prévoir une classe FENETRE.
Concernant les portes : comme les fenêtres, en faire une classe manque d’intérêt. Il est préférable d’utiliser l’association réflexive que j’ai représentée pour relier les pièces : l’association simule les portes. Toutefois, on peut aussi modéliser le fait que deux pièces ont plus d’une porte en commun :
Maintenant, ça me paraît luxueux, mais si vraiment vous y tenez, vous pouvez aussi définir une classe PORTE associée à la classe PIECE par une relation d’agrégation : les pièces communicantes ont en commun une ou plusieurs portes.
Partager