UML 2 pour les bases de données
48
© Éditions Eyrolles
Language). La programmation suivante, disposée dans une note et rattachée à la classe
Pilote serait une alternative à l’expression {xor}. Notez l’utilisation des rôles pour appliquer les fonctions d’existence : isEmpty() qui retourne vrai si l’ensemble est vide et son
inverse notEmpty().
inv:
((detachement->isEmpty() and operation->notEmpty()) or
(detachement->notEmpty() and operation->isEmpty()))
Contrainte d’exclusivité
Selon la contrainte d’exclusivité, toutes les occurrences d’une entité (ou classe) peuvent participer à l’une des deux associations, mais pas aux deux à la fois.
Un pilote peut être au repos (il n’est affecté à aucune mission). Si un pilote est affecté à un
exercice d’entraînement, alors il ne peut pas être affecté à une mission sanitaire et réciproquement.
Merise/2
Il faut remplacer la lettre P par la lettre X dans le schéma 1-37.
Notation UML
L’exemple 1-41 décrit la note qu’il faudrait programmer à l’aide du langage OCL (d’autres
possibilités de programmation existent).
Figure 1-41 Contrainte d’exclusivité avec UML
Pilote
numPil
nom
grade
Entrainement
codent
date_ent
region
Sanitaire
codesan
organisme
1..*
operation
0..1
detachement
1..*
0..1
inv:
((detachement->isEmpty() and operation->notEmpty()) or
(detachement->notEmpty() and operation->isEmpty()) or
(detachement->isEmpty() and operation->isEmpty()))
Précédent

- 56/316

Suivant