UML类图关联属性{子集<;关联结束>;}{union}{redefines}

UML类图关联属性{子集<;关联结束>;}{union}{redefines},uml,associations,class-diagram,Uml,Associations,Class Diagram,当涉及到UML中类图之间的关联时,我不太理解{subset}代表什么。我在第4页找到了这张PDF,上面有关于它的内容:。 以下是第4页的图表和文本: 我读了这篇文章,并不是百分之百地了解{subsets}是关于什么的。 它说“表示d的插槽将是表示b的插槽的子集。类型b的元素可以插入插槽b,类型d的元素可以插入插槽b和d。” 那么,{subset}是某种多态性吗?我认为thorugh“slot”的意思类似于B类型方法的参数。因为D子集B,这意味着D类似于B的子类,所以它可以在参数中作为“B”传递

当涉及到UML中类图之间的关联时,我不太理解{subset}代表什么。我在第4页找到了这张PDF,上面有关于它的内容:。 以下是第4页的图表和文本:

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

因此,问题是: {subsets}到底是什么,它代表的是一个子类吗

除此之外,我还有其他问题: 什么是{union},{redefines},{ununique}&{sequence}。它代表什么

代码中的一些示例将使其更易于理解

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

它不是{subsets},而是{subsets}

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

但至少有:

B的所有实例都不是D的必要实例(包括专门化D的类),这就是为什么D只涉及B所关心的B实例的子集

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


什么是{union}、{redefines}、{ununique}&{sequence}

参考第113页和第114页§9.5.4:

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

  • 非唯一性:表示多值属性中可能存在重复项。这与独特意义相反,不可能重复。例如,假设b是{非唯一的},那么b的一些实例可以在b中出现多次。如果属性在C++中由<代码> STD::SET实现,则{{唯一}} < /P>
  • sequence表示该属性表示一个有序的包,这是{ununique,ordered}的快捷方式。这是 STD::vector 和<代码> STD::C++中的列表< /C> > < /P>
  • {redefines}(不是{redefines})表示该属性重新定义由标识的继承属性。如果在图表中,{子集B}被{RealDebug B}所取代,那么C类只有槽(例如C++中的属性)D。这不像b私有,所以不能从C访问,这实际上意味着d是b的重新定义


不直接相关:这个其他SO问题提供了一个具体的例子,说明了子集、重新定义和关联专业化可以帮助解决什么问题:-在回答和评论中,有关于这个主题的鼓舞人心的文章。谢谢你的回答,但是你有没有{subsets property name}的例子可以在代码中使用吗?@David您可以直接从我的类图中获得代码,类A有类型b的属性b,类b有类型A的属性A,类C继承A有类型d的属性d,类d继承b有类型C的属性C。是的,但是{subset property name}呢。你写的只是房地产协会,而不是房地产细分。我不明白的是{subsets property name}到底是什么,在c属性下写{subsets a}的作用是什么?除此之外,我看到我们还可以写{subsets association end}。联想到底意味着什么。关联结束和属性名称是否相同?{subsets property name}是否指向类或属性。你的意思是{subsets b},在这种情况下,在d下,意味着你可以在某些情况下使用多态性,因为类d专门化类b,并在参数类型为b的方法中作为类型b传递它吗?