OCL定义不变量

时间:2014-05-23 21:53:26

标签: invariants ocl

如果我必须定义一个不变量来表明申请贷款的人的年龄应该大于18,那么这就是

context Person
inv: age > 18

context Person
inv: self.age > 18

两者有什么区别?

enter image description here 感谢您的指导

2 个答案:

答案 0 :(得分:1)

示例中的两个不变量完全相同(第一个中隐含了“self”)。然而,你只要说所有“人”物体必须具有至少18岁的年龄值,这不完全是你所描述的不变量(在你的不变量中,似乎有可能在系统中有18岁以下的人,它只是18岁以下的人无法与贷款挂钩)

答案 1 :(得分:1)

正如Jordi已经说过他们在语义上是等价的。第一个包含self隐式。

正如他所提到的那样,你的OCL不变量与你给我们的文字表示不符。在你的不变量中,人们必须年龄超过18岁。但是,负载的所有者应该大于18.所以你的不变量应该在Loan上制定。

context Loan inv: owner.age > 18

也有隐式self,所以第二个在语义上等同于第一个:

context Loan inv: self.owner.age > 18