隐含的基数 class 是否应该有关联?

Should there be an association for the base class when it's implied?

我正在尝试为一个非常简单的场景制作 UML class 图。考虑以下代码:List<Food> foods = {new Tomato(), new Pizza()}; 作为 class A 的字段。显然,class A 在 Tomato 和 Pizza 之间有关联,但它也应该在 Food 之间有关联吗?

当然,Tomato 和 Pizza 是从 Food 扩展而来的 :)

看不到更多细节很难。

您的 food 是一个 0..n 多重关联。

TomatoPizza 在该代码中都没有明确的关联。所以这只是一个依赖。

关联是一种更强的依赖形式(草率的定义)。其实你可以创建一个协会。这取决于未知的细节。如果你的注意力集中在列表上并且你想要其中的任何子classed食物,你不会将关联与这些子class中的每一个联系起来,而只会与父class Food

如前所述:这完全取决于设计模板,模板中的细节需要更多 beefy

我会说你的 ClassAFood 有结构关系(关联)。

因为它也调用 TomatoPizza 的构造函数,所以它依赖于 类.

List<Food> 等泛型的使用在 UML 中始终是一个挑战,因为泛型的语义在不同的编程语言中并不相同。

这里,字段foods of class A表示有一个navigable association from A to Food. And Tomato and Pizza are specializations of Food(根据你使用的术语“ 延长"):

补充说明:

  • associationFood,因为类型是List<Food>A和[=15=之间没有直接耦合] 或 Pizza

  • 请记住,class 图表显示的是一般情况,而不是特定场景 与单个对象(这是目的前者 object diagram)。

  • 使用列表说明关联可以是0 or moreFood。但是我们不知道一个 Food 对象是否可以被多个 A 使用(如果 Food 是引用类型,那么多个在理论上是可能的):因此多重性未指定A 侧。

  • 基于语义,您可以考虑将关联设为composition or an aggregation。但无论如何,简单的联想都是正确的。

  • 基于您想要在 A-to-Food 关联中突出您的设计的内容:

    • 你可能更喜欢 Food 端的 dot notation,如果你想强调该协会(又名列表)归 A
    • 所有
    • 你可以像我的图表一样使用 navigability notation,如果不太关心当前的实现,只是想表达从 A 访问 Food 应该很容易。
    • 如果你想保持这些主题开放,你可以显示上面的 none。