Complément Chapitre2
Niveau: II3 ILSI Enseignante: Rim DRIRA [email protected] Bureau 215
AU: 2014/2015
Exercices OCL
2
16/10/2014
1
Exercice1
(cid:1) Ajoutez un attribut mère de type Personne
dans la classe Personne.
(cid:1) Ecrivez une contrainte précisant que la mère d'une personne ne peut être cette personne elle-même et que l'âge de la mère doit être supérieur à celui de la personne
Solution:
context Personne inv:
self.mere <> self and self.mere.age > self.age
3
4
R.DRIRA ENSI-II3 ILSI Chapitre2: Principes et standards de MDA 2014-2015
Exercice2
(cid:1) Indiquez qu’une personne mariée est forcément majeur
(cid:1) Solution: context Personne inv: marié implies majeur
(cid:1) Trouvez une version plus compacte de l’expression suivante
context Personne inv : if age >=18 then majeur=vrai else majeur=faux endif (cid:1) Solution: context Personne inv: majeur = age >= 18
R.DRIRA ENSI-II3 ILSI Chapitre2: Principes et standards de MDA 2014-2015
16/10/2014
2
Exercice3
(cid:1) Les deux contraintes suivantes sont-elles équivalentes ?
(cid:1) Contexte C1 inv: c2->forAll(c:C2| c.c3->notEmpty() implies c.attr2=c.c3.attr3) (cid:1) Contexte C2 inv: C2.allInstances()->forAll(c:C2| | c.c3->notEmpty() implies
c.attr2=c.c3.attr3)
Solution
Publicité
(cid:1) NON : la première dit que pour des instances de C2 et C3 liées avec une instance de C1, les attributs attr2 et attr3 sont égaux, mais n'impose rien à des instances de C2 et C3 non liées à une instance de C1 (et il y en a à cause de la multiplicité). (cid:1) La deuxième dit que pour tout couple d'instances de C2 et C3 liées, ces deux
attributs sont égaux.
5
R.DRIRA ENSI-II3 ILSI Chapitre2: Principes et standards de MDA 2014-2015
Exercice4
Exprimer en OCL les contraintes suivantes:
Dans une compagnie, un manager doit travailler et avoir plus de 40 ans. Le nombre d'employé d'une compagnie est non nul
Une personne considérée comme au chômage ne doit pas avoir de salaires et une personne qui travaille doit avoir au moins un revenu de 500 DT par mois.
Dans le contexte de la classe Job: l’âge de l’employé doit être supérieur à 21.
Tous les enfants d'une personne ont bien cette personne comme parent et inversement
1.
2.
3.
4.
6
R.DRIRA ENSI-II3 ILSI Chapitre2: Principes et standards de MDA 2014-2015
16/10/2014
3
Exercice4
1. context Company
inv: self.manager.isUnemployed = false and self.manager.age > 40 and self.employee -> notEmpty()
2. context Person
Inv: let money : Real = self.Job.salary->sum() in if isUnemployed then money =0 else money >= 500 Endif Ou bien context Person inv: if isUnemployed=true then self.Job ->isEmpty() else self.Job.salary->sum() >= 500
3. context Job inv: self.employee.age > 21 4. context Person inv: children -> notEmpty() implies children -> forAll ( p : Person
|p.parents -> includes(self))
context Person inv: parents -> forAll ( p : Person |p.children -> includes (self))
R.DRIRA ENSI-II3 ILSI Chapitre2: Principes et standards de MDA 2014-2015
Exercices méta-modélisation et profil UML
7
8
Publicité
16/10/2014
4
16/10/2014
Exercice 1
(cid:1) Nous allons développer une version simplifiée des diagrammes de
classes UML (package, classes, attributs).
(cid:1) L’information qui nous intéresse est la suivante :
(cid:1) « Un diagramme de classes contient des packages. Un
package a un nom et contient des classes. (cid:1) Un package peut importer un autre package. (cid:1) Une classe a un nom et peut contenir des attributs. Elle peut
aussi hériter d’une autre classe.
(cid:1) Un attribut a un nom et une visibilité qui peut être soit
public soit private
(cid:1) Un attribut a un type qui peut être soit un type de base (string,
integer, boolean), soit une classe du diagramme.
9
R.DRIRA ENSI-II3 ILSI Chapitre1: Introduction à l’IDM 2014-2015
Corrigé
10
R.DRIRA ENSI-II3 ILSI Chapitre1: Introduction à l’IDM 2014-2015
5
Exercice2
(cid:1) Elaborer un méta-modèle qui permet de modéliser des librairies
gérant des livres, des membres et des emprunts.
(cid:1) Chaque livre possède un nombre de copies. (cid:1) Un membre peut emprunter plusieurs livres. (cid:1) Chaque emprunt concerne un livre et un membre (cid:1) Le nombre d’emprunts de chaque livre ne doit pas dépasser le
nombre de copies.
11
R.DRIRA ENSI-II3 ILSI Chapitre1: Introduction à l’IDM 2014-2015
Exercice 3
(cid:1) Elaborer un méta-modèle qui permet de modéliser des maisons
composées de pièces
Publicité
(cid:1) Une pièce possède 4 murs, 2 fenêtres et une porte (cid:1) Un mur possède une porte ou une fenêtre mais pas les 2 à la fois (cid:1) Deux actions sont associées à une porte ou une fenêtre : ouvrir et
fermer
12
R.DRIRA ENSI-II3 ILSI Chapitre1: Introduction à l’IDM 2014-2015
16/10/2014
6
16/10/2014
Exercice 3
(cid:1) Elaborer un méta-modèle qui permet de modéliser des
diagrammes comme étant des carrés reliés par des flèches. Une flèche ne devra pas avoir le même carré comme source et destination.
(cid:1) Donner un modèle conforme au méta-modèle précédent et qui
représente le diagramme suivant:
13
R.DRIRA ENSI-II3 ILSI Chapitre2: Principes et standards de MDA 2014-2015
Exercice4
(cid:1) Définir un profil UML qui permet de modéliser des
diagrammes comme étant des carrés reliés avec des flèches?
14
R.DRIRA ENSI-II3 ILSI Chapitre2: Principes et standards de MDA 2014-2015
7
Exercice 5
(cid:1) Se base sur l’exercice 4 MAIS (cid:1) Profil un peu plus détaillé qui répond à l’énoncé:
(cid:1) les carrés possèdent un longueur de côté (entière) et une couleur de
fond parmi bleu, blanc ou rouge
(cid:1) une flèche est soit pleine, soit pointillée
15
R.DRIRA ENSI-II3 ILSI Chapitre2: Principes et standards de MDA 2014-2015
16/10/2014
8