:: Enseignements :: Master :: M1 :: 2008-2009 :: Programmation Orientée Objet ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Association, Composite, Decorator |
Exercice 1 - Représentation UML
Le but de cet exercice est de modéliser un système d'achat en ligne de type
Amazon réalisé avec J2EE.
Tout d'abord, téléchargez le fichier
td1amazon.zip.
et intégrez-le à votre projet courant.
Générez le diagramme de classes de ce paquetage:
clic droit sur le paquetage -> "Open UML" -> "class diagram UML".
Dans la nouvelle fenêtre cochez "Association", "Inheritance", "Dependency" et validez.
Assurez-vous que toutes les classes sont sélectionnées et validez.
-
Avant de manipuler les classes, comparez les indicateurs de visibilité
de la représentation UML (en fait celle d'Eclipse UML)
en ajoutant dans le code de la classe Cd des champs public, privé, etc...
-
À quoi correspondent les propriétés vues dans la représentation UML
des classes Author, Editor, Customer en Java ?
Comment faire pour que le plugin UML Omondo génère l'un plutôt que l'autre ?
-
Basculez maintenant en représentation UML classique. ("Window" -> "Preferences" -> "UML").
Après avoir constaté les différences, revenez en représentation Eclipse.
-
Maintenant, vous allez modifier le diagramme.
Faites apparaître les relations d'héritage sur le diagramme: Cd, Dvd et Book héritent de Item.
-
La prochaine étape va être de créer des associations.
Modélisez le fait qu'un Kart ne puisse avoir qu'un client,
qui ne doit pas forcément être renseigné au départ.
Regardez maintenant les apports à la classe Kart. Faites apparaître le champ Customer sur le diagramme Kart.
-
Ajoutez les associations suivantes avec les cardinalités appropriées en fonction des indications ci-dessous :
-
Un Kart peut avoir plusieurs Item.
Ajoutez une association en utilisant une ArrayList.
-
Ajoutez une classe abstraite Product commune à Cd, Dvd et Book.
Est-il plus facile de faire ce genre de transformation avec le plugin Omondo
ou dans Eclipse en Java ?
- Un
Product doit avoir un Editor. Un
Editor peut avoir plusieurs Product.
-
Un Book doit avoir un ou plusieurs Author. Un Author peut avoir écrit plusieurs Book.
-
Un Book peut avoir une BookCover.
-
Un Dvd possède plusieurs Language.
-
Supprimez le diagramme et regénérez-le. Expliquez pourquoi le diagramme n'a pas
le même état qu'au début du TD.
Exercice 2 - Composite et Decorator
Vous regrettez l'époque où vous aviez le temps de
jouer à Command&Conquer? Voici l'occasion de créer
votre version du jeu! Commencez par télécharger le
fichier
td1war.zip. Importez-le dans le répertoire source de
votre projet courant dans Eclipse.
Le but de cet exercice est de modéliser des unités
militaires. Certaines unités (AircraftCarrier, ArmyTruck, Helicopter et Destroyer)
peuvent jouer un rôle de transport de troupe et contenir d'autres unités.
Dans le paquetage fr.umlv.gl.td2.war se trouvent toutes sortes
d'unités militaires sous forme de classes.
-
Organisez les classes pour que les unités effectuent du transport
de troupe, en utilisant le design pattern Composite. Les transporteurs
devront donc posséder des méthodes permettant d'ajouter ou de retirer
d'autres unités et de visualiser la liste des unités.
-
Modifier votre implantation pour qu'il soit impossible de
transporter une unité étant elle-même un transporteur.
-
Faites en sorte que la puissance de feu, la vie
et la vitesse d'un transporteur soit la somme
des caractéristiques des unités de même armes qu'il transporte.
Par exemple si un destroyer transporte un soldat et deux marines,
ses caractéristiques ne dépendront que des deux marines.
-
Nous allons maintenant ajouter un système de bonus qui
permet de booster les fonctionnalités de feu, de vie
et de vitesse des soldats.
On souhaite avoir des bonus qui ajoutent
de la puissance de feu, de la vie ou augmentent la vitesse
ainsi que des bonus multipliant par un facteur
l'ensemble des caractéristiques d'un soldat.
Proposer une solution d'implantation en utilisant
le design pattern Decorator.
-
À vos claviers !
Enfin, faites en sorte que l'on puisse aussi appliquer
le système de bonus aux transporteurs.
© Université de Marne-la-Vallée