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écharger le fichier td2amazon.zip. et intégrer le à votre projet courant (cf TD précédent).

Vous voilà prêt à faire l'exercice. Générer le diagramme de classe de ce paquetage: click droit sur le paquetage / "Open UML" / "class diagram UML". Dans la nouvelle fenêtre cocher "Association", "Inheritance", "Dependency" et valider. Assurez vous que toutes les classes sont sélectionnées et valider.

  1. Avant de manipuler les classes, comparer les indicateurs de visibilité de la représentation UML (en fait celle d'eclipse UML) en ajoutant des champs public, privé etc. dans la classe "Cd" dans le code Java.
  2. A quoi correspondent les propriétés vu 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 ?
  3. Basculer maintenant en représentation UML classique. ("Window"/"preferences"/"UML"). Après avoir constaté les différences revener en représentation Eclipse.
  4. Maintenant, vous allez modifier le diagramme. Faire apparaître les relations d'héritage sur le diagramme: CD, DVD & Book héritent de Item.
  5. La prochaine étape va être de créer des associations. Modéliser le fait qu'un Kart ne puisse avoir qu'un client, qui ne doit pas forcémment être renseigné au départ.
    Regarder maintenant les apports à la classe Kart. Faites apparaître le champs Customer sur le diagramme Kart.
  6. Ajouter les associations suivantes avec les cardinalités appropriées en fonction des indications ci dessous :
    Un Kart peut avoir plusieurs Item. Ajouter une association en utilisant une ArrayList.
    Ajouter 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 Languages.
  7. Supprimer le diagramme et regénérer le. Expliquer 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 ! Commencer par télécharger le fichier td2war.zip. Importer-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.

  1. Organiser les classes pour que les unités effectuant 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.
  2. Modifier votre implantation pour qu'il soit impossible de transporter une unité étant elle même un transporteur.
  3. Faites en sortes 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éristique ne dépendront que des deux marines.
  4. Nous souhaitons maintenant ajouter un système de bonus qui permet de booster les fonctionnalités de feu, de vie et de vitesse des soldats.
    Sachant que l'on souhaite avoir des bonus qui ajoute de la puissance de feu, de la vite ou augmente 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.
  5. Enfin, faites en sorte que l'on puisse aussi appliquer le système de bonus aux transporteurs. A vos claviers !