Modélisation de système : OCL ça se complique !
Dans l'article précédent, nous avons vu une introduction et quelques bases d'OCL (Object Constraint Language).
Le moment est arrivé, pour aller un peu plus loin dans des éléments de syntaxe plus complexes toujours avec notre diagramme de classe (voir https://www.urbanisation-si.com/modelisation-de-systeme-uml-n-est-rien-sans-ocl ).
Exemple d'énumération :
Réutiliser une variable :
let income : Integer = self.job.salary->sum() in
if isUnemployed then
income < 100
else
income >= 100
endif
Pour réutiliser des variables/opérations à partir de plusieurs expressions OCL :
def: income : Integer = self.job.salary->sum()
def: nickname : String = ‘Little Red Rooster’
def: hasTitle(t : String) : Boolean = self.job->exists(title = t)
Pour les opérations/attributs statiques :
static def : globalId() : Integer = ...
Quand on est certain qu'un type courant d'un objet est un sous-type alors on peut le transtyper (caster) :
Les opérateurs de naviagation sont . pour les attributs/opérations et -> pour les collections, opération ou itération :
Les mots clés :
post pre self static then true xor
Les mots restreints :
String Tuple UnlimitedNatural
Commentaire : tout ce qui suit 2 signes moins -- et se trouve avant la fin de la ligne est un commentaire.
Les attributs :
self.age > 0
Les opérations
L'appel :
aPerson.income(aDate).bonus = 300 and
aPerson.income(aDate).result = 5000
La définition :
post: result = age * 1000
Les associations :
inv: self.manager.isUnemployed = false
inv: self.employee->notEmpty()
context Person inv:
self.employer->size() < 3
context Person inv:
self.wife->notEmpty() implies self.wife.gender = Gender::female
context Person inv:
(self.wife->notEmpty() implies self.wife.age >= 18) and
(self.husband->notEmpty() implies self.husband.age >= 18)
context Company inv:
self.employee->size() <= 50
On ne peut pas tout dévoiler tout de suite, le reste fera l'objet d'un prochain article.
"Les seuls beaux yeux sont ceux qui vous regardent avec tendresse."
Coco Chanel
Voir aussi :
http://urbanisation-si.wix.com/blog
http://urbanisme-si.wix.com/blog
http://urbanisation-si.wix.com/urbanisation-si
http://urbanisation-si.over-blog.com/
http://rhonamaxwel.over-blog.com/
http://urbanisation-des-si.blogspot.fr/
A découvrir aussi
- La modélisation : tout juste bon à dépenser de l'argent pour rien ?
- Modélisation de système : Soyez maniaque, croisez et recroisez vos modèles UML pour être certain qu'ils soient valides (10)
- Modélisation de système : Soyez maniaque, croisez et recroisez vos modèles UML pour être certain qu'ils soient valides (11)
Inscrivez-vous au site
Soyez prévenu par email des prochaines mises à jour
Rejoignez les 782 autres membres