class - 当基类隐含时是否应该有关联?

标签 class generics uml associations

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

当然,番茄和披萨是从食物延伸而来的:)

最佳答案

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

这里,字段foodsA意味着有一个 navigable关联来自AFood 。和TomatoPizzaspecializationsFood (基于您对术语“扩展”的使用):

UML class diagram

附加说明:

  • associationFood ,因为类型是 List<Food> A 之间没有直接耦合和TomatoPizza

  • 请记住,类图显示的是总体情况,而不是单个对象的特定场景(这就是前面 object diagram 的目的)。

  • 列表的使用表明关联可以是 0 or more Food 。但我们不知道是否有 Food对象可以被多个人使用A或不(如果 Food 是引用类型,则理论上有几种可能):因此 A 上未指定多重性边。

  • 根据语义,您可以考虑将关联设置为 compositionaggregation 。但无论如何,简单的关联都是正确的。

  • 基于您想要在 A 中突出显示的设计内容-到- Food协会:

    • 您可能更喜欢 dot notation关于Food最后,如果您想强调该关联(也称为列表)由A拥有。
    • 您可以使用navigability notation正如我的图中所示,如果不太关心当前的实现,只是想表达从 A 访问食物应该很容易。
    • 如果您想保持这些主题的开放性,则可以不显示上述任何内容。

关于class - 当基类隐含时是否应该有关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61677802/

相关文章:

python - 初始化类定义的可选变量,其默认值与实例变量相同

php - PHP 类中不存在的属性

java - 无法从泛型方法返回对象

c# - C# 中的泛型与非泛型性能

java - Java 中的 C++ 模板?

testing - 我应该将测试类放入 UML 中吗?

java - 我无法访问对象属性

java - Android 无法实例化 Activity : Didn't find class on path

php - PHP UML 建模工具

uml - 如何设置类之间的顺序关系?