【问题标题】:How to write OCL contraint如何编写 OCL 约束
【发布时间】:2015-08-20 16:01:57
【问题描述】:

我是 OCL 的新手,我在 eclipse luna 4.4.2 上使用纸莎草纸 我有一个名为 CLIENT 的类图,具有约束 {所有属性都超出范围} 第二个名为 Customer 的类具有约束 {所有属性都是必需的},另一个类调用 Address 具有具有约束的属性出处 {出处是强制性的}

我应该如何编写适合形式语言的 OCL 约束? 也想知道如何验证语法的正确性?

【问题讨论】:

  • 如果您想检查 OCL 约束的语法,您可以使用Eclipse MDT/OCL 的评估控制台,或者您可以尝试Dresden OCLs 编辑器功能,您可以在其中加载您的模型。但请注意,德累斯顿 OCL 目前没有任何活跃的开发人员,但非常成熟。
  • 亲爱的 Reggie thx,感谢您的快速响应,我仍在等待有关如何在每个类 Client、Customer 和 Address 上编写 OCL 约束描述的响应。有人可以帮我吗
  • 您应该指定超出范围的含义。此外,我不确定您是否可以迭代类的每个功能,因为这是元编程。每个类有很多功能吗?
  • 尊敬的 Ischuetze 感谢您的贡献。在UML模型中,类CLIENT继承自类PERSON(是类Person的一种特殊类型); PERSON 有几个属性,例如“类型和名称”。附加到类客户端的约束是“所有属性都超出范围,除了类型和名称”我可以给出的解释是“类型和名称”是类客户端从超类人继承的唯一属性。等待您的来信!

标签: constraints ocl


【解决方案1】:

如果是集合,它会检查非空,否则它会检查属性是否非空。

context Address inv: self.provenance->notEmpty()

对于其他类,您必须对每个属性执行此操作。如果你想对每个属性都使用一个不变量,你必须在元模型上制定它们。

【讨论】:

  • 对不起 Ischuetze,元层次结构是什么意思?你指的是班级的名字吗?等待您的来信
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多