UML聚合与关联

And*_*dna 48 uml associations aggregation

我在这里,关于聚合和关联的另一个问题.我想学习一些UML的基础知识,所以我开始阅读Martin Fowler撰写的"UML精简版".我阅读了关于课程的两章,有一件事我想不到,那就是聚合与关联.在这本书中有这样的引用:

在UML之前的日子里,人们通常对聚合和关联是相当模糊的.无论是否含糊,它们总是与其他人不一致.因此,尽管出于不同的原因,许多建模者认为聚合很重要.因此UML包含聚合(图5.3),但几乎没有任何语义.正如Jim Rumbaugh所说,"把它想象成一个建模安慰剂" [Rumbaugh,UML Reference].

正如我从Stack Overflow上的这个引用和主题中所理解的那样,我使用这两个关系中的哪一个并不重要,它们的意思相同,或者是否有任何使用聚合而不是关联的情况是合理的和/或我不能改变一个到另一个而不改变类图的"含义"?

我问这个,因为这本书是从2003年开始的,有些事情可能会在这几年内发生变化.

Cha*_*Mic 29

也许这可以帮到你,但我认为你不会找到完美的解释:

差异是暗示之一.聚合表示整体/部分关系,而关联则不表示.但是,这两种关系的实施方式可能不会有太大差异.也就是说,查看代码并确定特定关系是否应该是聚合或关联是非常困难的.因此,完全忽略聚合关系是非常安全的.
[Robert C. Martin | UML]

以及每种情况的一个例子:

a)关联是一种关系,其中所有对象都有自己的生命周期,并且没有所有者.让我们举一个教师和学生的例子.多个学生可以与单个教师相关联,单个学生可以与多个教师相关联,但是对象之间没有所有权,并且两者都有自己的生命周期.两者都可以独立创建和删除.

b)聚合是一种特殊的关联形式,其中所有对象都有自己的生命周期,但是所有权和子对象不能属于另一个父对象.让我们举一个部门和老师的例子.单个教师不能属于多个部门,但如果我们删除部门,教师对象将不会被销毁.我们可以考虑"有一个"的关系.
[Maesh | GeeksWithBlogs]

  • 有意思,但是关于第二个例子,我认为如果我们将聚合与关联交换,仍然没有任何差异,这一切都归结为个人偏好和图表的可读性? (2认同)

sfi*_*nie 27

Rumbaugh的陈述是最有说服力的,鲍勃叔叔的好建议.正如我在其他地方所说的那样,聚合在语义上是如此微弱,以至于没有提供任何实际上有益的东西.它只有一个有效的极端情况(递归关系的分散性),但很少有人知道并理解这一点.所以你最后不得不在评论中指出.

我只是不使用它.并且从未感到任何损失.坚持简单的二元关联,专注于真正重要的事情 - 获得基数和命名权.你会从中获得更多,而不是试图决定不可判断的关联与聚合.

心连心.