如果我必须定义一个不变量来表明申请贷款的人的年龄应该大于18,那么这就是
context Person
inv: age > 18
或
context Person
inv: self.age > 18
两者有什么区别?
感谢您的指导
答案 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