1 / 23

Modélisation en UML : Diagramme des classes

Modélisation en UML : Diagramme des classes. Soit le cas  ’’Réservation de vols dans une agence de voyage’’ 1° Des compagnies aériennes proposent différents vols. 2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie.

joella
Download Presentation

Modélisation en UML : Diagramme des classes

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Modélisation en UML : Diagramme des classes Soit le cas ’’Réservation de vols dans une agence de voyage’’ 1° Des compagnies aériennes proposent différents vols. 2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie. 3° Un client peut réserver un ou plusieurs vols, pour des passagers différents. 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

  2. Propose 1..* CompagnieAerinne Vol CompagnieAerinne Vol Propose 1..* 1..* affréteur • Modélisation de la phrase : • 1° Des compagnies aériennes proposent différents vols. CompagnieAerienne et Vols sont 2 objets métiers : 2 classes • Un vol est réalisé par une seule compagnie mais partagé par plusieurs affréteurs

  3. CompagnieAerinne Vol CompagnieAerinne Propose 1..* 1..* état (ouvert, fermé) affréteur Propose Vol 1..* 1..* affréteur ouvrirVol( ) fermerVol( ) • Modélisation de la phrase : • 2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie. • Tout objet peut avoir un état (diagramme d’états). • Dans un diagramme de classes tout concept dynamique est modélisé en opération. • Il faut représenter la 2° phrase par 2 opérations : ouvrirReservation( ) et fermerReservation( ) • Dans quelle classe ? Responsabilité d’une classe • Les opérations sont déclarées dans l’objet dans lequel elles doivent s’exécuter • Les autres pourront déclencher ces opérations par envoi de messages • Le classe CompagnieAerienne a une association avec la classe vol.

  4. CompagnieAerinne Propose 1..* 1..* affréteur Vol dateDepart heureDepart dateArrivee heureArrivee ouvrirVol( ) fermerVol( ) • Modélisation des phrases : • 7° Un vol a un jour et une heure de départ et un jour et une heure d’arrivée. • Les dates et les heures de départ et d’arrivée ne représentent que des valeurs : attributs. • Pour savoir si un élément doit être représenté en attribut ou en objet : • S’il n’ y a que sa valeur qui est intéressante : c’est plutôt un attribut. • Si plusieurs questions peuvent concerner l’élément, alors il faut le représenter en objet.

  5. Vol dateDepart heureDepart dateArrivee heureArrivee aeroportDepart aeroportArivvee Aéroport 2 nom { ordered} ouvrirVol( ) fermerVol( ) • Modélisation des phrases : • 6° Un vol a un aéroport de départ et un aéroport d’arrivée. • Par quoi peut-on représenter l’élément ‘’Aéroport’’ ? 3 réponses sont envisageables : Soit avec une classe et une association de multiplicité 2 Modélisation peu parlante.

  6. AeroportDepart AeroportArrivee Vols dateDepart heureDepart dateArrivee heureArrivee aeroportDepartr aeroportArivvee 1 Aéroport nom 1 ouvrirReservation( ) fermerReservation( ) • Modélisation des phrases : • 6° Un vol a un aéroport de départ et un aéroport d’arrivée. 2. Soit avec 2 classes Modélisation non correcte. Tout aéroport peut être de départ et d’arrivée.

  7. Vol dateDepart heureDepart dateArrivee heureArrivee Départ 1 Aéroport Nom … Arrivée 1 ouvrirVol( ) fermerVol( ) • Modélisation des phrases : • 6° Un vol a un aéroport de départ et un aéroport d’arrivée. 2. Soit avec 2 associations Le rôle de chaque association précise son sens.

  8. Aéroport dessert Ville 1..* • Modélisation des phrases : • 10° Chaque aéroport dessert une ou plusieurs villes • On ne peut pas savoir la multiplicité de ‘’Aéroport’’ 0..* • Si on considère que desservir une ville signifie l’aéroport le plus proche, il n’ en y a qu’un : la multiplicité est de 1 • Si on considère que desservir une ville signifie les aéroports dans un rayon de 35 km : la multiplicité est de 0..*

  9. 0..* Vol 0..* dateDepart heureDepart dateArrivee heureArrivee Depart 1 1..* Aéroport 1 nom 0..* 0..* Arrivee ouvrirVol( ) fermerVol( ) 1 Escale heureArrivee heureDepart • Modélisation des phrases : • 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. • Une escale a les propriétés heure d’arrivée et heure de départ, c’est donc un objet. • Quelles sont alors les multiplicités entre ‘’Vols’’ et ‘’Escale’’, entre ‘’Escale’’ et ‘’Aeroport’’ et entre ‘’Aeroport’’ et ’Vols’’ ?

  10. Vol dateDepart heureDepart dateArrivee heureArrivee ouvrirVol( ) fermerVol( ) Départ Aéroport 0..* 1 nom Arrivée 0..* 1 Escale 0..* 0..* {Ordered} Escale heureArrivee heureDepart • Modélisation des phrases : • 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. • ‘’Escale’’ a peu d’informations propres. Elle n’est qu’une partie de ’’Vol’’ . • On peut la représenter comme une spécialisation de ’’Aéroport’’ . Mais elle n’est pas totalement un aéroport. • La meilleure solution serait de la modéliser comme une classe d’association entre et ’Vols’’ et ‘’Aéroport’’.

  11. Réservation Vol concerne dateDepart heureDepart dateArrivee heureArrivee Annuler( ) Confirmer( ) 1 ouvrirVol( ) fermerVol( ) concerne 1 Passager • Modélisation des phrases : • 4° Une réservation concerne un seul vol, et un seul passager. • 5° Une réservation peut être annulée ou confirmée. • La réservation et le passager sont 2 concepts métier : 2 classes d’objets • Un réservation concerne un seul vol et un seul passager: donc 2 associations entre ‘’Vol’’ et ’’Réservation’’ et entre ’’Réservation’’ et ‘’Passager’’. • La 5° phrase se traduit par l’ajout de 2 opérations annuler( ) et confirmer( ) dans ‘’Reservation’’.

  12. 1 a effectué 0..* Réservation concerne Vol 0..* 1 0..* concerne Annuler( ) Confirmer( ) 1 Passager Client • Modélisation des phrases : • 3° Un client peut réserver un ou plusieurs vols, pour des passagers différents. • Il faut discerner un client d’un passager

  13. Client nom Prénom adresse téléphone e-mail nom 1..* Propose 1..* CompagnieAerinne départ Réservation Vol 0..* 1 Ville concerne date numéro arrivée dateDepart heureDepart dateArrivee heureArrivee 0..* 1 0..* 1 Annuler( ) Confirmer( ) escale 0..* 0..* 0..* concerne {ordered} 1 Passager nom nom Prénom ouvrirVol( ) fermerVol( ) Aéroport nom 1 a effectué 0..* InfosEscale heureArrivee heureDepart • Le diagramme des classe complet est :

  14. Client nom nom Prénom adresse tél e-mail numéro {reservation.date <= vol.dateDepart} 1..* {frozen} Propose 0..1 CompagnieAerinne départ Réservation Vol 0..* 1 Ville concerne date numéro arrivée dateDepart heureDepart dateArrivee heureArrivee 0..* 1 0..* 1 Annuler( ) Confirmer( ) {frozen} escale 0..* 0..* {ordered} Passager nom nom Prénom ouvrirVol( ) fermerVol( ) Aéroport nom 0..* concerne 1 a effectué 1 0..* • Diagramme des classe complet et annoté InfosEscale heureArrivee heureDepart

  15. Client nom nom Prénom adresse téléphone e-mail 1..* Affréteur numéro 1 Propose {frozen} propose 0..1 ‘’ métaclasse ‘’ VolGenerique CompagnieAérienne départ jour heureDépart heureArrivée /durée périodevalidité {reservation.date <= vol.dateDepart} Réservation 0..* 1 0..* concerne arrivée Ville date numéro 0..* 1 0..* 1 Annuler( ) Confirmer( ) {frozen} escale ouvrirVol( ) fermerVol( ) 0..* 0..* Vol 0..* {ordered} dateDépart dateArrivée concerne {AddOnly} 0..* {frozen} 1 1 ouvrirVol( ) fermerVol( ) décrit Passager nom nom Prénom Aéroport nom 1 a effectué 0..* InfosEscale heureArrivée heureDépart • Le diagramme des classe complet devient :

  16. nom Client nom Prénom adresse tééphonel e-mail 1..* numéro Affréteur 1..* Propose {frozen} propose CompagnieAerinne 0..1 ‘’ metaclasse ‘’ VolGenerique départ {reservation.date <= vol.dateDepart} Ville jour heureDepart heureArrivee /durée periodevalidite Réservation 0..* 1 0..* concerne arrivée date numero 0..* 1 0..* 1 Annuler( ) Confirmer( ) {frozen} escale ouvrirVol( ) fermerVol( ) Vol dateDepart dateArrivee 0..* 0..* 0..* {ordered} concerne {AddOnly} 0..* {frozen} 1 ouvrirVol( ) fermerVol( ) 1 décrit Passager nom nom Prénom Aéroport nom 1 a effectué 0..* InfosEscale heureArrivee heureDepart • Le diagramme des classes peut être réorganisé en packages

  17. Vol Réservations concerne 0..* 1 {frozen} Réservation date numéro Annuler( ) Confirmer( ) Vol dateDepart dateArrivee ouvrirVol( ) fermerVol( ) • Réduirela dépendance mutuelle afin d’augmenter la modularité et l’évolutivité d’une application

  18. Réservations Vol Client nom nom Prénom adresse téléphone e-mail 1..* Affréteur numéro 1 Propose {frozen} propose 0..1 CompagnieAerinne ‘’ metaclasse ‘’ VolGenerique départ jour heureDepart heureArrivee /durée periodevalidite Réservation 0..* 1 0..* concerne Ville arrivée date numéro 1 0..* 1 0..* Annuler( ) Confirmer( ) {frozen} escale ouvrirVol( ) fermerVol( ) 0..* 0..* Vol 0..* dateDepart dateArrivee {ordered} concerne {AddOnly} 0..* {frozen} 1 1 ouvrirVol( ) fermerVol( ) decrit nom Passager nom Prénom Aéroport nom 1 a effectué 0..* InfosEscale heureArrivee heureDepart

  19. ReservationsBus VoyagesBus ReservationBus VoyageEnBus date numéro dateDepart dateArrivee concerne Annuler( ) Confirmer( ) 0..* 1 OuvrirVoyage( ) fermerVoyage( ) {frozen} Généralisation et réutilisation • On veut élargir ce domaine aux voyages par bus que des transporteurs assurent. • Un voyage en bus à une ville de départ et un ville d’arrivée avec des dates et des heures associées. • Un trajet peut comporter des arrêts dans des villes intermédiaires. • Un client peut réserver un ou plusieurs voyages pour un ou plusieurs passagers

  20. ReservationsBus VoyagesBus Client nom Prénom adresse téléphone e-mail Voyagiste ReservationBus date numéro Ville nom Annuler( ) Confirmer( ) 0..* concerne 1..* Passager nom Prénom 1 a effectué 0..* InfosArret heureArrivee heureDepart nom référence 1 Propose {frozen} 0..1 départ VoyageEnBus dateDepart heureDepart dateArrivee heureArrivee /durée concerne 0..* 1 arrivée {frozen} 0..* 1 arrêt ouvrirVoyage( ) fermerVoyage( ) 0..* 0..* {ordered}

  21. Vols ReservationVols Lieux AVION BUS ReservationBus VoyagesBus Fusion des 2 modèles Il faut isoler les classes communes dans des packages Il faut factoriser les propriétés communes 

  22. Réservations Client nom Prénom adresse tél e-mail concerne a effectué 0..* 1 1 0..* {frozen} Réservation date numéro Annuler( ) Confirmer( ) ReservationBus (from ReservationsBus) ReservationVol (from ReservationsVols) concerne concerne 1 VoyageEnBus (from VoyagesBus) Vol (from Vols) {frozen} 1 {frozen} Passager nom Prénom  Il faut isoler les classes communes dans des packages Classe abstraite

  23. Package généralisé Packages spécialisés Vols VoyagesBus Lieux ReservationsBus Réservations ReservationsVols Package réutilisable

More Related