This is a draft cheat sheet. It is a work in progress and is not finished yet.
Examples For OCL USE:
-context Person inv:
Wife->notEmpty() implies
(wife.gender=Gender::female and self.gender=Gender::male)
-Collection->size() : Integer, is equal to:
collection –> iterate(elem; acc : Integer = 0 | acc + 1)
-Collection->includes(object : OclAny) : Boolean , is equal to:
(collection->count(object)>0)
-Collection->exists(expr : OclExpression) : Boolean, is equal to:
collection->iterate(elem; acc : Boolean = false | acc or expr)
-context c : Company inv:
c.numberOfEmployees > 50
-context c : Company inv enoughEmployees:
c.numberOfEmployees > 50
-context Typename::operationName(param1 : Type1, ... ): ReturnType
pre : param1 > ...
post: result = ...
-context Person::income(d : Date) : Integer
post: result = 5000
-context Person inv:
self.wife->notEmpty() implies self.wife.age >= 18 and
self.husband->notEmpty() implies self.husband.age >= 18
|
OCL - OPERATORS
גרירה לוגית |
A implies B |
Boolean operators |
and , or , xor , not , if-then-else |
Integer operators |
* , + , - , / , > , < .. |
Real operators |
* , + , - , / , > , < .. |
String operators |
toUpper , toLower , concat , size .. |
OCL - FUNCTIONS
self.oclIsTypeOf(T) |
true iff self is of type T |
self.oclIsKindOf(T) |
true iff self is of type T or subtype of T |
Self.oclAsType(T) |
casts 'self' to type T |
T.allInstances |
collection of all created instances of type T |
|
|
OCL - FUNCTIONS
אוסף ריק |
isEmpty() |
אוסף לא ריק |
NotEmpty() |
קיים לפחות איבר אחד באוסף המקיים את התנאי |
exists ( e:T | <b.e.>) |
כל האיברים באוסף מקיימים את התנאי |
forAll ( e:T* | <b.e.>) |
האיבר לא שייך לאוסף |
excludes( object ) |
האיבר שייך לאוסף |
includes( object ) |
אוסף שתיים מוכל באוסף הנ"ל |
includesAll ( collection_2 ) |
מחזיר את ספירת מופעי האובייקט באוסף |
count ( object1 ) |
מחזיר את גודל האוסף |
size () |
מחזיר את סכום האיברים באוסף אם הם תומכים בחיבור |
sum () |
מחזיר אוסף של כל האיברים העומדים בתנאי הנתון |
select ( e:T | <b.e.>) |
מחזיר את האוסף הנ"ל ללא כל האיברים העומדים בתנאי |
reject ( e:T | <b.e.>) |
מחזיר את אוסף תוצאת מיפוי כל האיברים לפי הביטוי הנתון |
collect ( e:T | <v.e.>) |
מעבר על האוסף עם ערך התחלתי נתון ועדכונו לפי כל איבר לפי הביטוי הנתון |
iterate ( e:T1; r:T2 = <v.e.> | <v.e.>) |
מחזיר קבוצה ללא חזרות של האוסף |
asSet() |
All functions should start with <collection>→<function_name>
Collection Types
- set : the mathematical set.
It is not ordered and does not contain duplicate elements.
-bag : A container.
It is not ordered and contain duplicate elements.
-sequence : An container.
It is ordered and contain duplicate elements. |
|