OCL

1       OCL. 1

2       Contraintes. 1

3       Notation : {contrainte}. 1

4       Utilisation des contraintes OCL. 1

4.1         Notion de contexte. 2

4.2         Invariants. 2

4.3         PrĂ©conditions et postconditions. 2

4.4         Exemples : 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


Modifié le: vendredi 26 décembre 2025, 18:30