UML
septembre 2008

Objectif du TD

Apprendre à utiliser un certain nombre de diagrammes UML parmi les plus importants.

Environnement

Tableau, papier, crayon.

Exercices

1- Diagrammes de classes : modèle du domaine

(exercice extrait de [Roques, 2004], livre d'exercices reprenant des exercices de Valtech Training)

Cette étude concerne un système simplifié de réservation de vols pour une agence de voyages.

Les interviews des experts métier ont permis de résumer les connaissances du domaine sous la forme des phrases suivantes :

    1. Des compagnies aériennes proposent différents vols.
    2. Un vol est ouvert à la réservation et refermé sur ordre de la compagnie.
    3. Un client peut réserver un ou plusieurs vols.
    4. Une réservation concerne un seul vol et un seul passager.
    5. Une réservation peut être annulée ou confirmée.
    6. Un vol a un aéroport de départ et un aéroport d'arrivée.
    7. Un vol a un jour et une heure de départ, et un jour et une heure d'arrivée.
    8. Un vol peut comporter des escales dans des aéroports.
    9. Une escale a une heure d'arrivée et une heure de départ.
    10. Chaque aéroport dessert une ou plusieurs villes.

Modèle du domaine 

Construisez un modèle de classes du domaine en analysant les phrases précédentes. 

Structuration en package

Structurez le modèle de classes en packages en respectant les principes de cohérence et d'indépendance des packages.

Autre modèle du domaine

Imaginez un modèle de domaine adapté à la réservation de voyages en bus.

Factorisation et abstraction

Proposez une architecture de package qui permette de mettre en commun les similitudes entre modèles du domaine.

2- Diagrammes de classes : diagrammes de classes d'implémentation

On vous donne les classes d'implémentation suivantes en JAVA : code-td-uml.pdf

1- Construisez le diagramme de classe/ package correspondant à ces différentes classes.

2- Quelles différences remarquez-vous entre ce diagramme et le modèle du domaine ?

3- Liens diagramme de classes / code 

Soient deux classes en relation d'association : 

Pour chacun des cas, réflechissez à la manière de coder les classes en JAVA, notamment en termes d'attribution de responsabilité pour la création, les modifications. Vous pourrez vous aider de quelques diagrammes de séquences pour expliquer les choses.