【问题标题】:OCL - iterate for each itemOCL - 迭代每个项目
【发布时间】:2011-04-03 18:10:26
【问题描述】:

我有一个 A 类和其他类 (B) 的集合。

我如何在 OCL 中表示对于集合中的每个类 (B) 都有一个字段约束?

我的想法是这样的:

A.collection->iterate().field = SomeConstraint

【问题讨论】:

    标签: ocl


    【解决方案1】:

    您的术语有点混乱。你的意思是你有类似的东西

    A--------->* B

       bs
    

    你期望SomeConstraint 是什么?

    我猜你正在为 A 类在 OCL 中寻找所谓的不变量:

      context A
      inv allOK : bs->forall(b | ...)
    

    更新: 如果要数,最简单的方法不是iterate,而是做select(...)->count()。也许这可以简化您的问题。

    【讨论】:

    • forall() 只是一个布尔约束...我想计算一些东西,我只是不懂迭代语法。
    • 如果您不准确说明您想要什么,我们将无能为力。 OCL 中的 Iterate 只是一个通用的迭代器表达式,所以我们不能仅仅解释如何在几个杆中使用它,因为它太通用了。请参阅 OCL 文档或更准确地告诉我们您需要什么,以便我们为您的示例提供帮助
    猜你喜欢
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 2013-07-13
    相关资源
    最近更新 更多