OCL operations reference

Authors: Laurent Goubet
Contact: laurent.goubet@obeo.fr

Copyright © 2009 Obeo™.

Contents

Ocl operations for Classifier

allInstances () : Set{T}

Returns a Set containing all of the existing instances of the current classifier (along with instances of all its inherited classifiers).

examples:

Expression Result
let a : String = 'a', b : String = 'b', c : Integer = 2 in String.allInstances() Set{'a','b'}

Ocl operations for OclAny

oclIsKindOf( Classifier typespec ) : Boolean

Returns true if the type of self corresponds to the type or supertype of typespec, false otherwise. This operation allows users to check the class hierarchy of self much like would an instanceof Java.

examples:

Expression Result
anEmployee.oclIsKindOf(Employee) true
anEmployee.oclIsKindOf(Person) true
aCat.oclIsKindOf(Person) false
oclIsTypeOf( typespec : Classifier ) : Boolean

Returns true if the type of self is the same as typespec, or false otherwise. This operation allows users to check the exact class type of self.

examples:

Expression Result
anEmployee.oclIsTypeOf(Employee) true
anEmployee.oclIsTypeOf(Person) false
aCat.oclIsTypeOf(Person) false
oclAsType ( typespec : Classifier ) : T

Returns self statically typed as typespec if it is an instance of this type. Note that this does not alter the runtime value of self, it only enables access to subtype operations. This operation allows users to cast self to another type.

examples:

Expression Result
aPerson.oclAsType(Employee) an object of Employee type
oclIsUndefined () : Boolean

Returns true if self is equal to invalid or null.

examples:

Expression Result
let anObject : String = null in anObject.oclIsUndefined() true
let anObject : String = invalid in anObject.oclIsUndefined() true
let anObject : String = 'null' in anObject.oclIsUndefined() false
oclIsInvalid () : Boolean

Returns true if self is equal to invalid.

examples:

Expression Result
let anObject : String = null in anObject.oclIsUndefined() false
let anObject : String = invalid in anObject.oclIsUndefined() true
let anObject : String = 'null' in anObject.oclIsUndefined() false
<> ( object : OclAny ) : Boolean

Returns true if self is a different object from object.

examples:

Expression Result
let a : String = 'a', b : String = 'a' in a <> b false
let a : Integer = 2, b : Real = 2.0 in a <> b false
let a : Integer = -2, b : Integer = 2 in a <> b true
= ( object : OclAny) : Boolean

Returns true if self is equal to object.

examples:

Expression Result
let a : String = 'a', b : String = 'a' in a = b true
let a : Integer = 2, b : Real = 2.0 in a = b true
let a : Integer = -2, b : Integer = 2 in a = b false
< ( object : T ) : Boolean

Returns true if self is comparable to object and less than object.

examples:

Expression Result
let a : Integer = 1, b : Integer = 2 in a < b true
let a : Real = 1.5, b : Integer = 2 in a < b true
let a : String = 'Anteater', b : String = 'Aardvark' in a < b false
> ( object : T ) : Boolean

Returns true if self is comparable to object and greater than object.

examples:

Expression Result
let a : Integer = 1, b : Integer = 2 in a > b false
let a : Real = 1.5, b : Integer = 2 in a > b false
let a : String = 'Anteater', b : String = 'Aardvark' in a > b true
<= ( object : T ) : Boolean

Returns true if self is comparable to object and less than or equal to object.

examples:

Expression Result
let a : Integer = 1, b : Integer = 2 in a <= b true
let a : Real = 1.5, b : Integer = 2 in a <= b true
let a : String = 'Anteater', b : String = 'Aardvark' in a <= b false
>= ( object : T ) : Boolean

Returns true if self is comparable to object and greater than or equal to object.

examples:

Expression Result
let a : Integer = 1, b : Integer = 2 in a >= b false
let a : Real = 1.5, b : Integer = 2 in a >= b false
let a : String = 'Anteater', b : String = 'Aardvark' in a >= b true

Ocl operations for String

A note on Strings : OCL Strings begin at index 1, not 0 as in most languages. Thus 'test'.at(0) fails in invalid whereas 'test'.at(1) yields 't'. Likewise, 'test'.substring(2, 2) returns 'e'.

size () : Integer

Returns the number of characters composing self.

examples:

Expression Result
'size operation'.size() 14
concat ( s : String ) : String

Returns a string containing self followed by s.

examples:

Expression Result
'concat'.concat(' ').concat('operation') 'concat operation'
substring ( lower : Integer, upper : Integer ) : String

Returns a string containing all characters from self starting from index lower up to index upper included. Both lower and upper parameters should be contained between 1 and self.size() included. lower cannot be greater than upper.

examples:

Expression Result
'substring operation'.substring(11, 19) 'operation'
'substring operation'.substring(1, 1) 's'
'substring operation'.substring(0, 1) Ø
toInteger () : Integer

Returns an Integer of value equal to self, or Ø if self does not represent an integer.

examples:

Expression Result
'3.0'.toInteger() Ø
'4'.toInteger() 4
'toInteger'.toInteger() Ø
toReal () : Real

Returns a Real of value equal to self, or Ø if self does not represent a real.

examples:

Expression Result
'3.0'.toReal() 3.0
'4'.toReal() 4.0
'toReal'.toReal() Ø
toLower () : String

Returns self with all characters converted to lowercase.

examples:

Expression Result
'LoWeR OpErAtIoN'.toLower() 'lower operation'
toUpper () : String

Returns self with all characters converted to uppercase.

examples:

Expression Result
'UpPeR OpErAtIoN'.toUpper() 'UPPER OPERATION'

Ocl operations for Number

In addition to the basic math functions (+, -, /, *) are a number of advanced functions. Take note that Number denotes both Integer and Real, and they're substitutive unless otherwise specified.

Number::min ( r : Number ) : Number

Returns the lowest number between self and r.

examples:

Expression Result
6.min(3) 6
6.min(5.2) 5.2
(2.3).min(3) 2.3
(2.3).min(5.2) 2.3
Number::max ( r : Number ) : Number

Returns the greatest number between self and r.

examples:

Expression Result
6.max(3) 6
6.max(5.2) 6.0
(2.3).max(3) 3.0
(2.3).max(5.2) 5.2
Number::abs () : Number

Returns the absolute value of self, self if it is already a positive number.

examples:

Expression Result
(-2.3).abs() 2.3
-5.abs() 5
Number::round () : Integer

Returns the nearest integer to self if it is a Real, self if it is an Integer.

examples:

Expression Result
(2.3).round() 2
(2.5).round() 3
(2.8).round() 3
2.round() 2
Number::floor () : Integer

Returns the integer part of self if it is a Real, self if it is an Integer.

examples:

Expression Result
(2.3).floor() 2
(2.8).floor() 2
2.floor() 2
Integer::div ( i : Integer ) : Integer

Returns the integer quotient of the division of self by i.

examples:

Expression Result
3.div(2) 1
11.div(3) 3
Integer::mod ( i : Integer ) : Integer

Returns the integer remainder of the division of self by i.

examples:

Expression Result
3.mod(2) 1
11.mod(3) 2

Ocl operations for Collection

Take note that collections in OCL can contain the null value (null) but not the invalid value (Ø). Trying to add Ø within a new or existing collection will yield Ø as a result. OCL proposes four distinct kind of collections offering all possibilities of ordering/unicity.

Collection type Ordered Unique
Sequence true false
OrderedSet true true
Bag false false
Set false true
count ( object : T ) : Integer

Returns how many times object is in the collection self.

examples:

Expression Result
Sequence{2.3, 5.2}->count(5.2) 1
Set{3, 'test', 4.0, 4, 4.0, 'test'}->count(null) 0
Set{3, null, 4.0, null, 'test'}->count(null) 1
Bag{3, null, 4.0, null, 'test'}->count(null) 2
excludes ( object : T ) : Boolean

Returns true if object is not contained in self, false otherwise.

examples:

Expression Result
Sequence{2.3}->excludes(2.1) true
Sequence{2.0}->excludes(2) false
excludesAll ( c2 : Collection(T) ) : Boolean

Returns true if no element of c2 is contained in self, false otherwise.

examples:

Expression Result
Sequence{2.3, 5.2, 'a', 3, null}->excludesAll(Set{4, null}) false
Sequence{2.3, 5.2, 'a', 3}->excludesAll(Set{4, null}) true
includes ( object : T ) : Boolean

Returns true if object is contained in self, false otherwise.

examples:

Expression Result
Sequence{2.3}->includes(2.1) false
Sequence{2.0}->includes(2) true
includesAll ( c2 : Collection(T) ) : Boolean

Returns true if all element of c2 are contained in self, false otherwise.

examples:

Expression Result
Sequence{2.3, 5.2, 'a', 3, null}->includesAll(Set{3, null}) true
Sequence{2.3, 5.2, 'a', 3}->includesAll(Set{3, null}) false
isEmpty () : Boolean

Returns true if self is empty, false otherwise.

examples:

Expression Result
Sequence{2, 'a'}->isEmpty() false
Sequence{null}->isEmpty() false
Sequence{}->isEmpty() true
notEmpty () : Boolean

Returns true if self contains at least one element, false otherwise.

examples:

Expression Result
Sequence{2, 'a'}->notEmpty() true
Sequence{null}->notEmpty() true
Sequence{}->notEmpty() false
product ( c2 : Collection(T2) ) : Set(Tuple(first : T, second : T2))

Returns a Set of Tuples which represents the cartesian product of self with c2.

examples (notation of the tuples has been simplified):

Expression Result
Sequence{3, 4}->product(Bag{3.0, 4.0}) Set{Tuple{3, 3.0}, Tuple{3, 4.0}, Tuple{4, 3.0}, Tuple{4, 4.0}}
Set{3, 4}->product(OrderedSet{3.0, 4.0}) Set{Tuple{3, 3.0}, Tuple{3, 4.0}, Tuple{4, 3.0}, Tuple{4, 4.0}}
size () : Boolean

Returns the number of elements contained in self.

examples:

Expression Result
Sequence{2.3, 5}->size() 2
Sequence{}->size() 0
sum () : Real

Returns the sum of all elements contained in self if they support the '+' operation.

examples:

Expression Result
Sequence{2.3, 5.2} in c->sum() 7.5
Sequence{2, 4} in c->sum() 6
Sequence{2, '4'} in c->sum() Ø
exists ( expr : OclExpression ) : Boolean

Returns true if at least one element in self validates the condition expr, false otherwise. The evaluation is shortcut as soon as one element validating expr is found.

examples:

Expression Result
Sequence{2.3, 5.2}->exists(self > 3) true
forAll ( expr : OclExpression ) : Boolean

Returns true if the elements contained in self all validate the condition expr, false otherwise.

examples:

Expression Result
Sequence{2.3, 5.2}->forAll(self > 3) false
Sequence{2.3, 5.2}->forAll(self > 1.2) true
isUnique ( expr : OclExpression ) : Boolean

Returns true if all elements contained in self evaluate to a distinct value for expr.

examples:

Expression Result
Sequence{2.3, 5.2}->isUnique(self > 3) true
Sequence{2.3, 5.2}->isUnique(self > 1) false
one ( expr : OclExpression ) : Boolean

Returns true if there is only one element contained in self that validates the condition expr, false otherwise.

examples:

Expression Result
Sequence{1.2, 2.3, 5.2, 0.9}->one(self < 1) true
Sequence{1.2, 2.3, 5.2, 0.9}->one(self < 2) false
any ( expr : OclExpression ) : T

Returns any element contained in self that validates the condition expr, null otherwise. Evaluation is shortcut as soon as an element validating expr is found. Note that the result of this on unordered collections will be random if more than one element validates expr.

examples:

Expression Result
Sequence{1.2, 2.3, 5.2, 0.9}->any(self < 1) 0.9
Sequence{1.2, 2.3, 5.2, 0.9}->any(self < 2) 1.2
collect ( expr : OclExpression ) : Collection(T2)

Returns a collection containing the result of applying expr on all elements contained in self.

examples:

Expression Result
Sequence{'first', 'second'}->collect(toUpper()) Sequence{'FIRST', 'SECOND'}
collectNested ( expr : OclExpression ) : Collection(T2)

Returns a collection containing all the elements contained in self on which we applied the OclExpression expr. The results won't be flattened. The type of the resulting collection depends on the type of self.

examples:

For the purpose of these examples we'll assume here that we have a Class Person with a reference children. Our model contains two persons such as person1.children = {James, Jane} and person2.children = {John}.

Expression Result
self.persons->collectNested(children.firstname) Sequence{Sequence{James, Jane}, Sequence{John}}
flatten () : Collection(T2)

Returns a collection containing all elements of self recursively flattened. Note : at the time of writing, the OCL standard library sports a bug which changes OrderedSets in Sets when flattening.

examples:

Expression Result
Sequence{Set{1, 2, 3}, Sequence{2.0, 3.0}, Bag{'test'}}->flatten() Sequence{1, 2, 3, 2.0, 3.0, 'test'}
Bag{Set{Bag{'test', 2, 3.0}}, Sequence{OrderedSet{2.0, 3, 1}}}->flatten() Bag{1, 2, 3, 2.0, 3.0, 'test'}
OrderedSet{Set{Bag{'test', 2, 3.0}}, Sequence{Set{2.0, 3, 1}}}->flatten() Set{3.0, 2, 1, 3, 'test', 2.0}
Set{Set{Bag{'test', 2, 3.0}}, Sequence{OrderedSet{2.0, 3, 1}}}->flatten() Set{3.0, 2, 1, 3, 'test', 2.0}
including ( object : T ) : Collection(T)

Returns a collection containing all elements of self followed by object. Note : at the time of writing, the OCL standard library sports a bug which changes OrderedSets in Sets when including elements.

examples:

Expression Result
Sequence{'a', 'b'}->including('c') Sequence{'a', 'b', 'c'}
Bag{'a', 'b'}->including('c') Bag{'a', 'c', 'b'}
OrderedSet{'a', 'b'}->including('c') Set{'a', 'c', 'b'}
Set{'a', 'b'}->including('c') Set{'a', 'c', 'b'}
excluding ( object : T ) : Collection(T)

Returns a collection containing all elements of self minus all occurences of object. Note : at the time of writing, the OCL standard library sports a bug which changes OrderedSets in Sets when excluding elements.

examples:

Expression Result
Sequence{'b', 'a', 'b', 'c'}->excluding('b') Sequence{'a', 'c'}
Bag{'b', 'a', 'b', 'c'}->excluding('b') Bag{'c', 'a'}
OrderedSet{'b', 'a', 'b', 'c'}->excluding('b') Set{'c', 'a'}
Set{'b', 'a', 'b', 'c'}->excluding('b') Set{'c', 'a'}
select ( expr : OclExpression ) : Collection(T)

Returns a collection with all elements of self that validate the OclExpression expr.

examples:

Expression Result
Sequence{1, 2, 3}->select(i : Integer | i > 1) Sequence{2, 3}
Bag{1, 2, 3}->select(i : Integer | i > 1 ) Bag{3, 2}
OrderedSet{1, 2, 3}->select(i : Integer | i > 1 ) OrderedSet{2, 3}
Set{1, 2, 3}->select(i : Integer | i > 1 ) Set{3, 2}
reject ( expr : OclExpression ) : Collection(T)

Returns a collection with all elements of self except for those who validate the OclExpression expr.

examples:

Expression Result
Sequence{1, 2, 3}->reject(i : Integer | i > 1 ) Sequence{1}
Bag{1, 2, 3}->reject(i : Integer | i > 1 ) Bag{1}
OrderedSet{1, 2, 3}->reject(i : Integer | i > 1 ) OrderedSet{1}
Set{1, 2, 3}->reject(i : Integer | i > 1 ) Set{1}
sortedBy ( expr : OclExpression ) : Sequence(T)

Returns a sorted collection containing all elements from self sorted in accordance with the OclExpression expr. This can be used on all kind of collections yet will always yield a Sequence-typed result except for OrderedSet which returns an OrderedSet.

examples:

For the purpose of these examples we'll assume here that we have a Class Employee with an attribute age. Our model contains two employees such as employee1.age = 24 and employee2.age = 27.

Expression Result
self.employees->sortedBy(age) Sequence{employee1, employee2}
asBag () : Bag(T)

Returns a Bag containing all elements of self.

examples:

Expression Result
Sequence{'3', 1, 2.0, '3'}->asBag() Bag{2.0, '3', 1, '3'}
Bag{1, 2.0, '3'}->asBag() Bag{2.0, 1, '3'}
OrderedSet{1, 2.0, '3'}->asBag() Bag{2.0, 1, '3'}
OrderedSet{1, 1, 2.0, '3'}->asBag() Bag{'3', 1, 2.0}
Set{1, 2.0, '3'}->asBag() Bag{2.0, 1, '3'}
Set{1, 1, 2.0, '3'}->asBag() Bag{2.0, '3', 1}
asSet () : Set(T)

Returns a Set containing all elements of self.

examples:

Expression Result
Sequence{1, 2.0, '3'}->asSet() Set{1, '3', 2.0}
Sequence{1, 1, 2.0, '3'}->asSet() Set{'3', 1, 2.0}
Bag{1, 2.0, '3'}->asSet() Set{2.0, 1, '3'}
Bag{1, 1, 2.0, '3'}->asSet() Set{1, '3', 2.0}
OrderedSet{1, 2.0, '3'}->asSet() Set{1, '3', 2.0}
OrderedSet{1, 1, 2.0, '3'}->asSet() Set{'3', 1, 2.0}
Set{1, 2.0, '3'}->asSet() Set{2.0, 1, '3'}
Set{1, 1, 2.0, '3'}->asSet() Set{'3', 1, 2.0}
asSequence () : Boolean

Returns a Sequence containing all elements of self. Element ordering is preserved when possible.

examples:

Expression Result
Sequence{1, 2.0, '3'}->asSequence() Sequence{1, 2.0, '3'}
Bag{1, 2.0, '3'}->asSequence() Sequence{2.0, 1, '3'}
OrderedSet{1, 2.0, '3'}->asSequence() Sequence{1, 2.0, '3'}
Set{1, 2.0, '3'}->asSequence() Sequence{'3', 1, 2.0}
asOrderedSet () : OrderedSet(T)

Returns an OrderedSet containing all elements of self. Element ordering is preserved when possible.

examples:

Expression Result
Sequence{1, 2.0, '3'}->asOrderedSet() OrderedSet{1, '3', 2.0}
Sequence{1, 1, 2.0, '3'}->asOrderedSet() OrderedSet{'3', 1, 2.0}
Bag{1, 2.0, '3'}->asOrderedSet() OrderedSet{2.0, 1, '3'}
Bag{1, 1, 2.0, '3'}->asOrderedSet() OrderedSet{1, '3', 2.0}
OrderedSet{1, 2.0, '3'}->asOrderedSet() OrderedSet{1, 2.0, '3'}
Set{1, 2.0, '3'}->asOrderedSet() OrderedSet{'3', 1, 2.0}

Ocl operations for Sequence

= ( seq : Sequence(T) ) : Boolean

Returns true if self contains the very same objects as seq in the very same order as they are in seq.

examples:

Expression Result
Sequence{4, 5, 'test'} = Sequence{4, 5, 'test'} true
Sequence{4, 5, 'test'} = Sequence{4, 'test', 5} false
Sequence{4, 5, 'test', 5} = Sequence{4, 5, 'test'} false
<> ( seq : Sequence(T) ) : Boolean

Returns true if self does not contain the same objects as seq, or if these objects are not in the same order as they are in seq.

examples:

Expression Result
Sequence{4, 5, 'test'} = Sequence{4, 5, 'test'} false
Sequence{4, 5, 'test'} = Sequence{4, 'test', 5} true
Sequence{4, 5, 'test', 5} = Sequence{4, 5, 'test'} true
union ( seq : Sequence(T) ) : Sequence(T)

Returns a Sequence containing all elements of self followed by all elements of seq.

examples:

Expression Result
Sequence{'a', 'b', 'a'}->union(Sequence{'b', 'c'}) Sequence{'a', 'b', 'a', 'b', 'c'}
append ( object : T ) : Sequence(T)

Returns a Sequence containing all elements of self followed by object.

examples:

Expression Result
Sequence{'a', 'b'}->append('c') Sequence{'a', 'b', 'c'}
prepend ( object : T ) : Sequence(T)

Returns a Sequence containing object followed by all elements of self .

examples:

Expression Result
Sequence{'a', 'b'}->prepend('c') Sequence{'c', 'a', 'b'}
insertAt ( index : Integer, object : T) : Sequence(T)

Returns a Sequence containing self with object inserted at the index position.

examples:

Expression Result
Sequence{'a', 'b'}->insertAt(0, 'c') Ø
Sequence{'a', 'b'}->insertAt(1, 'c') Sequence{'c', 'a', 'b'}
Sequence{'a', 'b'}->insertAt(3, 'c') Sequence{'a', 'b', 'c'}
Sequence{'a', 'b'}->insertAt(4, 'c') Ø
subSequence ( startIndex : Integer, endIndex : Integer ) : Sequence(T)

Returns a Sequence containing all elements of self between the positions 'startIndex' and 'endIndex'.

examples:

Expression Result
Sequence{'a', 'b', 'c', 'd'}->subSequence(2, 3) Sequence{'b', 'c'}
Sequence{'a', 'b', 'c', 'd'}->subSequence(4, 4) Sequence{'d'}
at ( index : Integer ) : T

Returns the element of self at the index position.

examples:

Expression Result
Sequence{'a', 'b'}->at(1) a
indexOf ( object : T ) : Integer

Returns the position of object in sequence self.

examples:

Expression Result
Sequence{'a', 'b'}->indexOf('a') 1
first () : T

Returns the first element of self.

examples:

Expression Result
Sequence{1, 2.0, '3'}->first() 1
last () : T

Returns the last element of self.

examples:

Expression Result
Sequence{1, 2.0, '3'}->last() '3'

Ocl operations for Bag

= ( bag : Bag(T) ) : Boolean

Returns true if self contains the same objects as bag in the same quantities.

examples:

Expression Result
Bag{4, 5, 'test', 4} = Bag{4, 'test', 5, 4} true
Bag{4, 5, 'test'} = Bag{4, 'test', 5} true
Bag{4, 5, 'test', 5} = Bag{4, 5, 'test'} false
<> ( bag : Bag(T) ) : Boolean

Returns true if self does not contain the same objects as bag in the same quantities.

examples:

Expression Result
Bag{4, 5, 'test'} = Bag{4, 5, 'test'} false
Bag{4, 5, 'test'} = Bag{4, 'test', 5} false
Bag{4, 5, 'test', 5} = Bag{4, 5, 'test'} true
union ( bag : Bag(T) ) : Bag(T)

Returns a Bag containing all elements of self and all elements of bag.

examples:

Expression Result
Bag{'a', 'b', 'a'}->union(Bag{'b', 'c'}) Bag{'b', 'a', 'b', 'a', 'c'}
union ( set : Set(T) ) : Bag(T)

Returns a Bag containing all elements of self and all elements of set.

examples:

Expression Result
Bag{'a', 'b', 'a'}->union(Set{'b', 'c'}) Bag{'b', 'c', 'a', 'b', 'a'}
intersection ( bag : Bag(T) ) : Bag(T)

Returns a Bag containing all elements of self that are also contained by bag.

examples:

Expression Result
Bag{'a', 'b', 'a'}->intersection(Bag{'a', 'b'}) Bag{'a', 'b'}
Bag{'a', 'b', 'a', 'b'}->intersection(Bag{'a', 'b', 'b'}) Bag{'b', 'a', 'b'}
intersection ( set : Set(T) ) : Set(T)

Returns a Set containing all elements of self that are also contained by set.

examples:

Expression Result
Bag{'a', 'b', 'a'}->intersection(Set{'a', 'b', 'c'}) Set{'a', 'b'}

Ocl operations for OrderedSet

= ( set : Set(T) ) : Boolean

Returns true if self contains the same objects as set.

examples:

Expression Result
OrderedSet{3, 5, 4} = Set{3, 5, 4} true
OrderedSet{3, 5, 4} = Set{4, 3, 5, 4, 4} true
OrderedSet{3, 5, 4} = Set{2, 5 ,4, 4} false
= ( orderedset : OrderedSet(T) ) : Boolean

Returns true if self contains the same objects as orderedset regardless of element ordering.

examples:

Expression Result
OrderedSet{3, 5, 4} = OrderedSet{3, 5, 4} true
OrderedSet{4, 5, 'test', 5} = OrderedSet{4, 5, 'test'} true
OrderedSet{4, 5, 'test'} = OrderedSet{4, 'test', 5} true
OrderedSet{4, 5, 'test'} = OrderedSet{4, 'test'} false
<> ( set : Set(T) ) : Boolean

Returns true if self does not contain the same objects as set.

examples:

Expression Result
OrderedSet{4, 5, 'test', 4} <> Set{4, 5, 'test'} false
OrderedSet{4, 5, 'test', 4} <> Set{4, 'test', 5, 4} false
OrderedSet{4, 5, 'test', 4} <> Set{4, 5, 'test', 2} true
<> ( orderedset : OrderedSet(T) ) : Boolean

Returns true if self does not contain the same objects as orderedset.

examples:

Expression Result
OrderedSet{4, 5, 'test', 4} <> OrderedSet{4, 5, 'test') false
OrderedSet{4, 5, 'test', 4} <> OrderedSet{4, 'test', 5, 4} false
OrderedSet{4, 5, 'test', 4} <> OrderedSet{4, 5, 'test', 2} true
union ( bag : Bag(T) ) : Bag(T)

Returns a Bag containing all elements of self followed by all elements of bag.

examples:

Expression Result
OrderedSet{'a', 'b', 'a'}->union(Bag{'b', 'c'}) Bag{'a', 'c', 'b', 'b'}
union ( set : Set(T) ) : Set(T)

Returns a Set containing all elements of self followed by all elements of set.

examples:

Expression Result
OrderedSet{'a', 'b', 'a'}->union(Set{'b', 'c'}) Set{'a', 'c', 'b'}
- ( set : Set(T) ) : Set(T)

Returns a Set containing all elements of self minus all elements of set.

examples:

Expression Result
OrderedSet{'a', 'b', 'c'} - Set{'c', 'a'} Set{'b'}
intersection ( bag : Bag(T) ) : Set(T)

Returns a Set containing all elements of self that are also contained by bag.

examples:

Expression Result
OrderedSet{'a', 'b', 'a'}->intersection(Bag{'a', 'b'}) Set{'a', 'b'}
intersection ( set : Set(T) ) : Set(T)

Returns a Set containing all elements of self that are also contained by set.

examples:

Expression Result
OrderedSet{'a', 'b', 'a'}->intersection(Set{'a', 'b'}) Set{'b', 'a'}
symmetricDifference ( set : Set(T) ) : Set(T)

Returns a Set containing all of the elements of self and set that are not present in both.

examples:

Expression Result
OrderedSet{'b', 'a', 'b', 'c'}->symmetricDifference(Set{'a', 'c', 'd'}) Set{'d', 'b'}
append ( object : T ) : OrderedSet(T)

Returns an OrderedSet containing all elements of self followed by object.

examples:

Expression Result
OrderedSet{'a', 'b'}->append('c') OrderedSet{'a', 'b', 'c'}
at ( index : Integer ) : T

Returns the element of self located at position index in the collection.

examples:

Expression Result
OrderedSet{'a', 'b'}->at(1) 'a'
indexOf ( object : T ) : Integer

Returns the position of object in self.

examples:

Expression Result
OrderedSet{'a', 'b'}->indexOf('a') 1
insertAt ( index : Integer, object : T ) : OrderedSet(T)

Returns an OrderedSet containing self with object inserted at the index position.

examples:

Expression Result
OrderedSet{'a', 'b'}->insertAt(1, 'c') OrderedSet{'c', 'a', 'b'}
OrderedSet{'a', 'b'}->insertAt(3, 'c') OrderedSet{'a', 'b', 'c'}
prepend ( object : T ) : OrderedSet(T)

Returns an OrderedSet containing object followed by all elements of self.

examples:

Expression Result
OrderedSet{'a', 'b'}->prepend('c') OrderedSet{'c', 'a', 'b'}
subOrderedSet ( startIndex : Integer, endIndex : Integer ) : OrderedSet(T)

Returns an OrderedSet containing all elements of self between the positions startIndex and endIndex.

examples:

Expression Result
OrderedSet{'a', 'b', 'c', 'd'}->subOrderedSet(2, 3) OrderedSet{'b', 'c'}
OrderedSet{'a', 'b', 'c', 'd'}->subOrderedSet(4, 4) OrderedSet{'d'}
first () : T

Returns the first element of self.

examples:

Expression Result
OrderedSet{1, 2.0, '3'}->first() 1
last () : T

Returns the last element of self.

examples:

Expression Result
OrderedSet{1, 2.0, '3'}->last() '3'

Ocl operations for Set

= ( set : Set(T) ) : Boolean

Returns true if self contains the same objects as set.

examples:

Expression Result
Set{3, 5, 4} = Set{3, 5, 4} true
Set{3, 5, 4} = Set{3, 4, 4, 5} true
Set{3, 5, 4} = Set{2, 3, 5, 4} false
<> ( set : Set(T) ) : Boolean

Returns true if self does not contain the same objects as set.

examples:

Expression Result
Set{4, 5, 'test', 4} <> Set{4, 5, 'test'} false
Set{4, 5, 'test', 4} <> Set{5, 4, 'test', 4} false
Set{4, 5, 'test', 4} <> Set{4, 'test', 5, 2} true
- ( set : Set(T) ) : Set(T)

Returns a Set containing all elements of self minus all elements of set.

examples:

Expression Result
Set{'a', 'b', 'c'} - Set{'c', 'a'} Set{'b'}
union ( bag : Bag(T) ) : Bag(T)

Returns a Bag containing all elements of self and all elements of bag.

examples:

Expression Result
Set{'a', 'b', 'a'}->union(Bag{'b', 'c'}) Bag{'a', 'c', 'b', 'b'}
union ( set : Set(T) ) : Set(T)

Returns a Set containing all elements of self and all elements of set.

examples:

Expression Result
Set{'a', 'b', 'a'}->union(Set{'b', 'c'}) Set{'a', 'c', 'b'}
intersection ( bag : Bag(T) ) : Set(T)

Returns a Bag containing all elements of self that are also contained in bag.

examples:

Expression Result
Set{'a', 'b', 'a'}->intersection(Bag{'a', 'b', 'c'}) Set{'a', 'b'}
intersection ( set : Set(T) ) : Set(T)

Returns a Set containing all elements of self that are also contained in set.

examples:

Expression Result
Set{'a', 'b', 'a'}->intersection(Set{'a', 'b', 'c'}) Set{'b', 'a'}
symmetricDifference ( set : Set(T) ) : Set(T)

Returns a Set containing all of the elements of self and set that are not present in both.

examples:

Expression Result
Set{'b', 'a', 'b', 'c'}->symmetricDifference(Set{'a', 'c', 'd'}) Set{'b', 'd'}

Ocl operations for Boolean

  1. Operation OR

    Or

    true

    false

    Ø

    true

    true

    true

    true

    false

    true

    false

    Ø

    Ø

    true

    Ø

    Ø

  2. Operation AND

    And

    true

    false

    Ø

    true

    true

    false

    true

    false

    false

    false

    false

    Ø

    Ø

    false

    Ø

  3. Operation XOR

    Xor

    true

    false

    Ø

    true

    false

    true

    Ø

    false

    true

    false

    Ø

    Ø

    Ø

    Ø

    Ø

  4. Operation IMPLIES

    Implies

    true

    false

    Ø

    true

    true

    false

    Ø

    false

    true

    true

    true

    Ø

    true

    Ø

    Ø

  5. Operation NOT

    Not

    Result

    true

    false

    false

    true

    Ø

    Ø

Glossary

invalid
invalid is the singleton instance of the OCLInvalid type. It is returned whenever an evaluation fails, whatever the cause. Referred to as Ø in this guide.
Ø
See invalid.