© Éditions Eyrolles
55
chapitre n° 1
Le niveau conceptuel : face à face Merise/UML
Contrainte personnalisée avec OCL
Pour toute autre contrainte, OCL est utilisable dans une note. L’exemple 1-51 décrit la contrainte
qui exprime, à l’aide du langage OCL, que tout employé est soit :
●
chef, et dans ce cas il n’a pas de chef (condition isEmpty vérifiée) ;
●
sous la responsabilité d’un chef qui doit être employé dans la même entreprise que lui
(deuxième partie de la condition).
Figure 1-51 Contrainte UML 2 avec OCL
Toute contrainte prédéfinie par UML2 ou exprimée à l’aide du langage OCL sera à programmer
par la suite sous SQL soit par contrainte de vérification (CHECK), soit par déclencheur.
Affinage des associations n-aires
Il est recommandé d’affiner vos associations n-aires de façon à préciser la sémantique du
schéma et à améliorer l’intégrité de la base de données. Les concepteurs qui n’utilisent pas ces
concepts produisent en fait bien plus de programmation (qui pourrait être allégée par des clés
étrangères induites par l’adoption de techniques que nous allons présenter).
Pour préciser une association n-aire, vous pouvez soit :
●
utiliser une ou plusieurs contraintes d’unicité ;
●
utiliser une ou plusieurs contraintes d’inclusion ;
●
combiner ces deux types de contraintes.
Avec un formalisme de type entité-association, on utilise une CIF (ou une association d’agrégation). Sous UML, on peut recourir aux multiplicités et aux classes-associations. Dans les
exemples qui suivent, nous ne considérons que des associations 3-aires. Il est bien sûr possible
d’appliquer ce raisonnement à des associations de degré supérieur.
Employe
Entreprise
assistant *
*
0..1
{self.chef ->isEmpty() or
self.employeur=self.boss.employeur
}
technicien
employeur
chef
1
Précédent

- 63/316

Suivant