【问题标题】:OCL: Check for multiple AssociationsOCL:检查多个关联
【发布时间】:2014-05-08 16:01:14
【问题描述】:

我的学生班级有两个协会:研究生和本科。我正在尝试创建一个不变量,以确保没有学生与两者相关联。我对 OCL 很陌生,不知道这种方法或语法。我想我需要有类似的东西 Student.allInstances->forAll(这里有东西)

但我不知道。

谢谢!

【问题讨论】:

    标签: associations uml ocl


    【解决方案1】:

    UML 甚至在两个具有此确切含义的关联之间具有图形异或依赖关系,因此如果您希望甚至可以跳过这个特定的 ocl 约束。

    【讨论】:

    【解决方案2】:

    该协会是学生的自我参照吗?还是在关联的末尾有另一个类?

    如果有另一个类“Study”(例如)并且它们之间的关联将是基数 *,那么解决方案可能是:

    context Student s:
    inv only_one_graduate_type:
      ( (s.graduate -> notEmpty() implies s.undergraduate -> isEmpty()) && 
        (s.undergraduate -> notEmpty() implies s.graduate -> isEmpty()) )
    

    如果您使用 Student.allInstances-> 之类的东西,最好使用 context Student s

    重写您的 OCL 表达式

    【讨论】:

      【解决方案3】:

      这个怎么样?

      context Student:
      inv max_one_association:
          not (self.graduate -> notEmpty() && self.undergraduate -> notEmpty())
      

      顺便说一句,如果您可以发布类图,包括 Student 类和受影响的关联,那就太好了。以防万一……

      【讨论】:

        猜你喜欢
        • 2020-06-20
        • 1970-01-01
        • 2014-10-30
        • 1970-01-01
        • 2013-03-31
        • 1970-01-01
        • 1970-01-01
        • 2016-01-30
        • 1970-01-01
        相关资源
        最近更新 更多