Documente Academic
Documente Profesional
Documente Cultură
1
• Qu’est ce que OCL
2
• Pourquoi OCL ?
3
• Typologie des contraintes
4
• Types de base et opérations
5
• Accès aux objets, navigation
• collection
6
• conclusion
7
Contraintes
Relation entre éléments de modélisation : propriété qui doit être vraie
Notation : − − − − − − − − {contrainte}
3 types de contraintes :
Contraintes prédéfinies : disjoint, overlapping,...
Contraintes exprimées en langue naturelle (commentaires)
Contraintes exprimées avec OCL (Object Constraint Language)
Stéréotypes : <<précondition>>, <<postcondition>>
• OCL - Langage de contraintes objet
1
OCL peut s'appliquer sur la plupart des diagrammes d'UML et permet de spécifier
des contraintes sur l'état d'un objet ou d'un ensemble d'objets
Standardisé par l’OMG : spécification v2.0 http://www.omg.org/spec/OCL/
Application bancaire
Spécification :
Un compte doit avoir un solde toujours positif
Un client peut posséder plusieurs comptes
Un client peut être client de plusieurs banques
Un client d’une banque possède au moins un compte dans cette banque
Une banque gère plusieurs comptes
Une banque possède plusieurs clients
Notion Contexte(context) :
context Compte
inv :
solde > 0
context Compte :: débiter(somme : int)
pre : somme > 0
post : solde = solde@pre - somme
context Compte
inv : banque.clients -> includes (propriétaire)
syntaxe
context <élément>
<élément> peut être une classe, une opération.. . Pour faire référence à un élément op ,d'un
classeur C ou d'un paquetage…, il faut utiliser les :: comme séparateur (comme C::op).
exemple
syntaxe
inv : <expression_logique>
exemple
syntaxe
exemple
context Compte::débiter(somme : Real)
pre : somme > 0
post : solde = solde@pre - somme
4
• Types de base et opérations
• and (et logique) : l’invariant, pré ou postcondition est vrai si toutes les
expressions reliées par le and sont vraies
• or
5
• Accès aux objets, navigation
OrderedSet :
Idem mais ensemble ordonné
OrderedSet { 1, 3, 4, 5 }
listes : Sequence(T)
Répétitions possibles, les éléments sont ordonnés
Sequence { 1, 5, 5, 10, 3, 1 }
Peu utilisés dans UML : le résultat d ’une association avec la contrainte {ordered}
sacs : Bag(T)
Répétitions possibles, pas d ’ordre
Bag { 1, 5, 5, 10, 3, 1 }
Sont le résultat de navigations en OCL
Opérations générales sur les collections
Syntaxe d'utilisation
Collection ->primitive
Exemples
union includes(obj)
intersection excludes(obj)
size(coll) including(obj)
isEmpty() excluding(obj)
notEmpty() includesAll(coll)
excludesAll(coll)
Exemples d’opérations sur les éléments
d'une collection
Combiner OCL avec un langage naturel : les contraints servent a rendre les
commentaires moins ambigus et non à les remplacer.