100% ont trouvé ce document utile (1 vote)
762 vues3 pages

TD 4 - Ocl: Exercice 1

Ce document contient trois exercices portant sur la modélisation UML avec des contraintes OCL. L'exercice 1 décrit trois cas d'utilisation avec des classes d'école, de montgolfière et de cave, et demande d'exprimer les contraintes OCL associées. L'exercice 2 concerne les relations entre personnes, parents et enfants. L'exercice 3 modélise les classes personne, entreprise et leur relations.

Transféré par

asds dhqsjdh
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
762 vues3 pages

TD 4 - Ocl: Exercice 1

Ce document contient trois exercices portant sur la modélisation UML avec des contraintes OCL. L'exercice 1 décrit trois cas d'utilisation avec des classes d'école, de montgolfière et de cave, et demande d'exprimer les contraintes OCL associées. L'exercice 2 concerne les relations entre personnes, parents et enfants. L'exercice 3 modélise les classes personne, entreprise et leur relations.

Transféré par

asds dhqsjdh
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd

TD UML – Maîtrise d’IUP MIAGE – Université d’Evry

2003-2004

TD 4 - OCL

Exercice 1

Pour les différents problèmes suivants construire le diagramme de classes correspondant et


donner les différentes contraintes des opérations en OCL.

 Soit une classe d’école composée d’un ensemble d’élèves. Chaque élève a un nom
et un prénom. Pour chaque classe on connaît le nombre d’élèves, on peut ajuter ou
retirer un élèves. On peut aussi connaître l’effectif de la classe.

SOLUTION

context Classe d’école::ajouter(unEleve : Personne)


pre : nb_eleves <= 25
post : eleves->exists(unEleve)
context Classe d’école::retirer(unEleve : Personne)
pre : eleves->exists(unEleve)
post : not(eleves->exists(unEleve))
context Classe d’école::effectif() :entier
post : result = nb_eleves

 Soit une montgolfière composée d’un ballon et de lest. Le ballon a une température,
que l’on peut récupérer et un volume. Le lest a une masse. La montgolfière a une
masse. On peut lâcher du lest ou faire monter la montgolfière

SOLUTION

context Montgolfiere::lacherLest(quantite : Poids)


post : self.poids = self.poids@pre - quantite
context Montgolfiere::monter()
post : self.lest() <= self.lest@pre()
or self.ballon.Temperature() >= [email protected]()

 Soit une cave composée de types de bouteilles de vin. Un type de bouteilles de vin
se caractérise par son cépage, sa date de mise en bouteille, du nombre de bouteilles
en réserve et du producteur. Pour chaque cave on a une réserve et on connaît les
bouteilles consommées.
Pour chaque cave on peut boire un type de bouteille, noter un type de bouteille et
connaître la dernière bouteille bue.

SOLUTION
context Cave::note(T : TypeDeBouteille):entier
pre : self.bouteillesConsommes->exists(T)
post : result = t.notation.note
context Cave::boire(T :TypeDeBouteille)
pre : self.reserve->exists(T)
post : self.bouteillesConsommes.notation->notEmpty
and t.notation->exists

-1-
TD UML – Maîtrise d’IUP MIAGE – Université d’Evry
2003-2004

and
bouteillesConsommees.nb_bouteilles=bouteillesConsommees.nb_bouteilles@pre+1

Exercice 2

Soit la classe Personne. Une personne peut être l’enfant de quelqu’un ou être parent.
Représenter cette notion sous forme de diagramme de classes.

Pour chaque parent, on peut connaître le nombre de filles et de garçons. Exprimer les
propriétés de ces deux méthodes en OCL (utiliser la fonction select).

SOLUTION

context Personne::NbFilles():entier
post :result=self.enfants->select(fille | fille.sexe=#feminin)->size
ou result = self.enfants- >select(fille | fille.sexe=#feminin)->size
ou result = self.enfants->select(fille  : Personne|fille.sexe=#feminin)->size

Exprimer le fait qu’une personne a au plus deux parents.

SOLUTION

context Personne inv :


self.parents->size <=2

Exprimer le fait que les parents d’une personne paye des impôts si la somme de leurs
revenus est supérieure au seuil d’imposition.

SOLUTION

context Personne inv :


if self.parents-.collect(revenus)->sum> plafondDImposition
then self.parents.payeDesImpots = vrai
else self.parents.payeDesImpots = faux

On peut calculer pour chaque personne les revenus des parents. Exprimer les propriétés de
cette méthode en OCL (utiliser la fonction iterate).

SOLUTION

context Personne::revenusDesParents():entier
post : result = self.parents->iterate(p :Personne ;val :entier=0 | val=p.revenus->sum)

Exercice 3

Une personne peut être mari ou femme. Elle peut donc être mariée, avoir un emploi, avoir
une date d’anniversaire, un age, un nom de famille, un prénom, un sexe et un revenu. Si elle
a un emploi elle peut être employée par une compagnie. Une compagnie a des employés et
un patron. Une personne a un compte en banque avec un numéro de compte.

Représenter le diagramme de classes correspondant.

-2-
TD UML – Maîtrise d’IUP MIAGE – Université d’Evry
2003-2004

Exprimer en OCL les propriétés suivantes :

- une compagnie a au moins 50 employés

- une personne est considérée comme sans emploi si son salaire est inférieur à
100

- une compagnie n’a qu’un seul patron

- le patron d’une compagnie a forcément plus de 50 ans

- si une personne a un époux alors il est du sexe opposé au sien

- une personne de moins de 16 ans et de plus de 60 ans est sans emploi

-3-

Vous aimerez peut-être aussi