UML MultiplicityElements 中的多个值范围

标签 uml

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

最佳答案

TLDR:不,这种多重性是不正确的。

完整答案

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

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

至于 B.8.15.1,它没有说明任何可能的值,尤其是没有建议列出多个值/范围的可能性。

所以可能的值是:

  • 一个
  • a..b(其中 a <= b,如果 a = b 则相当于 a)
  • *
  • a..*(如果a = 0 那么它等同于*)

ab 都可以是求值为大于或等于 0 的自然数的表达式,前提是 不等式a <= b 用于表达式的所有可能值。

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

另一方面,根据 9.4.2 StructuralFeatures 和 Parameters MultiplicityElements,因此它们恰好具有一个多重性。

关于UML MultiplicityElements 中的多个值范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41051367/

相关文章:

java - 如果通过另一个对象访问对象,我应该使用聚合吗?

uml - 派生联合在这张图中意味着什么

uml - uml 状态机图中的 if 条件

java - 是否有免费的 Eclipse 插件可以从 Java 类/包中创建 UML 图?

uml - 聚合与组合

uml - 状态图中的转换顺序是什么?如何使用历史伪状态?

带有 uml 的 Java 项目

abstract-class - UML 中的类图用法

java - 依赖和组合之间的区别?

oop - 聚合涉及依赖?