【问题标题】:Is it possible to link a XOR constraint to another XOR constraint in UML?是否可以将 XOR 约束链接到 UML 中的另一个 XOR 约束?
【发布时间】:2018-11-26 17:29:01
【问题描述】:

这是我想做的一个例子: 假设我有 5 个类,我想表达一个约束,即我们可以将类“B”或/和“C”的实例链接到“A”,如果是这样,我们就不能有其他任何东西,如果我们没有如果没有这些类的任何实例,我们只能有一个“D”或“E”类的实例。

我在这里查看了官方文档:https://www.omg.org/spec/UML/2.5.1/ 但是关于 XOR 约束的部分非常有限。 由于我们不能没有明确描述,我认为这是可能的,但我不确定。

感谢您的帮助。

【问题讨论】:

  • 这看起来很混乱。它甚至看起来不像代表 B 和/或 C。为什么不像@GeertWagner 解释的那样附加一个描述附加到 A 的条件的约束?

标签: architecture constraints uml class-diagram


【解决方案1】:

在UML类图中,各种约束都可以包含在invariants的形式中,它们是逻辑条件,可以用简单的英文或对象约束语言 (OCL) 在附加到类(或关联)的约束矩形/框中。

您的约束可以通过这种方式添加(附加到您的课程A),如下所示:

但是你的约束不能用你试图表达的方式来表达。分离关联约束的特殊虚线符号不能以这种方式组合。

【讨论】:

  • 我会选择 OCL,因为它似乎是正确的方向,谢谢
【解决方案2】:

从语法上讲,一个约束是一个PackagedElement,它是一个Element,因此也可以是其他约束的对象。所以图表是有效的。

但是……

然而,从语义上讲,这不是很有用。因为,约束必须为真。所以A-D {xor} A-E 表示存在到 D 或到 E 的链接,但不是两者都有,但约束本身总是正确的。这意味着没有 A-C 和没有 A-B,永远不会,因此这些关联完全没有用。

最简单的方法是为每个可能相关的类(例如 b、c、d、e)提供链接属性名称,并在单个约束中表达排除项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多