Académique Documents
Professionnel Documents
Culture Documents
Exercice No 1 (6 points)
Soit le diagramme de classe suivant.
Questions:
context Student
inv: Student.allInstances()->forAll(b1, b2 | b1 <> b2 implies
b1.matNr <> b2.matNr)
Solution :
context Person
inv : self.supervisor.grade.value > self.grade.value
Exercice No 2 (5 points)
a) Cet exemple concerne la définition d'un livre.
Un livre est composé d'un nombre de parties, qui sont à leur tour composées d'un
certain nombre de chapitres. Les chapitres sont constitués de sections.
Solution :
b) Tous les jours, le facteur distribue des recommandés dans uns zone géographique
qui lui est affectée. Les habitants sont aussi associés à une zone géographique. Les
recommandés sont de deux sortes : lettres ou colis. Comme plusieurs facteurs peuvent
intervenir sur la même zone, on souhaite, pour chaque recommandé, le facteur qui l’a
distribué, en plus du destinataire.
Solution :
Exercice No 3 (5 points)
Soit le diagramme de classe suivant:
Question:
Donner des expressions OCL modélisant les contraintes suivantes :
ou
context Book
inv: Book.allInstances()->forAll(b1, b2 | b1.idNumber = b2.idNumber implies
b1 = b2)
ou
context Book
inv: Book.allInstances()->forAll(b | b <> self implies
Remarque: AllInstances( ) est une opération qui retourne un ensemble contenant toutes les
instances existantes de la collection actuelle (avec les instances de toutes ses collections héritées)