根据 UML 规范,在 MultiplicityElements 中指定多个值范围是否正确?例如,AssociationEnd 的两个范围:3..7、10..20 或一个属性,例如。帐户:帐户[0..5,8..10]。流行的工具允许这样做。是否正确?
最佳答案
TLDR:不,这种多重性是不正确的。
完整答案
UML 2.5 规范的第 7.5.2 节和第 7.5.3.2 节明确定义了多重性在 MultiplicityElement 中定义为两个数字之间的范围,一个特定数字(如果 upper
和 lower
相等)或者如果 upper
数字为 *
,则为从数字到无穷大的范围。不幸的是,您不能只列出具体的值。更具体地说,它由定义多重性范围限制的两个数字 lower
和 upper
列出。
我记得它在一些早期版本的 UML 中是可能的,但是我只在一些书中看到过它(不幸的是我记不清楚了),而不是规范本身。
至于 B.8.15.1,它没有说明任何可能的值,尤其是没有建议列出多个值/范围的可能性。
所以可能的值是:
一个
a..b
(其中a
<=b
,如果a
=b
则相当于a
)*
a..*
(如果a
=0
那么它等同于*
)
a
和 b
都可以是求值为大于或等于 0
的自然数的表达式,前提是 不等式a
<= b
用于表达式的所有可能值。
当然,对于内联多重性,它们放在方括号中。
另一方面,根据 9.4.2 StructuralFeatures 和 Parameters 是MultiplicityElements,因此它们恰好具有一个多重性。
关于UML MultiplicityElements 中的多个值范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41051367/