Methods
No edit summary
(Replacing message template with parser tag)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<message>Write the content here to display this box</message>
You may define methods in classes and implement these with OCL:
You may define methods in classes and implement these with OCL:


[[File:My method.png|frameless|419x419px]]
[[File:My method.png|frameless|419x419px]]


You will do this in the OCL implementation in the Body-property:
Do this in the OCL implementation in the Body-property:


[[File:Method ocl.png|frameless|411x411px]]
[[File:Method ocl.png|frameless|411x411px]]


Notice that since this was a method, MDriven will treat your OCL as EAL – something that has side effects. In this case, our method does not have any side effects and we may want to be able to use this method in OCL, but trying to use it in OCL will not succeed. Methods with side effects are not recognized by OCL. There is a flag on the Method definition called IsQuery and if this is set, we “promise” that it does not have intentional side effects. Now it is seen by OCL:
Notice that since this was a method, MDriven will treat your OCL as EAL – something that has side effects. In this case, our method does not have any side effects and you may want to be able to use this method in OCL, but trying to use it in OCL will not succeed. Methods with side effects are not recognized by OCL. There is a flag on the Method definition called IsQuery and if this is set, we “promise” that it does not have intentional side effects. Now it is seen by OCL:


[[File:Method ocl2.png|frameless|415x415px]]
[[File:Method ocl2.png|frameless|415x415px]]


We can then use our IsQuery method in any expression in OCL. Thing.allinstances- >select(x|x.MyMethod(x.SomeInt))
We can then use our IsQuery method in any expression in OCL. '''Thing.allinstances- >select(x|x.MyMethod(x.SomeInt))'''


==== Parameters and Return Types ====
==== Parameters and Return Types ====
You give parameters and return types in this format:
Give parameters and return types in this format:
  SomeMethod(myparam:String):String
  SomeMethod(myparam:String):String
   
   
Line 23: Line 24:
  SomeMethodThatReturnsList(myparam:String,SomeOtherParam:Integer,aListOfValue:Collection(String)):Collection(String)
  SomeMethodThatReturnsList(myparam:String,SomeOtherParam:Integer,aListOfValue:Collection(String)):Collection(String)
  SomeMethodThatReturnsList(myparam:String,SomeOtherParam:Integer,aListOfValue:Collection(SomeClass)):Collection(SomeClass)
  SomeMethodThatReturnsList(myparam:String,SomeOtherParam:Integer,aListOfValue:Collection(SomeClass)):Collection(SomeClass)
  [[Category:OCL]]
[[Category:OCL]]
{{Edited|July|12|2024}}

Latest revision as of 07:46, 17 June 2024

You may define methods in classes and implement these with OCL:

My method.png

Do this in the OCL implementation in the Body-property:

Method ocl.png

Notice that since this was a method, MDriven will treat your OCL as EAL – something that has side effects. In this case, our method does not have any side effects and you may want to be able to use this method in OCL, but trying to use it in OCL will not succeed. Methods with side effects are not recognized by OCL. There is a flag on the Method definition called IsQuery and if this is set, we “promise” that it does not have intentional side effects. Now it is seen by OCL:

Method ocl2.png

We can then use our IsQuery method in any expression in OCL. Thing.allinstances- >select(x|x.MyMethod(x.SomeInt))

Parameters and Return Types

Give parameters and return types in this format:

SomeMethod(myparam:String):String

SomeMethod(myparam:String,SomeOtherParam:Integer):String

SomeMethod(myparam:String,SomeOtherParam:Integer,aListOfValue:Collection(String)):String

SomeMethodThatReturnsList(myparam:String,SomeOtherParam:Integer,aListOfValue:Collection(String)):Collection(String)
SomeMethodThatReturnsList(myparam:String,SomeOtherParam:Integer,aListOfValue:Collection(SomeClass)):Collection(SomeClass)
This page was edited 95 days ago on 06/17/2024. What links here