0

如果我必须定义一个不变量来说明请求贷款的人的年龄应该大于 18 的附加类图,这将是

context Person
inv: age > 18

或者

context Person
inv: self.age > 18

两者有什么区别?

在此处输入图像描述 感谢您的指导

4

2 回答 2

1

您的示例中的两个不变量完全相同(“self”隐含在第一个中)。尽管如此,您只是说所有“人”对象的年龄值必须至少为 18,这不完全是您描述的不变量(在您的不变量中,似乎系统中可能有 18 岁以下的人,它只是18岁以下的人不能与贷款挂钩)

于 2014-05-24T17:01:54.957 回答
1

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

正如他所提到的,您的 OCL 不变量与您给我们的文本表示不匹配。在您的不变量中,人必须大于 18。但是,负载的所有者应该大于 18。所以您的不变量应该在 上制定Loan

context Loan inv: owner.age > 18

它也有隐含的自我,所以第二个在语义上等同于第一个:

context Loan inv: self.owner.age > 18

于 2014-05-26T12:28:53.630 回答