|
|
(90 intermediate revisions by 5 users not shown) |
Line 1: |
Line 1: |
| == General operators ==
| | OCL operators define constraints and operations on objects in an object-oriented programming language like Java, C++, or C#. They are also used in OCL expressions to specify constraints on objects or perform operations on object properties. |
| To find all available you can open the OCL-Editor and type in a class:
| |
|
| |
|
| [[File:Ocl-editor 1.png|frameless|433x433px|link=https://wiki.mdriven.net/index.php/File:Ocl-editor_1.png]]
| | For example, let's say we have a class called "Person" with properties like: "name," "age," and "gender." We can use OCL operators to define constraints on the properties of the "Person" class. Here are some examples: |
| {| class="wikitable"
| | # To define a constraint that ensures that the "age" property of a "Person" object is greater than or equal to 18, we can use the greater than or equal to (>=) operator as follows: <code>context Person: self.age >= 18</code> |
| !Operators
| | # To define a constraint that ensures that the "gender" property of a "Person" object is either "Male" or "Female," we can use the OR (||) operator as follows: <code>context Person: self.gender = 'Male' or self.gender = 'Female'</code> |
| !Description
| | # To define a constraint that ensures that the "name" property of a "Person" object starts with an uppercase letter, we can use the dot notation (.) and the regular expression operator (matches) as follows: <code>context Person: self.name.matches('^[A-Z]')</code> |
| |-
| | In addition to defining constraints, OCL operators can also perform operations on object properties. For example, we can use the sum() operator to calculate the sum of all the elements in a collection property of a "Person" object as follows: <code>context Person: self.salary.sum() < 100000</code> |
| |'''[[Allinstances operator|Allinstances]]'''
| |
| |All the objects of the class
| |
| |-
| |
| |'''[[OCLOperators allInstancesAtTime|allinstancesAtTime]]'''
| |
| |All the currently loaded instances
| |
| |-
| |
| |[[OCLOperators allLoadedObjects|allLoadedObjects]]
| |
| |All objects currently in memory, exckluding deleted objects
| |
| |-
| |
| |'''[[OCLOperators allStates|allStates]]'''
| |
| |Meta information about available states in state machines the class may contain
| |
| |-
| |
| |'''[[OCLOperators allSubClasses|allSubClasses]]'''
| |
| |Meta information on all the sub classes this class has
| |
| |-
| |
| |'''[[OCLOperators allSuperTypes|allSuperTypes]]'''
| |
| |Meta information on all the super classes – in inheritance order the class has
| |
| |-
| |
| |[[OCLOperators ASCII|ASCII]]
| |
| |
| |
| |-
| |
| |'''[[OCLOperators associationEnds|associationEnds]]'''
| |
| |Returns a collection of strings with association names for the class
| |
| |-
| |
| |[[OCLOperators associationEndsWithType|associationEndsWithType]]
| |
| |Returns a collection of strings with association names and type information for the class
| |
| |-
| |
| |'''[[OCLOperators asString|Asstring]]'''
| |
| |The string representation of the class – the asString operation is available on everything
| |
| |-
| |
| |[[OCLOperators AsTaJson|asTaJson]]
| |
| |Returns ajson string defined by the ViewModel
| |
| |-
| |
| |[[OCLOperators atTime|atTime]]
| |
| |
| |
| |-
| |
| |'''[[OCLOperators attributes|Attributes]]'''
| |
| |Meta information about what attributes the class has
| |
| |-
| |
| |[[OCLOperators BigEndianUnicode|BigEndianUnicode]]
| |
| |
| |
| |-
| |
| |[[OCLOperators brokenConstraints|brokenConstraints]]
| |
| |Returns a collection of the names of broken constraints for the class and object.
| |
| |-
| |
| |[[OCLOperators canAccess|canAccess]]
| |
| |
| |
| |-
| |
| |'''[[OCLOperators constraints|Contraints]]'''
| |
| |Meta information on what constraints the class has
| |
| |- | |
| |[[OCLOperators count|count]] | |
| |Returns how many times ''object'' is in the collection ''self''.
| |
| |-
| |
| |[[OCLOperators Default|Default]]
| |
| |
| |
| |-
| |
| |'''[[OCLOperators emptyList|emptylist]]'''
| |
| |Returns an empty list typed to hold objects of the class
| |
| |-
| |
| |'''isDirtyMember'''
| |
| |
| |
| |-
| |
| |'''isNull'''
| |
| |
| |
| |-
| |
| |'''[[OCLOperators nullValue|nullValue]]'''
| |
| |A typed null value
| |
| |-
| |
| |'''[[OCLOperators objectfromExternalId|objectFromExternalId]]'''
| |
| |An external identity will be resolved to the object
| |
| |-
| |
| |'''[[OCLOperators oclAsType|oclAsType]]'''
| |
| |The type of the class
| |
| |-
| |
| |[[OCLOperators oclGetStates|oclGetStates]]
| |
| |
| |
| |-
| |
| |'''[[oclIsInvalid]]'''
| |
| |Returns true if ''self'' is equal to *invalid*.
| |
| |-
| |
| |'''[[OCLOperators oclIsKindOf|oclIsKindOf]]'''
| |
| |This is to if a class is a subclass or a the class itself and not unrelated
| |
| |-
| |
| |'''[[OCLOperators oclIsTypeOf|oclIsTypeOf]]'''
| |
| |Returns true if
| |
| |-
| |
| |'''[[OCLOperators oclSingleton|oclSingleton]]'''
| |
| |Classes that implements the Singleton pattern – by setting IsSingleton=true – will return the singleton instance with this operator
| |
| |-
| |
| |[[oclIsUndefined]]
| |
| |Returns true if ''self'' is equal to invalid or null.
| |
| |-
| |
| |'''[[OCLOperators OclType|OclType]]'''
| |
| |
| |
| |-
| |
| |'''safeCast'''
| |
| |
| |
| |-
| |
| |'''superTypes'''
| |
| |
| |
| |-
| |
| |'''[[OCLOperators taggedValue|TaggedValue]]'''
| |
| |Meta information on tagged values set in the class
| |
| |-
| |
| |'''[[OCLOperators taggedValueOnFeature|TaggedValueOnFeature]]'''
| |
| |Meta information on Tagged values set on a named feature in the class
| |
| |-
| |
| |'''[[OCLOperators typename|Typename]]'''
| |
| |The type name as a string
| |
| |-
| |
| |'''[[OCLOperators ViewModels|ViewModels]]'''
| |
| |A tuple with the ViewModels for this class a members
| |
| |}
| |
|
| |
|
| == Collection operators ==
| | OCL operators make it easy to write correct and maintainable object-oriented programs. |
| Once you have a collection of objects there are certain operators that are applicable to it.
| |
|
| |
|
| See this page for [[examples on collection operators]]
| | == Examples of OCL Operators == |
| | |
| Again you can use the OCL-Editor to see what they are:
| |
| | |
| [[File:Collection of objects operators.png|frameless|453x453px|link=https://wiki.mdriven.net/index.php/File:Collection_of_objects_operators.png]]
| |
| {| class="wikitable" | | {| class="wikitable" |
| !Operators
| | |'''Type''' |
| !Description
| | |'''Description''' |
| |-
| |
| |'''[[OCLOperators any|->any]]''' | |
| |Returns any element contained in ''self'' that validates the condition ''expr'', null otherwise. | |
| |-
| |
| |'''[[OCLOperators append|->append]]'''
| |
| |Add another object last
| |
| |-
| |
| |'''[[OCLOperators asBag|->asBag]]'''
| |
| |Collapses to one list
| |
| |-
| |
| |'''[[OCLOperators asSequence|->asSequence]]'''
| |
| |Collapses to one list
| |
| |-
| |
| |'''[[OCLOperators asSet|->asSet]]'''
| |
| |Returns a Set containing all elements of ''self''.
| |
| |-
| |
| |'''[[OCLOperators at|->at]]'''
| |
| |Get the objects at X where the first index is 1
| |
| |-
| |
| |'''[[OCLOperators at0|->at0]]'''
| |
| |Get the objects at X where the first index is 0
| |
| |-
| |
| |'''[[OCLOperators collect|->collect]]'''
| |
| |Returns a collection containing the result of applying ''expr'' on all elements contained in ''self''.
| |
| |-
| |
| |'''[[OCLOperators count|->count]]'''
| |
| |Count how many meet a certain criteria
| |
| |-
| |
| |[[OCLOperators dictionary|'''->dictionary''']]
| |
| |Efficiently looks up values
| |
| |-
| |
| |'''[[OCLOperators difference|->difference]]'''
| |
| |The difference between 2 collections
| |
| |-
| |
| |'''[[OCLOperators excluding|->excluding]]'''
| |
| |The collection except this single object
| |
| |-
| |
| |'''[[OCLOperators exists|->exists]]'''
| |
| |Are there any objects that fulfill the criteria
| |
| |-
| |
| |'''[[OCLOperators filterOnType|->filterOnType]]'''
| |
| |Only keep the ones of a certain type
| |
| |-
| |
| |'''[[OCLOperators first|->first]]'''
| |
| |Return the first object
| |
| |-
| |
| |'''[[OCLOperators forAll|->forAll]]'''
| |
| |Iterate all that fulfills the critera
| |
| |-
| |
| |'''[[OCLOperators groupBy|->groupBy]]'''
| |
| |Build collection of tuples grouped by some aspect
| |
| |-
| |
| |'''[[OCLOperators includes|->includes]]'''
| |
| |Does the collection include the object
| |
| |-
| |
| |'''[[OCLOperators includesAll|->includesAll]]'''
| |
| |Does the collection include the whole other collection
| |
| |-
| |
| |'''[[OCLOperators including|->including]]'''
| |
| |Returns the list with the element in the parameter included.
| |
| |-
| |
| |'''[[OCLOperators indexOf|->IndexOf]]'''
| |
| |The 1 based index of an object in the collection possibly -1 if not existing
| |
| |-
| |
| |'''[[OCLOperators indexOf0|->indexOf0]]'''
| |
| |The 0 based index of an object in the collection possibly -1 if not existing
| |
| |- | | |- |
| |'''[[OCLOperators intersection|->intersection]]''' | | |[https://wiki.mdriven.net/index.php/Category:OCL_General_Operators General Operators] |
| |The intersection of two collections | | |used to manipulate and query objects |
| |- | | |- |
| |'''[[OCLOperators isEmpty|->isEmpty]]''' | | |[https://wiki.mdriven.net/index.php/Category:OCL_Collection_Operators Collection Operators] |
| |Returns true if the collection is empty | | |operators applicable to a collection of objects |
| |- | | |- |
| |'''[[OCLOperators last|->last]]''' | | | [https://wiki.mdriven.net/index.php/Category:OCL_String_Operators String Operators] |
| |Returns the last object in the collection | | |used to manipulate and compare string values |
| |- | | |- |
| |'''[[OCLOperators notEmpty|->notEmpty]]''' | | |[https://wiki.mdriven.net/index.php/Category:OCL_Number_Operators Number Operators] |
| |Returns true of the collection is not empty
| | |used to perform arithmetic and comparison operations on numeric values |
| |-
| |
| |'''[[OCLOperators orderBy|->orderBy]]'''
| |
| |Sorts the collection on one or more properties
| |
| |-
| |
| |'''[[OCLOperators orderDescending|->orderDescending]]'''
| |
| |Sort the from biggest to smallest
| |
| |-
| |
| |'''[[OCLOperators orderGeneric|->orderGeneric]]'''
| |
| |Sorts the list of properties with interchangeable sort order: (expr1, OclSortDirection::ascending, expr2, OclSortDirection::descending...)
| |
| |-
| |
| |'''[[OCLOperators prepend|->prepend]]'''
| |
| |Returns an OrderedSet containing ''object'' followed by all elements of ''self''.
| |
| |-
| |
| |'''[[OCLOperators reject|->reject]]'''
| |
| |Returns the objects not matching the criteria
| |
| |-
| |
| |'''[[OCLOperators select|->select]]'''
| |
| |Returns the objects matching the criteria
| |
| |-
| |
| |'''[[OCLOperators size|->size]]'''
| |
| |Returns the number of elements in the collection
| |
| |-
| |
| |'''[[OCLOperators subSequence|->subsequence]]'''
| |
| |Returns a smaller collection from a start to stop | |
| |-
| |
| |'''[[OCLOperators symmetricDifference|->symmetricDifference]]'''
| |
| |The symmetric difference between the collections; ie all the objects in collection1 or collection2 but not in both
| |
| |-
| |
| |'''[[OCLOperators union|->union]]'''
| |
| |The set of objects in collection1 and objects in collection2
| |
| |}
| |
| | |
| == String operators ==
| |
| {| class="wikitable"
| |
| !Operators
| |
| !Description
| |
| |- | | |- |
| |[[Escape codes]] | | |[https://wiki.mdriven.net/index.php/Category:OCL_Boolean_Operators Boolean Operators] |
| |Escape (special) characters used in OCL | | |used to evaluate and compare Boolean expressions |
| |- | | |- |
| |[[OCLOperators StringToAnsiBase64|StringToAnsiBase64]] | | |[https://wiki.mdriven.net/index.php/Category:OCL_ViewModel_Operators ViewModel Operators](on selfVM variable) |
| |Convert a string to an ANSI (1252) and as a base64 string | | |used to manipulate and interact with data in a ViewModel class of an application. |
| |- | | |- |
| |[[OCLOperators StringToEncodedBase64|StringToEncodedBase64]]
| |
| |Convert a string to a specific encoding and as a base64 string. For example Western Eauropean (ISO) Codepage 28591
| |
| |} | | |} |
|
| |
|
| == Viewmodel operators (on selfVM variable) ==
| | [[Category:OCL]] |
| See page [[SelfVM]]
| |
| [[Category:OCL]] | |
| [[Category:Beginner]] | | [[Category:Beginner]] |
| [[Category:OCLOperators]] | | [[Category:OCLOperators]] |