根据UML规范,在MultiplicityElements中指定多个值范围是否正确?例如,AssociationEnd中的两个范围:3..7,10..20或属性,例如。帐户:开户[0..5,8..10。流行的工具允许这样做。这是对的吗?
答案 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中定义为两个数字之间的范围,特定数字(如果upper
和lower
相等)如果upper
数字为*
,则为数字到无穷大的范围。很遗憾,您无法列出具体的值。更具体地说,它由两个数字lower
和upper
列出,用于定义多重范围限制。
我记得在某些早期版本的UML中有可能,但我只在某本书中看到它(不幸的是我记不起来了),而不是规范本身。
至于B.8.15.1,它没有说明可能的值,特别是没有建议列出几个值/范围的可能性。
所以可能的值是:
a
a..b
(其中a
< = b
,如果a
= b
则相当于a
)*
a..*
(如果a
= 0
则相当于*
)只有a
< = {{1}的不等式,b
和0
都可以是评估为大于或等于a
的自然数的表达式}表示所有可能的表达式值。
当然,对于内联多重性,它们放在方括号中。
另一方面,根据9.4.2 StructuralFeatures和参数是 MultiplicityElements,因此它们只有一个多重性。
答案 2 :(得分:2)
虽然符号在语法上是不允许的,但您可能希望指定集合。这可以通过附加约束来轻松完成。如果你有足够的蛋头,你可以构建一个OCL脚本。但是像{ multiplicity must be within range 0..5 and 8..10 }
这样的明确文本会很好。只需使用*
即可获得真正的多重性。