UML MultiplicityElements中的多个值范围

时间:2016-12-09 00:47:56

标签: uml

根据UML规范,在MultiplicityElements中指定多个值范围是否正确?例如,AssociationEnd中的两个范围:3..7,10..20或属性,例如。帐户:开户[0..5,8..10。流行的工具允许这样做。这是对的吗?

3 个答案:

答案 0 :(得分:2)

一个MultiplicityElement只能有一个multiplicity range

我不清楚一个umlDiagramElement是否可以包含更多的多重元素。 Specification 2.5似乎允许章节B.8.15.1

答案 1 :(得分:2)

TLDR:不,这种多样性不正确。

完整答案

UML 2.5规范的第7.5.2和7.5.3.2节明确定义了多重性在MultiplicityElement中定义为两个数字之间的范围,特定数字(如果upperlower相等)如果upper数字为*,则为数字到无穷大的范围。很遗憾,您无法列出具体的值。更具体地说,它由两个数字lowerupper列出,用于定义多重范围限制。

我记得在某些早期版本的UML中有可能,但我只在某本书中看到它(不幸的是我记不起来了),而不是规范本身。

至于B.8.15.1,它没有说明可能的值,特别是没有建议列出几个值/范围的可能性。

所以可能的值是:

  • a
  • a..b(其中a< = b,如果a = b则相当于a
  • *
  • a..*(如果a = 0则相当于*

只有a< = {{1}的不等式,b0都可以是评估为大于或等于a的自然数的表达式}表示所有可能的表达式值。

当然,对于内联多重性,它们放在方括号中。

另一方面,根据9.4.2 StructuralFeatures和参数 MultiplicityElements,因此它们只有一个多重性。

答案 2 :(得分:2)

虽然符号在语法上是不允许的,但您可能希望指定集合。这可以通过附加约束来轻松完成。如果你有足够的蛋头,你可以构建一个OCL脚本。但是像{ multiplicity must be within range 0..5 and 8..10 }这样的明确文本会很好。只需使用*即可获得真正的多重性。