Cours n°3 UML
Ce document porte sur UML (Unified Modeling Language) et présente un cours détaillé accompagné d'exemples pratiques. Il s'agit d'un support pédagogique visant à tester la compréhension des concepts fondamentaux de la modélisation orientée objet, notamment les diagrammes de classes, les associations, l'héritage, les classes associatives, ainsi que la modélisation d'un cas concret : la réservation d
D'après le document Cours n°3 UML
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.
Document source
Programming, Math, etc. · PDF · 64 pages · 1992
Afficher l'aperçu du document
Ce document porte sur UML (Unified Modeling Language) et présente un cours détaillé accompagné d'exemples pratiques. Il s'agit d'un support pédagogique visant à tester la compréhension des concepts fondamentaux de la modélisation orientée objet, notamment les diagrammes de classes, les associations, l'héritage, les classes associatives, ainsi que la modélisation d'un cas concret : la réservation de vols dans une agence de voyage. Les compétences évaluées concernent la capacité à analyser un énoncé métier, à identifier les classes et leurs relations, à modéliser correctement les cardinalités, les rôles, les opérations, et à structurer un diagramme de classes complet et cohérent.
Exercice : Modélisation UML de la réservation de vols dans une agence de voyage
Il s'agit de modéliser en diagramme de classes les différentes phrases décrivant le fonctionnement d'une agence de voyage proposant des vols, des réservations, des passagers, etc. Nous allons analyser chaque phrase, identifier les classes, attributs, associations, cardinalités et opérations, puis construire progressivement le modèle complet.
Phrase 1 : Des compagnies aériennes proposent différents vols
On identifie deux classes métier : CompagnieAerienne et Vol.
- Une compagnie aérienne propose plusieurs vols (1..*).
- Un vol est réalisé par une seule compagnie mais peut être partagé par plusieurs affréteurs (1..*).
On modélise donc une association entre CompagnieAerienne et Vol avec les cardinalités :
CompagnieAerienne1 --- 1..*Vol
Réponse : Deux classes CompagnieAerienne et Vol reliées par une association "Propose" avec cardinalité 1..* du côté des vols.
Phrase 2 : Un vol est ouvert à la réservation et fermé sur ordre de la compagnie
Un vol peut être dans un état "ouvert" ou "fermé". Dans UML, les états sont modélisés dans un diagramme d’états, mais ici, on traduit ce comportement par des opérations dans la classe concernée.
- Les opérations
ouvrirVol()etfermerVol()sont ajoutées dans la classeVol. - La responsabilité de ces opérations revient à la classe
Vol, qui est associée àCompagnieAerienne.
Réponse : La classe Vol possède les opérations ouvrirVol() et fermerVol() pour gérer son état.
Phrase 7 : Un vol a un jour et une heure de départ et un jour et une heure d’arrivée
Les dates et heures sont des valeurs simples, donc elles sont modélisées comme attributs dans la classe Vol :
dateDepart: dateheureDepart: heuredateArrivee: dateheureArrivee: heure
Réponse : Ces quatre attributs sont ajoutés à la classe Vol.
Phrase 6 : Un vol a un aéroport de départ et un aéroport d’arrivée
Trois modélisations sont envisagées :
- Une classe
Aéroportavec une association double àVol(peu parlante). - Deux classes distinctes
AeroportDepartetAeroportArrivee(non correcte car un aéroport peut être à la fois départ et arrivée). - Deux associations distinctes entre
VoletAéroportavec des rôles précis :départetarrivée.
La meilleure modélisation est la troisième, qui utilise deux associations entre Vol et Aéroport :
Vol---départ---Aéroport(cardinalité 1)Vol---arrivée---Aéroport(cardinalité 1)
Réponse : Deux associations distinctes avec rôles départ et arrivée entre Vol et Aéroport, chacune avec cardinalité 1 du côté Aéroport.
Phrase 10 : Chaque aéroport dessert une ou plusieurs villes
La multiplicité côté Aéroport est inconnue. Deux hypothèses :
- Si "desservir une ville" signifie un seul aéroport proche, alors la cardinalité côté
Aéroportest 1. - Si "desservir une ville" signifie plusieurs aéroports dans un rayon, alors la cardinalité est 0..*.
La cardinalité côté Ville est 1..* car une ville est desservie par au moins un aéroport.
Réponse : Association Aéroport dessert Ville avec cardinalité 0..* ou 1 (selon interprétation) côté Aéroport et 1..* côté Ville.
Phrase 8 et 9 : Un vol peut comporter des escales dans des aéroports ; une escale a une heure d’arrivée et une heure de départ
L'escale a des attributs propres (heure d’arrivée, heure de départ), donc c’est un objet à part entière. Elle représente une étape dans un vol.
- Une escale est une association entre
VoletAéroport. - Les cardinalités sont :
Vol---Escale: 0..*Escale---Aéroport: 1- Une escale appartient à un seul vol et correspond à un seul aéroport.
On modélise Escale comme une classe d’association entre Vol et Aéroport avec les attributs heureArrivee et heureDepart.
Réponse : Classe d’association Escale entre Vol (0..*) et Aéroport (1) avec attributs heureArrivee et heureDepart.
Phrase 4 et 5 : Une réservation concerne un seul vol et un seul passager ; une réservation peut être annulée ou confirmée
On identifie trois classes : Réservation, Vol, et Passager.
- Une réservation est liée à un seul vol (cardinalité 1).
- Une réservation est liée à un seul passager (cardinalité 1).
- La classe
Réservationpossède les opérationsannuler()etconfirmer().
Réponse : Deux associations : Réservation - Vol (1..1) et Réservation - Passager (1..1), avec opérations annuler() et confirmer() dans Réservation.
Phrase 3 : Un client peut réserver un ou plusieurs vols pour des passagers différents
Il faut distinguer Client et Passager.
- Un client peut effectuer plusieurs réservations (0..*).
- Une réservation concerne un seul passager (1).
On modélise une association entre Client et Réservation :
Client1 --- 0..*Réservation
Réponse : Association entre Client et Réservation avec cardinalité 1 côté client et 0..* côté réservation.
Diagramme de classes complet
Le diagramme final rassemble toutes les classes et associations précédentes :
- Client : nom, prénom, adresse, téléphone, e-mail
- Réservation : date, numéro, opérations
annuler(),confirmer() - Passager : nom, prénom
- CompagnieAerienne : nom
- Vol : dateDepart, heureDepart, dateArrivee, heureArrivee, opérations
ouvrirVol(),fermerVol() - Aéroport : nom
- Ville : nom
- Escale (classe d’association) : heureArrivee, heureDepart
Associations :
Client1 --- 0..*RéservationRéservation1 --- 1VolRéservation1 --- 1PassagerCompagnieAerienne1 --- 1..*Vol("Propose")Vol---Aéroport(rôledépart, cardinalité 1)Vol---Aéroport(rôlearrivée, cardinalité 1)Aéroport---Ville(cardinalité 0..* ou 1 côté Aéroport, 1..* côté Ville)Vol0..* --- 1Escale--- 1Aéroport
Réponse : Le diagramme de classes complet intègre toutes ces classes, attributs, opérations et associations avec leurs cardinalités et rôles respectifs.
Méthode : techniques récompensées et erreurs sanctionnées
Ce travail valorise une démarche rigoureuse et progressive :
- Identification claire des classes métier à partir de l’énoncé, en distinguant bien les concepts (ex : client vs passager).
- Définition précise des associations avec les rôles et cardinalités adaptées, en respectant la sémantique métier.
- Utilisation correcte des classes d’association pour modéliser des relations avec attributs propres (ex : Escale).
- Placement judicieux des opérations dans les classes responsables (ex : ouvrirVol() dans Vol).
- Respect des conventions UML pour la notation des rôles, cardinalités, et opérations.
- Attention portée à la distinction entre attributs et objets selon la complexité et la pertinence métier.
Les erreurs à éviter sont :
- Confondre les rôles ou les classes (ex : ne pas distinguer client et passager).
- Omettre les cardinalités ou les mal interpréter, ce qui fausse la compréhension des relations.
- Modéliser des concepts dynamiques uniquement comme attributs sans opérations ou classes dédiées.
- Ne pas représenter les classes d’association quand elles sont nécessaires, ce qui empêche d’ajouter des attributs à une relation.
- Créer des classes redondantes ou mal nommées qui compliquent inutilement le modèle.
En résumé, ce type d’exercice récompense la capacité à traduire fidèlement un énoncé métier en un modèle UML cohérent, clair et complet, tout en respectant les règles et bonnes pratiques de la modélisation orientée objet.
Commentaires
Aucun commentaire pour le moment. Posez la première question.