【问题标题】:Aggregation and composition - wrong tutorial example聚合和组合 - 错误的教程示例
【发布时间】:2012-12-01 01:04:53
【问题描述】:

我发现这两个示例在概念上是相同的 - 但一个是组合,另一个是聚合。

first example 中,关系'class (has-a) students' 是一个组合。

一个班级包含学生。没有班级,学生就无法存在。 班级和学生之间存在着组合。

second example 中,关系“系(有)教授”是一个聚合。

如果大学关闭,各系将不复存在,但 这些系的教授将继续存在

在我看来,第一个是完全错误的。请注意,在this SO 问题的评论部分,@TallPaul 也在质疑第一个示例。我认为在实践中,它会从系统中删除每学期后参加课程的所有学生。此外,学生可能必须由类在初始化时创建,因为 C++ 中的组合通常是作为私有属性(而不是指针)实现的。我对吗?第一个例子有什么意义吗?

【问题讨论】:

    标签: uml diagram composition aggregation


    【解决方案1】:

    没有绝对的真理,这完全取决于您正在建模的系统。您可以创建一个系统,其中学生是仅存在于特定班级中的实例,并且当班级被删除时,学生也是如此。例如,当您不想在班级之间存储学生信息时,这可能很有意义。

    【讨论】:

    • 只需将 student 重命名为 class taker 或类似的名称,第一个示例就有意义了。
    【解决方案2】:

    是的,这些都是弱例子,一个类必须有一个主题将是组合的一个更好的例子。 Class 和 Students 之间的关系是 Aggregation,因为两者的生命周期不同。

    更多详细示例请参阅[Java 中的UML 关联]1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-10
      • 1970-01-01
      • 2021-09-27
      • 2021-12-16
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      相关资源
      最近更新 更多