UML : Diagrammes statiques

Objectif du TD

Concevoir un modèle du domaine avec un diagramme de classes, construire un diagramme de classes d'implémentation, réfléchir aux liens association UML / code.

Environnement

Papier + crayon

Déroulement

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, correspondant au code suivant : code-td-uml.zip

3- Liens diagramme de classes / code 

On considére les associations suivantes entre classes.

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.