OCL
OCL
4 Utilisation des contraintes OCL. 1
4.3 Préconditions et postconditions. 2
1 OCL
Le Object Constraint Language (OCL) est un langage déclaratif permettant de décrire des règles appliquées aux modèles UML. Développé initialement par IBM, il fait maintenant partie intégrante de la norme UML.
2 Contraintes
Les contraintes sont représentées après un élément de modèle ou un stéréotype sous forme de texte entre accolades {}.
Elles définissent une condition ou une règle concernant l’élément de modélisation qui doit toujours être respectée.
Relation entre éléments de modélisation : propriété qui doit rester vraie.
3 Notation : {contrainte}
4 Utilisation des contraintes OCL
es contraintes OCL sont utilisées dans plusieurs situations :
Description d’invariants de classe : une contrainte devant être respectée en permanence par toutes les instances d’une classe.
Préconditions et postconditions d’opérations : une contrainte qui doit toujours être vraie avant ou après l’exécution d’une opération.
Contraintes sur la valeur retournée par une méthode.
4.1 Notion de contexte
Toute contrainte OCL est attachée à un contexte spécifique, c’est-à -dire à l’élément auquel elle s’applique.
Syntaxe : context monContexte
<stéréotype> nomContrainte : Expression de la contrainte
4.2 Invariants
Un invariant exprime une contrainte sur un objet ou un ensemble d’objets qui doit être respectée en permanence.
Exemple : <stéréotype> : inv
context Compte inv: solde > 0 -- le solde d’un compte doit toujours être positif
4.3 Préconditions et postconditions
Les préconditions et postconditions spécifient des contraintes à vérifier avant et après l’exécution d’une opération.
4.4 Exemples :
context Personne::setAge(a : entier)
pre : (a <= 140) and (a >= 0) and (a >= age)
post : age = a -- on peut aussi écrire a = age
context Compte::debiter(somme : Real)
pre : somme > 0
post : solde = solde@pre - somme
context Compte::getSolde() : Real
post : result = somme