Derivation expressions
No edit summary
(Updated Edited template to July 12, 2025.)
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<message>Write the content here to display this box</message>
You can derive both attributes and association ends.
You can derive both attributes and association ends.


When it comes to sub-classes that inherits classes that has anything derived you may want to override the existing derivations.
When it comes to sub-classes that inherit classes that have anything derived, you may want to override the existing derivations.


You do this in the Derivation Expressions tool:
You can do this in the Derivation Expressions tool:
[[File:2020-08-25 15h10 03.png|none|thumb|1045x1045px]]
[[File:2020-08-25 15h10 03.png|none|thumb|1045x1045px]]


Consider this model:
Consider this model:
[[File:2020-08-25 15h13 44.png|none|thumb|615x615px]]
[[File:2020-08-25 15h13 44.png|none|thumb|615x615px]]
The Green side subclasses 2,3 match the pink side subclasses 5,6 - it would be good to have a derived association that match 1 and 4 whatever the subclass is.
The Green-side subclasses <code>2,3</code> match the pink-side subclasses <code>5,6</code>. It would be good to have a derived association that matches <code>1</code> and <code>4</code> whatever the subclass is.
# Implement the derived link and set the ocl implementation to Class4.nullvalue - it is not going to be used if your Class1 is abstract
# Implement the derived link and set the OCL implementation to Class4.nullvalue - it will not be used if your Class1 is abstract.
# On class3 click up DerivationExpressions - find the Class4Derived expression - replace it with ocl: self.Class5 (valid since Class5 is a Class4)
# On class3, click on DerivationExpressions - find the Class4Derived expression - replace it with ocl: self.Class5 (valid since Class5 is a Class4)
# On class2 click up DerivationExpressions - find the Class4Derived expression - replace it with ocl: self.Class6 (valid since Class5 is a Class4)
# On class2, click on DerivationExpressions - find the Class4Derived expression - replace it with ocl: self.Class6 (valid since Class5 is a Class4)
You have now overriden the dummy defualt implementation ( Class4.nullvalue) to something that is valid in the context of the subclass.
You have now overridden the dummy default implementation ( Class4.nullvalue) to something valid in the context of the subclass.
[[Category:MDriven Designer]]
{{Edited|July|12|2025}}

Latest revision as of 05:48, 20 January 2025

This page was created by Hans.karlsen@mdriven.net on 2020-08-25. Last edited by Edgar on 2025-01-20.

You can derive both attributes and association ends.

When it comes to sub-classes that inherit classes that have anything derived, you may want to override the existing derivations.

You can do this in the Derivation Expressions tool:

2020-08-25 15h10 03.png

Consider this model:

2020-08-25 15h13 44.png

The Green-side subclasses 2,3 match the pink-side subclasses 5,6. It would be good to have a derived association that matches 1 and 4 whatever the subclass is.

  1. Implement the derived link and set the OCL implementation to Class4.nullvalue - it will not be used if your Class1 is abstract.
  2. On class3, click on DerivationExpressions - find the Class4Derived expression - replace it with ocl: self.Class5 (valid since Class5 is a Class4)
  3. On class2, click on DerivationExpressions - find the Class4Derived expression - replace it with ocl: self.Class6 (valid since Class5 is a Class4)

You have now overridden the dummy default implementation ( Class4.nullvalue) to something valid in the context of the subclass.