UML class 图关联属性 {subsets < Association end > } | {联合} | {重新定义}
UML class diagram association properties {subsets < Association end > } | {union} | {redefines}
关于UML中class图之间的关联,我不太明白{subset}代表什么。我在第 4 页找到了讨论它的 PDF:https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.138.5537&rep=rep1&type=pdf。
这是您还可以在第 4 页找到的图表和文字:
我读过这篇文章,但我不是 100% 了解 {subsets < class > } 的内容。
它表示“表示 d 的槽将是表示 b 的槽的子集。类型 B 的元素可以插入槽 b,类型 D 的元素可以插入槽 b 和 d。”
那么,{subset} 是某种多态性吗?我认为thorugh“slot”它们的意思就像是B类型方法的参数。并且因为D子集b这意味着D就像b的sub-class所以它可以被传递为“ b" 在参数中,因为多态性。
所以问题是:
{subsets < class > } 到底是什么,它代表子 class 吗?
除此之外,我还有其他问题:
什么是 {union}、{redefines < class > }、{nonunique} 和 {sequence}。代表什么?
代码中的一些例子会更容易理解。
So the question is : What is {subsets < class > } exactly, is it representing a sub class ?
它不是 {subsets < class >} 而是 {subsets < 属性 name >}
在给定的图表中 D 是唯一可见的 class 特化 B,如果它们没有其他 classes 特化 B 然后 B 的所有实例都是 D 的实例 然后 {子集 b} 等于 b.
但至少有:
B 的所有实例都不是 D 的必要实例(包括 classes 特化 D), 这就是为什么 d 只涉及 B 实例的子集 b .
在你的图表和我的图表中,子集 并不是很有用,但是在重新定义的情况下,例如{子集 a,重新定义 a} {子集 b,重新定义 b}
What are {union}, {redefines < class > }, {nonunique} & {sequence}
参考 formal/2017-12-05 §9.5.4 第 113 和 114 页:
union 表示 属性 是其子集的派生联合。
nonunique:表示多值属性中可能存在重复项。这与 unique 相反,意味着没有可能重复。例如假设 b 是 {nonunique} 那么 B 的某些实例可以在 b。如果 属性 由 std::set
在 C++ 中实现,则它是 {unique}.
sequence表示属性表示一个有序包,这是{nonunique, ordered}[的快捷方式=83=]。 C++中的std::vector
和std::list
就是这种情况。
{重新定义<属性-name>}(不是{重新定义} ) 表示 属性 重新定义了由 < 属性-name > 标识的继承 属性。如果在你的图表中 {subsets b} 被替换为 {redefines b} 那么 classes C 只有插槽(例如 C++ 中的属性等)d。这不像 b 是私有的,因此无法从 C 访问,这实际上意味着 d 是一个重新定义b.
关于UML中class图之间的关联,我不太明白{subset}代表什么。我在第 4 页找到了讨论它的 PDF:https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.138.5537&rep=rep1&type=pdf。 这是您还可以在第 4 页找到的图表和文字:
我读过这篇文章,但我不是 100% 了解 {subsets < class > } 的内容。 它表示“表示 d 的槽将是表示 b 的槽的子集。类型 B 的元素可以插入槽 b,类型 D 的元素可以插入槽 b 和 d。” 那么,{subset} 是某种多态性吗?我认为thorugh“slot”它们的意思就像是B类型方法的参数。并且因为D子集b这意味着D就像b的sub-class所以它可以被传递为“ b" 在参数中,因为多态性。
所以问题是: {subsets < class > } 到底是什么,它代表子 class 吗?
除此之外,我还有其他问题: 什么是 {union}、{redefines < class > }、{nonunique} 和 {sequence}。代表什么?
代码中的一些例子会更容易理解。
So the question is : What is {subsets < class > } exactly, is it representing a sub class ?
它不是 {subsets < class >} 而是 {subsets < 属性 name >}
在给定的图表中 D 是唯一可见的 class 特化 B,如果它们没有其他 classes 特化 B 然后 B 的所有实例都是 D 的实例 然后 {子集 b} 等于 b.
但至少有:
B 的所有实例都不是 D 的必要实例(包括 classes 特化 D), 这就是为什么 d 只涉及 B 实例的子集 b .
在你的图表和我的图表中,子集 并不是很有用,但是在重新定义的情况下,例如{子集 a,重新定义 a} {子集 b,重新定义 b}
What are {union}, {redefines < class > }, {nonunique} & {sequence}
参考 formal/2017-12-05 §9.5.4 第 113 和 114 页:
union 表示 属性 是其子集的派生联合。
nonunique:表示多值属性中可能存在重复项。这与 unique 相反,意味着没有可能重复。例如假设 b 是 {nonunique} 那么 B 的某些实例可以在 b。如果 属性 由
std::set
在 C++ 中实现,则它是 {unique}.sequence表示属性表示一个有序包,这是{nonunique, ordered}[的快捷方式=83=]。 C++中的
std::vector
和std::list
就是这种情况。{重新定义<属性-name>}(不是{重新定义
} ) 表示 属性 重新定义了由 < 属性-name > 标识的继承 属性。如果在你的图表中 {subsets b} 被替换为 {redefines b} 那么 classes C 只有插槽(例如 C++ 中的属性等)d。这不像 b 是私有的,因此无法从 C 访问,这实际上意味着 d 是一个重新定义b.