【问题标题】:OCL define invariantOCL 定义不变量
【发布时间】:2014-05-26 20:28:53
【问题描述】:

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

context Person
inv: age > 18

context Person
inv: self.age > 18

这两者有什么区别?

感谢您的指导

【问题讨论】:

    标签: invariants ocl


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      context Loan inv: owner.age > 18

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

      context Loan inv: self.owner.age > 18

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-29
        • 1970-01-01
        • 1970-01-01
        • 2011-06-11
        • 1970-01-01
        • 1970-01-01
        • 2021-02-27
        • 1970-01-01
        相关资源
        最近更新 更多