如果我必须定义一个不变量来说明请求贷款的人的年龄应该大于 18 的附加类图,这将是
context Person
inv: age > 18
或者
context Person
inv: self.age > 18
两者有什么区别?
感谢您的指导
如果我必须定义一个不变量来说明请求贷款的人的年龄应该大于 18 的附加类图,这将是
context Person
inv: age > 18
或者
context Person
inv: self.age > 18
两者有什么区别?
感谢您的指导
您的示例中的两个不变量完全相同(“self”隐含在第一个中)。尽管如此,您只是说所有“人”对象的年龄值必须至少为 18,这不完全是您描述的不变量(在您的不变量中,似乎系统中可能有 18 岁以下的人,它只是18岁以下的人不能与贷款挂钩)
正如 Jordi 已经说过的,它们在语义上是等价的。第一个包括self
隐含的。
正如他所提到的,您的 OCL 不变量与您给我们的文本表示不匹配。在您的不变量中,人必须大于 18。但是,负载的所有者应该大于 18。所以您的不变量应该在 上制定Loan
。
context Loan
inv: owner.age > 18
它也有隐含的自我,所以第二个在语义上等同于第一个:
context Loan
inv: self.owner.age > 18