SlideShare une entreprise Scribd logo
1  sur  2
OCL : Object Constraint Language
Cette fiche résume de manière synthétique mais incomplète et très informelle les principales caractéristiques du langage OCL.
Pour plus de précision, se reporter au document de référence UML.
Types des identificateurs utilisés ci-dessous
Constructions sy ntaxiques
ct
id
self
e op e
e. id
e . pt ( e, ... , e )
c -> pt ( e, ..., e )
ns:: ... ns::id
if pd then e else e endif
let id = e : T, id2 = e:T, ... in e2
Types, valeurs et opérations dans la bibliothèque standard
Integer 1, -5, 34 i+i2, i-i2, i*i2, i.div(i2), i.mod(i), i.abs, i.max(i2), i.min(i2), <, >, <=, >=
Real 1.5, 1.34, ... r+r2, r-r2, r*r2, r/r2, r.floor, r.round, r.max(r2), r.min(r2), <, >, <=, >=
Boolean true, false not b, b and b2, b or b2, b xor b2, b implies b2
String '', 'une chaine' s.size(), s.concat(s2), s.substring(i1,i2), s.toUpper(), s.toLower(), s.toInteger(), s.toReal()
Enumeration Jour::Lundi,
Jour::Mardi, …
=, <>
TupleType( x : T1,
y : T2,
z : T3 )
Tuple { y : T2 = …,
x = … ,
z = … }
t.x
t.y
t.z
Collection(T)
c->size(), c->includes(o), c->excludes(o), c->count(o), c->includesAll(c2)
c->excludesAll(c2), c->isEmpty(), c->notEmpty(), c->sum()
c->exists(p), c->forall(p), c->isUnique(e), c->sortedBy(e), c->iterate(e)
Set(T)
Set {1,5,10,3},
Set{}
st->union(st2), st->union(bg), st->intersection(st2), st->intersection(bg)
st - st2, st->including(e), st->excluding(e), st->symmetricDifference(st2)
st->select(e), st->reject(e), st->collect(e), st->count(e), st->flatten(),
st->asSequence(), st->asBag()
Bag(T) Bag {1,5,5}
Bag {}
bg->union(bg2), bg->union(st), bg->intersection(bg2), bg->intersection(st)
bg->including(e), bg->excluding(e), bg->count(e), bg->flatten()
bg->select(e), bg->reject(e), bg->collect(e)
bg->asSequence(), bg->asSet()
OrderedSet(T) OrderedSet{10,4,3}
OrderedSet{}
…
Sequence(T)
Sequence{5,3,5}
Sequence{}
sq->count(e), sq->union(sq2), sq->append(e), sq->prepend(e), sq->insertAt(i,o)
sq->subSequence(i1,i2), sq->at(i), sq->first(), sq->last(), sq->indexOf(o)
sq->including(e), sq->excluding(e)
sq->select(e), sq->reject(e), sq->collect(e), sq->iterate(e)
sq->asBag, sq->asSet
Exemples :
context Personne
inv : enfants->forall( e | e.age < self.age - 7)
inv : enfants->forall( e : Personne | e.age < self.age - 7)
inv i3 : enfants->forall( e1,e2 : Personne | e1 <> e2 implies e1.prénom <> e2.prénom)
inv i4 : self.enfants -> isUnique ( prénom )
def cousins : Set(Personne) = parents.parents.enfants.enfants->excluding( parents.enfants )->asSet()
context Personne ::age : Integer
init : 0
context Personne :: estMarrié : Boolean
derive : conjoint->notEmpty()
context Personne::salaire() : integer
post : return > 5000
context Compagnie::embaucheEmployé( p : Personne)
pre pasPrésent : not (employés->includes(p))
post embauché : employés->includes(p)
context Personne::grandsParents() : Set(Personne)
body : parents.parents->asSet()
i : Integer
r : Real
b : Boolean
s : String
c : Collection(T)
st: Set(T)
bg : Bag(T)
sq : Sequence(T)
os : OrderedSet(T)
t : Tuple(…)
id: identificateur
pt: property
cs: constant
pd : predicat
e : expression
ns: namespace
(age<40 implies salaire>1000) and (age>=40 implies salaire>2000)
if age<40 then salaire > 1000 else salaire > 2000 endif
salaire > (if age<40 then 1000 else 2000 endif)
nom= nom.substring(1,1).toUpper().concat(
nom.substring(2,nom.size()).toLower())
épouse->notEmpty() implies épouse.sexe = Sexe::Feminin
Set { 3, 5, 2, 45, 5 }->size()
Sequence { 1, 2, 45, 9, 3, 9 } ->count(9)
Sequence { 1, 2, 45, 2, 3, 9 } ->includes(45)
Bag { 1, 9, 9, 1 } -> count(9)
c->asSet()->size() = c->size()
c->count(x) = 0
Bag { 1, 9, 0, 1, 2, 9, 1 } -> includesAll( Bag{ 9,1,9} )
self.enfants ->select( age>10 and sexe = Sexe::Masculin)
self.enfants ->reject(enfants->isEmpty())->notEmpty()
membres->any(titre='président')
self.employé->select(age > 50)
self.employé->select( p | p.age>50 )
self.employé->select( p : Personne | p.age>50)
self.enfants->forall(age<10)
self.enfants->exists(sexe=Sexe::Masculin)
self.enfants->one(age>=18)
self.enfants->forall( age < self.age )
self.enfants->forall( e | e.age < self.age - 7)
self.enfants->forall( e : Personne | e.age < self.age - 7)
self.enfants->exists( e1,e2 | e1.age = e2.age )
self.enfants->forall( e1,e2 : Personne |
e1 <> e2 implies e1.prénom <> e2.prénom)
self.enfants -> isUnique ( prénom )
self.enfants->collect(age) = Bag{10,5,10,7}
self.employés->collect(salaire/10)->sum()
self.enfants.enfants.voitures
enfants.enfants.prénom = Bag{ 'pierre', 'paul', 'marie', 'paul' }
enfants->collectNested(enfants.prénom) =
Bag { Bag{'pierre', 'paul'}, Bag{'marie','paul'}
Sequence{1..s->size()-1} -> forall(i | s.at(i) < s.at(i+1) )
enfants->sortedBy( age )
enfants->sortedBy( enfants->size() )->last()
let ages = enfants.age->sortedBy(a | a) in ages.last() - ages.first()
s.Emploi
p.Emploi
s.Emploi->collect(salaire)->sum()
s.Emploi.salaire->forall(x | x>500)
p.Evaluation[chefs]
p.Evaluation[employés]
p.Evaluation[chefs].note -> sum() / p.chefs->size()
s.Emploi-> select(salaire<1000).employé
p.enfants->select(oclIsKindOf(Femme)).asTypeOf(Set(Femme))
->select(nomDeJF <> nom)
Personne.allInstances->size() < 500
Personne.allInstances->forall(p1,p2 | p1<>p2 implies p1.numsecu <> p2.numsecu)
Personne.allInstances->isUnique(numsecu)

Contenu connexe

Tendances

Cours Hydraulique licence
Cours Hydraulique  licenceCours Hydraulique  licence
Cours Hydraulique licenceSouhila Benkaci
 
Oscillations forcées en régime sinusoidal 2015
Oscillations forcées en régime sinusoidal 2015Oscillations forcées en régime sinusoidal 2015
Oscillations forcées en régime sinusoidal 2015Daghsni Said
 
Toyota 30 7 fbcu30 forklift service repair manual
Toyota 30 7 fbcu30 forklift service repair manualToyota 30 7 fbcu30 forklift service repair manual
Toyota 30 7 fbcu30 forklift service repair manualjksmermd
 
Les coûts de maintenance
Les coûts de maintenanceLes coûts de maintenance
Les coûts de maintenanceMouhcine Nahal
 
Exercices Flexion Plane Simple
Exercices Flexion Plane SimpleExercices Flexion Plane Simple
Exercices Flexion Plane SimpleMohamed Mtaallah
 
Modèlisation des systèmes mécaniques
Modèlisation des systèmes mécaniquesModèlisation des systèmes mécaniques
Modèlisation des systèmes mécaniquesmedrouam
 
Référentiel du développement agricole durable en Tunisie
Référentiel du développement agricole durable en TunisieRéférentiel du développement agricole durable en Tunisie
Référentiel du développement agricole durable en TunisieJamaity
 
exercices Corrigées du merise
exercices Corrigées du  meriseexercices Corrigées du  merise
exercices Corrigées du meriseYassine Badri
 
Chapitre iv algorithmes de tri
Chapitre iv algorithmes de triChapitre iv algorithmes de tri
Chapitre iv algorithmes de triSana Aroussi
 
Les actionneurs-et-les-capteurs-www.cours-online.com
Les actionneurs-et-les-capteurs-www.cours-online.comLes actionneurs-et-les-capteurs-www.cours-online.com
Les actionneurs-et-les-capteurs-www.cours-online.commorin moli
 
Cours gestion-de-production
Cours gestion-de-productionCours gestion-de-production
Cours gestion-de-productionRachid Rachido
 
Transfer de chaleur exercice corriger
Transfer de chaleur exercice corriger Transfer de chaleur exercice corriger
Transfer de chaleur exercice corriger ChennoufHalim
 
Importance of Eccentric Wind Loading on Monopitch Module Mounting Structures
Importance of Eccentric Wind Loading on Monopitch Module Mounting StructuresImportance of Eccentric Wind Loading on Monopitch Module Mounting Structures
Importance of Eccentric Wind Loading on Monopitch Module Mounting StructuresSgurrEnergy Pvt. Ltd.
 
chapitre-7-les-gradateurs.pdf
chapitre-7-les-gradateurs.pdfchapitre-7-les-gradateurs.pdf
chapitre-7-les-gradateurs.pdfOukrimMohamed
 
Exercices coprrigés sur les torseurs
Exercices coprrigés sur les torseursExercices coprrigés sur les torseurs
Exercices coprrigés sur les torseursm.a bensaaoud
 
Chapitre 2_ les capteurs passifs et leurs conditionneurs 2011-20122012.pdf
Chapitre 2_ les capteurs passifs et leurs conditionneurs 2011-20122012.pdfChapitre 2_ les capteurs passifs et leurs conditionneurs 2011-20122012.pdf
Chapitre 2_ les capteurs passifs et leurs conditionneurs 2011-20122012.pdfLaReina7
 

Tendances (20)

Cours Hydraulique licence
Cours Hydraulique  licenceCours Hydraulique  licence
Cours Hydraulique licence
 
Oscillations forcées en régime sinusoidal 2015
Oscillations forcées en régime sinusoidal 2015Oscillations forcées en régime sinusoidal 2015
Oscillations forcées en régime sinusoidal 2015
 
Toyota 30 7 fbcu30 forklift service repair manual
Toyota 30 7 fbcu30 forklift service repair manualToyota 30 7 fbcu30 forklift service repair manual
Toyota 30 7 fbcu30 forklift service repair manual
 
Les coûts de maintenance
Les coûts de maintenanceLes coûts de maintenance
Les coûts de maintenance
 
Exercices Flexion Plane Simple
Exercices Flexion Plane SimpleExercices Flexion Plane Simple
Exercices Flexion Plane Simple
 
Modèlisation des systèmes mécaniques
Modèlisation des systèmes mécaniquesModèlisation des systèmes mécaniques
Modèlisation des systèmes mécaniques
 
Référentiel du développement agricole durable en Tunisie
Référentiel du développement agricole durable en TunisieRéférentiel du développement agricole durable en Tunisie
Référentiel du développement agricole durable en Tunisie
 
RDM.pdf
RDM.pdfRDM.pdf
RDM.pdf
 
Exercices : Algorithmes et Langage C
Exercices : Algorithmes et Langage CExercices : Algorithmes et Langage C
Exercices : Algorithmes et Langage C
 
exercices Corrigées du merise
exercices Corrigées du  meriseexercices Corrigées du  merise
exercices Corrigées du merise
 
Chapitre iv algorithmes de tri
Chapitre iv algorithmes de triChapitre iv algorithmes de tri
Chapitre iv algorithmes de tri
 
Les actionneurs-et-les-capteurs-www.cours-online.com
Les actionneurs-et-les-capteurs-www.cours-online.comLes actionneurs-et-les-capteurs-www.cours-online.com
Les actionneurs-et-les-capteurs-www.cours-online.com
 
Cours gestion-de-production
Cours gestion-de-productionCours gestion-de-production
Cours gestion-de-production
 
Transfer de chaleur exercice corriger
Transfer de chaleur exercice corriger Transfer de chaleur exercice corriger
Transfer de chaleur exercice corriger
 
Importance of Eccentric Wind Loading on Monopitch Module Mounting Structures
Importance of Eccentric Wind Loading on Monopitch Module Mounting StructuresImportance of Eccentric Wind Loading on Monopitch Module Mounting Structures
Importance of Eccentric Wind Loading on Monopitch Module Mounting Structures
 
Fiabilite
FiabiliteFiabilite
Fiabilite
 
chapitre-7-les-gradateurs.pdf
chapitre-7-les-gradateurs.pdfchapitre-7-les-gradateurs.pdf
chapitre-7-les-gradateurs.pdf
 
Exercices coprrigés sur les torseurs
Exercices coprrigés sur les torseursExercices coprrigés sur les torseurs
Exercices coprrigés sur les torseurs
 
Chapitre 2_ les capteurs passifs et leurs conditionneurs 2011-20122012.pdf
Chapitre 2_ les capteurs passifs et leurs conditionneurs 2011-20122012.pdfChapitre 2_ les capteurs passifs et leurs conditionneurs 2011-20122012.pdf
Chapitre 2_ les capteurs passifs et leurs conditionneurs 2011-20122012.pdf
 
Leroy somer miv
Leroy somer mivLeroy somer miv
Leroy somer miv
 

Similaire à UML OCL : Cheat Sheet - 10

cours-5.1.pdf
cours-5.1.pdfcours-5.1.pdf
cours-5.1.pdfGonnaBe1
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdfsalah fenni
 
RCarte_Commandes-R.pdf
RCarte_Commandes-R.pdfRCarte_Commandes-R.pdf
RCarte_Commandes-R.pdfDrissRifai1
 
ch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdfch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdfFadouaBouafifSamoud
 
Un algorithme de chiffrement a flot base sur le probleme des 3 corps.
Un algorithme de chiffrement a flot base sur le probleme des 3 corps.Un algorithme de chiffrement a flot base sur le probleme des 3 corps.
Un algorithme de chiffrement a flot base sur le probleme des 3 corps.Samir Crypticus
 
Cours Algorithme: Matrice
Cours Algorithme: MatriceCours Algorithme: Matrice
Cours Algorithme: MatriceInforMatica34
 
Coffee script
Coffee scriptCoffee script
Coffee scriptantho1404
 
Scala IO 2017 : Probabilités fonctionnelles
Scala IO 2017 : Probabilités fonctionnellesScala IO 2017 : Probabilités fonctionnelles
Scala IO 2017 : Probabilités fonctionnellesSamy Zarour
 
Mort au boilerplate avec scala meta
Mort au boilerplate avec scala metaMort au boilerplate avec scala meta
Mort au boilerplate avec scala metaDamien GOUYETTE
 
Programmation fonctionnelle
Programmation fonctionnelleProgrammation fonctionnelle
Programmation fonctionnelleGeeks Anonymes
 
Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)DriNox NordisTe
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétudeSana Aroussi
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)salah fenni
 
La programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCamlLa programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCamlStéphane Legrand
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesECAM Brussels Engineering School
 

Similaire à UML OCL : Cheat Sheet - 10 (20)

cours-5.1.pdf
cours-5.1.pdfcours-5.1.pdf
cours-5.1.pdf
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdf
 
RCarte_Commandes-R.pdf
RCarte_Commandes-R.pdfRCarte_Commandes-R.pdf
RCarte_Commandes-R.pdf
 
ch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdfch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdf
 
Un algorithme de chiffrement a flot base sur le probleme des 3 corps.
Un algorithme de chiffrement a flot base sur le probleme des 3 corps.Un algorithme de chiffrement a flot base sur le probleme des 3 corps.
Un algorithme de chiffrement a flot base sur le probleme des 3 corps.
 
Cours Algorithme: Matrice
Cours Algorithme: MatriceCours Algorithme: Matrice
Cours Algorithme: Matrice
 
Tql 2011 2012
Tql 2011 2012Tql 2011 2012
Tql 2011 2012
 
Coffee script
Coffee scriptCoffee script
Coffee script
 
Compte rendu jess
Compte rendu jessCompte rendu jess
Compte rendu jess
 
Scala IO 2017 : Probabilités fonctionnelles
Scala IO 2017 : Probabilités fonctionnellesScala IO 2017 : Probabilités fonctionnelles
Scala IO 2017 : Probabilités fonctionnelles
 
Mort au boilerplate avec scala meta
Mort au boilerplate avec scala metaMort au boilerplate avec scala meta
Mort au boilerplate avec scala meta
 
Programmation fonctionnelle
Programmation fonctionnelleProgrammation fonctionnelle
Programmation fonctionnelle
 
Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétude
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)
 
La programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCamlLa programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCaml
 
Chapitre 1 rappel
Chapitre 1   rappelChapitre 1   rappel
Chapitre 1 rappel
 
Slide matlab
Slide matlab Slide matlab
Slide matlab
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de données
 
ALF 12 - Optimisations
ALF 12 - OptimisationsALF 12 - Optimisations
ALF 12 - Optimisations
 

Plus de megaplanet20

IDM : Vision Globale - Introduction -- 9
IDM : Vision Globale - Introduction -- 9IDM : Vision Globale - Introduction -- 9
IDM : Vision Globale - Introduction -- 9megaplanet20
 
UML OCL : Liaison avecUML -- 24
UML OCL : Liaison avecUML -- 24UML OCL : Liaison avecUML -- 24
UML OCL : Liaison avecUML -- 24megaplanet20
 
UML OCL : An Expression Language - Core -- 29
UML OCL : An Expression Language - Core -- 29UML OCL : An Expression Language - Core -- 29
UML OCL : An Expression Language - Core -- 29megaplanet20
 
UML : Diagrammes de cas d'utilisation -- Problemes recurrents -- 20
UML : Diagrammes de cas d'utilisation -- Problemes recurrents -- 20UML : Diagrammes de cas d'utilisation -- Problemes recurrents -- 20
UML : Diagrammes de cas d'utilisation -- Problemes recurrents -- 20megaplanet20
 
UML : Diagrammes de cas d'utilisation -- modele detaille -- 15
UML : Diagrammes de cas d'utilisation -- modele detaille -- 15UML : Diagrammes de cas d'utilisation -- modele detaille -- 15
UML : Diagrammes de cas d'utilisation -- modele detaille -- 15megaplanet20
 
Uml : Diagrammes de Cas dutilisation -- Modele preliminaire -- 23
Uml : Diagrammes de Cas dutilisation -- Modele preliminaire -- 23Uml : Diagrammes de Cas dutilisation -- Modele preliminaire -- 23
Uml : Diagrammes de Cas dutilisation -- Modele preliminaire -- 23megaplanet20
 
Uml: Diagrammes de classes -- Concepts avances --- 27
Uml: Diagrammes de classes -- Concepts avances --- 27Uml: Diagrammes de classes -- Concepts avances --- 27
Uml: Diagrammes de classes -- Concepts avances --- 27megaplanet20
 
Uml: Diagrammes de classes -- Concepts De Base 41
Uml: Diagrammes de classes -- Concepts De Base 41Uml: Diagrammes de classes -- Concepts De Base 41
Uml: Diagrammes de classes -- Concepts De Base 41megaplanet20
 

Plus de megaplanet20 (8)

IDM : Vision Globale - Introduction -- 9
IDM : Vision Globale - Introduction -- 9IDM : Vision Globale - Introduction -- 9
IDM : Vision Globale - Introduction -- 9
 
UML OCL : Liaison avecUML -- 24
UML OCL : Liaison avecUML -- 24UML OCL : Liaison avecUML -- 24
UML OCL : Liaison avecUML -- 24
 
UML OCL : An Expression Language - Core -- 29
UML OCL : An Expression Language - Core -- 29UML OCL : An Expression Language - Core -- 29
UML OCL : An Expression Language - Core -- 29
 
UML : Diagrammes de cas d'utilisation -- Problemes recurrents -- 20
UML : Diagrammes de cas d'utilisation -- Problemes recurrents -- 20UML : Diagrammes de cas d'utilisation -- Problemes recurrents -- 20
UML : Diagrammes de cas d'utilisation -- Problemes recurrents -- 20
 
UML : Diagrammes de cas d'utilisation -- modele detaille -- 15
UML : Diagrammes de cas d'utilisation -- modele detaille -- 15UML : Diagrammes de cas d'utilisation -- modele detaille -- 15
UML : Diagrammes de cas d'utilisation -- modele detaille -- 15
 
Uml : Diagrammes de Cas dutilisation -- Modele preliminaire -- 23
Uml : Diagrammes de Cas dutilisation -- Modele preliminaire -- 23Uml : Diagrammes de Cas dutilisation -- Modele preliminaire -- 23
Uml : Diagrammes de Cas dutilisation -- Modele preliminaire -- 23
 
Uml: Diagrammes de classes -- Concepts avances --- 27
Uml: Diagrammes de classes -- Concepts avances --- 27Uml: Diagrammes de classes -- Concepts avances --- 27
Uml: Diagrammes de classes -- Concepts avances --- 27
 
Uml: Diagrammes de classes -- Concepts De Base 41
Uml: Diagrammes de classes -- Concepts De Base 41Uml: Diagrammes de classes -- Concepts De Base 41
Uml: Diagrammes de classes -- Concepts De Base 41
 

Dernier

Réunion des directeurs de Jonzac - 15 mai 2024
Réunion des directeurs de Jonzac - 15 mai 2024Réunion des directeurs de Jonzac - 15 mai 2024
Réunion des directeurs de Jonzac - 15 mai 2024IEN_Jonzac
 
ilide.info-cours-recherche-d-emploi-pr_aa839df7439dd234c803551c86e0197c.pdf
ilide.info-cours-recherche-d-emploi-pr_aa839df7439dd234c803551c86e0197c.pdfilide.info-cours-recherche-d-emploi-pr_aa839df7439dd234c803551c86e0197c.pdf
ilide.info-cours-recherche-d-emploi-pr_aa839df7439dd234c803551c86e0197c.pdfssuser6041d32
 
complement de agri cours irrigation.pptx
complement de agri cours irrigation.pptxcomplement de agri cours irrigation.pptx
complement de agri cours irrigation.pptxIbrahimBasallam
 
Àma Gloria.pptx Un film tourné au Cap Vert et en France
Àma Gloria.pptx   Un film tourné au Cap Vert et en FranceÀma Gloria.pptx   Un film tourné au Cap Vert et en France
Àma Gloria.pptx Un film tourné au Cap Vert et en FranceTxaruka
 
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean EudesNeuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean EudesUnidad de Espiritualidad Eudista
 
CALENDRIER ET COMPTE RENDU REUNION DIRECTION
CALENDRIER ET COMPTE RENDU REUNION DIRECTIONCALENDRIER ET COMPTE RENDU REUNION DIRECTION
CALENDRIER ET COMPTE RENDU REUNION DIRECTIONfrizzole
 
Chapitre3-Classififcation des structures de chaussu00E9e.pptx
Chapitre3-Classififcation des structures de  chaussu00E9e.pptxChapitre3-Classififcation des structures de  chaussu00E9e.pptx
Chapitre3-Classififcation des structures de chaussu00E9e.pptxModesteTiemele
 
Un petit coin etwinning- Au fil des cultures urbaines
Un petit coin  etwinning- Au fil des cultures urbainesUn petit coin  etwinning- Au fil des cultures urbaines
Un petit coin etwinning- Au fil des cultures urbainesSocratis Vasiopoulos
 
GHASSOUB _Seance 3_ measurement and evaluation in education.pptx
GHASSOUB _Seance 3_ measurement and evaluation in education.pptxGHASSOUB _Seance 3_ measurement and evaluation in education.pptx
GHASSOUB _Seance 3_ measurement and evaluation in education.pptxAbderrahim GHASSOUB
 
GHASSOUB _Seance 4_ measurement and evaluation in education_-.pptx
GHASSOUB _Seance 4_ measurement and evaluation in education_-.pptxGHASSOUB _Seance 4_ measurement and evaluation in education_-.pptx
GHASSOUB _Seance 4_ measurement and evaluation in education_-.pptxAbderrahim GHASSOUB
 
Nathanaëlle Herbelin.pptx Peintre française
Nathanaëlle Herbelin.pptx Peintre françaiseNathanaëlle Herbelin.pptx Peintre française
Nathanaëlle Herbelin.pptx Peintre françaiseTxaruka
 
Saint Damien, missionnaire auprès des lépreux de Molokai, Hawaï.pptx
Saint Damien, missionnaire auprès des lépreux de Molokai, Hawaï.pptxSaint Damien, missionnaire auprès des lépreux de Molokai, Hawaï.pptx
Saint Damien, missionnaire auprès des lépreux de Molokai, Hawaï.pptxMartin M Flynn
 
Texte avec différentes critiques positives, négatives ou mitigées
Texte avec différentes critiques positives, négatives ou mitigéesTexte avec différentes critiques positives, négatives ou mitigées
Texte avec différentes critiques positives, négatives ou mitigéesLeBaobabBleu1
 
Fiche de vocabulaire pour faire une appréciation
Fiche de vocabulaire pour faire une appréciationFiche de vocabulaire pour faire une appréciation
Fiche de vocabulaire pour faire une appréciationLeBaobabBleu1
 

Dernier (14)

Réunion des directeurs de Jonzac - 15 mai 2024
Réunion des directeurs de Jonzac - 15 mai 2024Réunion des directeurs de Jonzac - 15 mai 2024
Réunion des directeurs de Jonzac - 15 mai 2024
 
ilide.info-cours-recherche-d-emploi-pr_aa839df7439dd234c803551c86e0197c.pdf
ilide.info-cours-recherche-d-emploi-pr_aa839df7439dd234c803551c86e0197c.pdfilide.info-cours-recherche-d-emploi-pr_aa839df7439dd234c803551c86e0197c.pdf
ilide.info-cours-recherche-d-emploi-pr_aa839df7439dd234c803551c86e0197c.pdf
 
complement de agri cours irrigation.pptx
complement de agri cours irrigation.pptxcomplement de agri cours irrigation.pptx
complement de agri cours irrigation.pptx
 
Àma Gloria.pptx Un film tourné au Cap Vert et en France
Àma Gloria.pptx   Un film tourné au Cap Vert et en FranceÀma Gloria.pptx   Un film tourné au Cap Vert et en France
Àma Gloria.pptx Un film tourné au Cap Vert et en France
 
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean EudesNeuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
 
CALENDRIER ET COMPTE RENDU REUNION DIRECTION
CALENDRIER ET COMPTE RENDU REUNION DIRECTIONCALENDRIER ET COMPTE RENDU REUNION DIRECTION
CALENDRIER ET COMPTE RENDU REUNION DIRECTION
 
Chapitre3-Classififcation des structures de chaussu00E9e.pptx
Chapitre3-Classififcation des structures de  chaussu00E9e.pptxChapitre3-Classififcation des structures de  chaussu00E9e.pptx
Chapitre3-Classififcation des structures de chaussu00E9e.pptx
 
Un petit coin etwinning- Au fil des cultures urbaines
Un petit coin  etwinning- Au fil des cultures urbainesUn petit coin  etwinning- Au fil des cultures urbaines
Un petit coin etwinning- Au fil des cultures urbaines
 
GHASSOUB _Seance 3_ measurement and evaluation in education.pptx
GHASSOUB _Seance 3_ measurement and evaluation in education.pptxGHASSOUB _Seance 3_ measurement and evaluation in education.pptx
GHASSOUB _Seance 3_ measurement and evaluation in education.pptx
 
GHASSOUB _Seance 4_ measurement and evaluation in education_-.pptx
GHASSOUB _Seance 4_ measurement and evaluation in education_-.pptxGHASSOUB _Seance 4_ measurement and evaluation in education_-.pptx
GHASSOUB _Seance 4_ measurement and evaluation in education_-.pptx
 
Nathanaëlle Herbelin.pptx Peintre française
Nathanaëlle Herbelin.pptx Peintre françaiseNathanaëlle Herbelin.pptx Peintre française
Nathanaëlle Herbelin.pptx Peintre française
 
Saint Damien, missionnaire auprès des lépreux de Molokai, Hawaï.pptx
Saint Damien, missionnaire auprès des lépreux de Molokai, Hawaï.pptxSaint Damien, missionnaire auprès des lépreux de Molokai, Hawaï.pptx
Saint Damien, missionnaire auprès des lépreux de Molokai, Hawaï.pptx
 
Texte avec différentes critiques positives, négatives ou mitigées
Texte avec différentes critiques positives, négatives ou mitigéesTexte avec différentes critiques positives, négatives ou mitigées
Texte avec différentes critiques positives, négatives ou mitigées
 
Fiche de vocabulaire pour faire une appréciation
Fiche de vocabulaire pour faire une appréciationFiche de vocabulaire pour faire une appréciation
Fiche de vocabulaire pour faire une appréciation
 

UML OCL : Cheat Sheet - 10

  • 1. OCL : Object Constraint Language Cette fiche résume de manière synthétique mais incomplète et très informelle les principales caractéristiques du langage OCL. Pour plus de précision, se reporter au document de référence UML. Types des identificateurs utilisés ci-dessous Constructions sy ntaxiques ct id self e op e e. id e . pt ( e, ... , e ) c -> pt ( e, ..., e ) ns:: ... ns::id if pd then e else e endif let id = e : T, id2 = e:T, ... in e2 Types, valeurs et opérations dans la bibliothèque standard Integer 1, -5, 34 i+i2, i-i2, i*i2, i.div(i2), i.mod(i), i.abs, i.max(i2), i.min(i2), <, >, <=, >= Real 1.5, 1.34, ... r+r2, r-r2, r*r2, r/r2, r.floor, r.round, r.max(r2), r.min(r2), <, >, <=, >= Boolean true, false not b, b and b2, b or b2, b xor b2, b implies b2 String '', 'une chaine' s.size(), s.concat(s2), s.substring(i1,i2), s.toUpper(), s.toLower(), s.toInteger(), s.toReal() Enumeration Jour::Lundi, Jour::Mardi, … =, <> TupleType( x : T1, y : T2, z : T3 ) Tuple { y : T2 = …, x = … , z = … } t.x t.y t.z Collection(T) c->size(), c->includes(o), c->excludes(o), c->count(o), c->includesAll(c2) c->excludesAll(c2), c->isEmpty(), c->notEmpty(), c->sum() c->exists(p), c->forall(p), c->isUnique(e), c->sortedBy(e), c->iterate(e) Set(T) Set {1,5,10,3}, Set{} st->union(st2), st->union(bg), st->intersection(st2), st->intersection(bg) st - st2, st->including(e), st->excluding(e), st->symmetricDifference(st2) st->select(e), st->reject(e), st->collect(e), st->count(e), st->flatten(), st->asSequence(), st->asBag() Bag(T) Bag {1,5,5} Bag {} bg->union(bg2), bg->union(st), bg->intersection(bg2), bg->intersection(st) bg->including(e), bg->excluding(e), bg->count(e), bg->flatten() bg->select(e), bg->reject(e), bg->collect(e) bg->asSequence(), bg->asSet() OrderedSet(T) OrderedSet{10,4,3} OrderedSet{} … Sequence(T) Sequence{5,3,5} Sequence{} sq->count(e), sq->union(sq2), sq->append(e), sq->prepend(e), sq->insertAt(i,o) sq->subSequence(i1,i2), sq->at(i), sq->first(), sq->last(), sq->indexOf(o) sq->including(e), sq->excluding(e) sq->select(e), sq->reject(e), sq->collect(e), sq->iterate(e) sq->asBag, sq->asSet Exemples : context Personne inv : enfants->forall( e | e.age < self.age - 7) inv : enfants->forall( e : Personne | e.age < self.age - 7) inv i3 : enfants->forall( e1,e2 : Personne | e1 <> e2 implies e1.prénom <> e2.prénom) inv i4 : self.enfants -> isUnique ( prénom ) def cousins : Set(Personne) = parents.parents.enfants.enfants->excluding( parents.enfants )->asSet() context Personne ::age : Integer init : 0 context Personne :: estMarrié : Boolean derive : conjoint->notEmpty() context Personne::salaire() : integer post : return > 5000 context Compagnie::embaucheEmployé( p : Personne) pre pasPrésent : not (employés->includes(p)) post embauché : employés->includes(p) context Personne::grandsParents() : Set(Personne) body : parents.parents->asSet() i : Integer r : Real b : Boolean s : String c : Collection(T) st: Set(T) bg : Bag(T) sq : Sequence(T) os : OrderedSet(T) t : Tuple(…) id: identificateur pt: property cs: constant pd : predicat e : expression ns: namespace
  • 2. (age<40 implies salaire>1000) and (age>=40 implies salaire>2000) if age<40 then salaire > 1000 else salaire > 2000 endif salaire > (if age<40 then 1000 else 2000 endif) nom= nom.substring(1,1).toUpper().concat( nom.substring(2,nom.size()).toLower()) épouse->notEmpty() implies épouse.sexe = Sexe::Feminin Set { 3, 5, 2, 45, 5 }->size() Sequence { 1, 2, 45, 9, 3, 9 } ->count(9) Sequence { 1, 2, 45, 2, 3, 9 } ->includes(45) Bag { 1, 9, 9, 1 } -> count(9) c->asSet()->size() = c->size() c->count(x) = 0 Bag { 1, 9, 0, 1, 2, 9, 1 } -> includesAll( Bag{ 9,1,9} ) self.enfants ->select( age>10 and sexe = Sexe::Masculin) self.enfants ->reject(enfants->isEmpty())->notEmpty() membres->any(titre='président') self.employé->select(age > 50) self.employé->select( p | p.age>50 ) self.employé->select( p : Personne | p.age>50) self.enfants->forall(age<10) self.enfants->exists(sexe=Sexe::Masculin) self.enfants->one(age>=18) self.enfants->forall( age < self.age ) self.enfants->forall( e | e.age < self.age - 7) self.enfants->forall( e : Personne | e.age < self.age - 7) self.enfants->exists( e1,e2 | e1.age = e2.age ) self.enfants->forall( e1,e2 : Personne | e1 <> e2 implies e1.prénom <> e2.prénom) self.enfants -> isUnique ( prénom ) self.enfants->collect(age) = Bag{10,5,10,7} self.employés->collect(salaire/10)->sum() self.enfants.enfants.voitures enfants.enfants.prénom = Bag{ 'pierre', 'paul', 'marie', 'paul' } enfants->collectNested(enfants.prénom) = Bag { Bag{'pierre', 'paul'}, Bag{'marie','paul'} Sequence{1..s->size()-1} -> forall(i | s.at(i) < s.at(i+1) ) enfants->sortedBy( age ) enfants->sortedBy( enfants->size() )->last() let ages = enfants.age->sortedBy(a | a) in ages.last() - ages.first() s.Emploi p.Emploi s.Emploi->collect(salaire)->sum() s.Emploi.salaire->forall(x | x>500) p.Evaluation[chefs] p.Evaluation[employés] p.Evaluation[chefs].note -> sum() / p.chefs->size() s.Emploi-> select(salaire<1000).employé p.enfants->select(oclIsKindOf(Femme)).asTypeOf(Set(Femme)) ->select(nomDeJF <> nom) Personne.allInstances->size() < 500 Personne.allInstances->forall(p1,p2 | p1<>p2 implies p1.numsecu <> p2.numsecu) Personne.allInstances->isUnique(numsecu)