OCL : COMPAGNIE

OCL (Object Constraint Language) est un langage formel utilisé pour définir et spécifier des contraintes sur les modèles de données orientés objet. Il fournit des expressions de contraintes pour spécifier des conditions qui doivent être satisfaites par les instances d'une classe, ainsi que des opérations et des fonctions pour effectuer des calculs sur les objets. OCL est utilisé dans l'ingénierie logicielle pour valider et vérifier la conformité des modèles de données avec les exigences fonctionnelles et non fonctionnelles.

EXERCICE  OCL  COMPAGNIE

Etudier le diagramme de classe suivant :

Ocl pandacodeur

Écrire les contraintes OCL suivante :

  1. Une personne ne peut pas être employée par plus de 2 sociétés.
  2. Tous les employés d’une société doivent avoir plus de 18 ans.
  3. Le nombre total d’employés d’une société est égal au nombre d’employés simples plus le directeur.
  4. Le revenu d’une personne majeure est la somme des salaires des emplois qu’elle occupe.
  5. Une société doit avoir des employés de plus de 50 ans.
  6. Si une personne possède deux parents, l’un est une femme et l’autre est un homme.

7. Tous les enfants d’une personne ont bien cette personne comme parent et inversement.

CORRECTION : OCL

1. Une personne ne peut pas être employée par plus de 2 sociétés.
context Person
inv : employer->size() < 3
2. Tous les employés d’une société doivent avoir plus de 18 ans.
context Company
inv : employee->forAll (age > 18)
3. Le nombre total d’employés d’une société est égal au nombre d’employés simples plus le
directeur.
context Company::numberOfEmployees : Integer
derive : employee.size() + 1
4. Le revenu d’une personne majeure est la somme des salaires des emplois qu’elle occupe.
context Person::income() : Integer
pre : age > 18
body : if isUnemployed then 0 else job.salary->sum() endif
5. Une société doit avoir des employés de plus de 50 ans.
context Company
inv : employee->exists(age > 50)
6. Si une personne possède deux parents, l’un est une femme et l’autre est un homme.
context Person
inv : (parent->size() = 2) implies
(parent->one(gender = Gender::female)
AND parent->one(gender = Gender::male))
7. Tous les enfants d’une personne ont bien cette personne comme parent et inversement.
context Person
inv : child->notEmpty() implies
child->forAll(p: Person | p.parent->includes(self)
inv : parent->notEmpty() implies
parent->forAll(p: Person | p.child->includes(self))

Si vous avez trouvé les exercices corrigés en OCL de Mr JoëlYk intéressants et utiles, pourquoi ne pas les partager avec d'autres personnes qui pourraient également en bénéficier ? Partagez ce lien sur les réseaux sociaux ou envoyez-le à vos amis et collègues. Vous pourriez aider quelqu'un à améliorer ses compétences en programmation ou à trouver des solutions à des problèmes complexes. N'oubliez pas que la connaissance doit être partagée pour grandir. Merci pour votre soutien et votre partage !

Contact WhatsApp : +237 658395978 | Réaliser Par Joël_Yk

  • Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam