UML 类图关联属性 {subsets < Association end > } | {联合} | {重新定义}

问题描述

当谈到 UML 中类图之间的关联时,我不太明白 {subset} 代表什么。我在第 4 页找到了这个 PDF:https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.138.5537&rep=rep1&type=pdf。 以下是您也可以在第 4 页上找到的图表和文本:

enter image description here

我读了这篇文章,但我并不是 100% 了解 {subsets } 是关于什么的。 它说“表示 d 的槽将是表示 b 的槽的子集。类型 B 的元素可以插入槽 b 中,类型 D 的元素可以插入槽 b 和 d 中。” 那么,{subset} 是某种多态性吗?我认为通过“槽”,它们的意思就像 B 类型方法的参数。因为 D 子集 b 这意味着 D 就像 b 的子类,所以它可以在参数中作为“b”传递因为多态。

所以问题是: 什么是 {subsets } ,它代表一个子类吗?

除此之外,我还有其他问题: 什么是 {union}、{redefines }、{nonunique} 和 {sequence}。代表什么?

代码中的一些示例会更容易理解。

解决方法

所以问题是:{subsets } 到底是什么,它代表一个子类吗?

不是{subsets }而是{subsets }

在给定的图中,D 是唯一一个专门用于 B 的可见类,如果它们不是专门用于 B 的其他类,那么所有实例BD 的实例,然后 {subset b} 等于 b

但至少有:

enter image description here

B 的所有实例都不是 D 的必要实例(包括专用于 D 的类),这就是为什么 d 只涉及 b 所关注的 B 实例的一个子集。

在你的图表和我的图表中,子集并不是很有用,但是例如在重新定义的情况下,例如{子集a,重新定义a} {子集b,重新定义b}


什么是{union},{redefines },{nonunique} & {sequence}

参考 formal/2017-12-05 §9.5.4 第 113 和 114 页:

  • union 表示该属性是其子集的派生并集。

  • nonunique:表示多值属性中可能存在重复项。这与 unique 相反,意味着没有可能的重复。例如,假设 b{nonunique} 那么一些 B 的实例可以在 b 中出现多次。如果该属性在 C++ 中由 std::set 实现,则它是 {unique}

  • sequence 表示该属性代表一个有序包,这是{nonunique,ordered}的快捷方式。 C++ 中的 std::vectorstd::list 就是这种情况。

  • {redefines }(不是{redefines })表示该属性重新定义了由标识的继承属性。如果在您的图表中 {subsets b} 被替换为 {redefines b} 那么类 C 只有插槽(例如 C++ 中的属性等)d。这不像有 b 私有所以不能从 C 访问,这真的意味着 d 是对 b 的重新定义.

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...