UML / JAVA
14 et 21 mars 2006

Objectif du TD

Concevoir une application en utilisant UML. Utiliser un outil UML pour dessiner des diagrammes, explorer la pro et la rétro-ingénierie objet. On reprendra la thématique générale des tortues qui jouent au ballon, pour concevoir d'abord en mode esquisse le fonctionnement du système, et les responsabilités des classes, puis en mode plan, on se concentrera sur le codage (génération, puis roundtrip). Ce TD-TP est consacré à la conception OO avec UML, et non aux méthodes de conception type UP.

Le TP est à rendre pour le 11 avril.

Environnement

L'outil UML installé à l'UFR Informatique est Poseidon for UML Professionnal Edition. Le serveur de licence est b710ntb, et le port 6262. Une licence récupérée dure 2 jours, il est donc possible de la ramener chez soi pour 48 heures avec un portable. 

Poseidon s'intègre normalement comme plug in dans Eclipse (non testé). Il est toujours possible d'utiliser Poseidon et un IDE quelconque, du moment que Poseidon sait où se trouvent les fichiers.

On vous fournit les fichiers source de simple_logo (légèrement actualisés par rapport à ceux du TP1).

Déroulement

Application à construire

On souhaite mettre en place une application permettant à un utilisateur de faire jouer au ballon l'une contre l'autre deux équipes de tortues, jusqu'à la victoire de l'une d'entre elles. Ceci suppose de définir un critère de victoire (par exemple arriver avec le ballon dans une certaine zone du terrain).  Chaque équipe devra pouvoir utiliser au moins deux tactiques.  

Une tactique concerne la manière de faire réagir une équipe de tortues de façon globale : mouvements, passes, etc. Une tactique peut dépendre de la position des tortues sur le terrain, de leurs poste, de leurs positions respectives, de l'équipe adverses, etc

Le poste d'une tortue concerne sa manière de réagir quand elle a ou n'a pas la balle, en fonction de son placement sur le terrain, de la proximité des adversaires, etc. Il correspond à la réaction locale de la tortue. 

L'utilisateur devra au minimum pouvoir lancer et relancer un match, et changer la tactique d'une équipe en cours de jeu. 

Conception

Décrivez quelques scénarios en format abrégé (un paragraphe) permettant de décrire comment l'utilisateur interagit avec le système.

Commencez un diagramme de classes contenant les classes utiles de votre TP précédent (celles que vous allez a priori réutiliser : vous pouvez faire un peu de rétro-ingénierie ou de réorganisation - refactoring - des classes si besoin) ; ainsi que quelques classes potentiellement utiles pour le présent TP (analyse rapide du domaine du jeu de ballon : tactique, joueur, terrain, etc.). 

Organisez les classes dans au minimum deux packages de votre système (un pour la gestion de l'affichage, un pour la logique de votre application). 

Complétez votre conception pour réaliser des scénarios correspondant à des interactions différentes au cours du jeu, notamment avec des diagrammes de séquence. Faites évoluer les classes avec les besoins identifiés, en complétant petit à petit attributs et méthodes (jusqu'à ce que vous pensiez que vous pouvez passer au codage). Utilisez diagrammes d'activités et de machine d'états pour illustrer les différents fonctionnements : système, équipe, joueurs, etc

Remarques :

Génération du code et rétro-ingénierie

Une fois vos classes de conception à peu près stabilisées, générez le code correspondant à votre projet. Codez vos classes, améliorez la conception, testez, etc. Vous pouvez mettre en place une procédure de roundtrip engineering pour synchroniser en permanence code et modèle.

Rendu du travail

Un fichier zip contenant