我是OCL的新手,我刚刚遇到了这个表达:
context Person::descendants(): Set
body: result = self.children -> union(
self.children -> collect(c | c.descendants()))
我现在正试图获得一个人的直接和间接后代,但是这里写的是什么,每个句子试图说什么?
也是这一个,
context Person::income(): Integer
body: self.job.salary -> sum()
这是递归吗?
答案 0 :(得分:0)
结果= 是无偿的绒毛将OCL查询转换为布尔值身体状况的狭窄UML要求。恕我直言,它应该删除,一些工具可能会为你做。
self.children 是直接的孩子
的x>联盟(y)的 结合两组
c.descendants() 是后代()
的递归调用self.children - >收集(c | c.descendants()) 是应用于每个孩子的递归,结果累积为Bag
现在有一个closure()迭代,所以我会写
context Person :: descendants():Set(Person) body:children-> closure(children)
此致
Ed Willink