2016-12-05 3 views
0

Ich bin neu in OCL, und ich kam gerade über diesen Ausdruck:Körperausdruck in OCL

context Person::descendants(): Set 
body: result = self.children -> union(
self.children -> collect(c | c.descendants())) 

ich jetzt, dass es versucht, die direkten und indirekten Nachkommen einer Person zu erhalten, aber wie ist das hier geschrieben Was versucht jeder Satz zu sagen?

Auch diese,

context Person::income(): Integer 
body: self.job.salary -> sum() 

Ist das rekursive?

Antwort

0

result = ist grundlos Flaum, um eine OCL-Abfrage in die engen UML-Anforderungen für eine boolesche Körperbedingung zu konvertieren. IMHO sollte es gelöscht werden, und einige Tools können dies für Sie tun.

self.children sind die direkten Kinder

x-> Union (y) zwei Sätze

c.descendants kombiniert() ist ein Rekursion Aufruf der Nachkommen()

self.children -> collect (c | c.descendants()) ist die Rekursion, die auf jedes Kind angewendet wird und mit dem Ergebnis als Bag


Es gibt jetzt einen Verschluss() Iteration, damit ich

Kontext Person :: Nachkommen() schreiben würde: Set (Person) Körper: kinder-> Verschluss (Kinder)

Grüße

Ed Willink

Verwandte Themen