1. Tous les avions assurent plusieurs vols. Il est donc utile de remonter l’association « assurer vol » au niveau des classes Avion et Vol. Cependant, si vous n’utilisez pas les contraintes et si la contrainte spécifiant qu’un avion-cargo (respectivement de passagers) assure exclusivement des vols cargos (respectivement de passagers) alors la seule solution consiste, non pas à remonter l’association entre Avion et Vol, mais à la préciser entre tous les types de vols et d’avions (figure 2.71).
2. L’ajout des contraintes du langage OCL permet une meilleure généralisation à travers l’expression de cas particuliers et d’exceptions. Vous pouvez remonter l’association entre un avion et un vol au niveau des classes Vol et Avion et ajouter une contrainte qui restreint l’impact de l’association sur les instances des classes (figure 2.71).
3. Le rôle de la compagnie aérienne par rapport à un vol est celui d’affréteur. L’affréteur qui ouvre un vol est aussi celui qui le ferme. De plus, un vol ne peut être ouvert puis fermé qu’une seule fois. UML ne fournit pas un moyen d’exprimer cette double synchronisation. De ce fait, une note est ajoutée au diagramme pour exprimer cette contrainte. Les caractéristiques d’un vol (dates et lieux) ne sont pas détaillées et seront représentées par de simples attributs.
4. L’association qui lie le client et la compagnie aérienne concerne la réservation. La réservation naît de cette association et se compose de toutes les données la concernant. Il s’agit donc d’une classe-association. La réservation concerne un passager et un vol.
Dans la modélisation précédente, les lieux de départ et d’arrivée ne sont pas détaillés (représentation sous forme d’attributs). Cette fois, le lieu est connu : il s’agit de l’aéroport. Les deux attributs modélisant le lieu se transforment en rôle dans les associations reliant le vol et l’aéroport Une escale se caractérise par des dates et un aéroport. Elle est décrite par les attributs de la classe Vol mais pas par ses méthodes (ouvrir(), fermer()…). Ce n’est donc pas un vol particulier. Un vol peut compter plusieurs escales ordonnées. Chaque escale est liée à un aéroport. L’escale naît d’une relation entre un vol et un aéroport, qui n’est ni un aéroport de départ, ni un aéroport d’arrivée. Les escales sont représentées par une classe-association entre un vol et un aéroport.