组合和聚合有什么区别?

时间:2009-05-01 20:11:14

标签: java ooad

组合和聚合有什么区别? 谁能给我一个这个OOAD的样本?

4 个答案:

答案 0 :(得分:24)

考虑学生,学生的大脑以及学生所在的学校。

大脑学生的一部分。如果学生被摧毁,大脑也是如此。这是组合

学生学校。学生在学校的破坏中幸存下来,反之亦然。这是聚合

答案 1 :(得分:6)

Found here

“聚合和组合都是特殊类型的关联。聚合用于表示所有权或整体/部分关系,而组合用于表示更强大的所有权形式。通过组合,我们得到一致的生命周期整体而言,复合对象对其部分在创造和破坏方面的处置负有全部责任。

此外,聚合端的多重性不得超过1;即,它是非共享的。对象可以一次只是一个复合的一部分。如果复合材料被销毁,它必须要么销毁它的所有部分,要么将它们交给其他一些对象。可以设计复合对象,使其知道没有其他对象会破坏其部件。

组合可用于建模按值聚合,其在语义上等同于属性。实际上,组合最初在早期的UML草案中称为按值聚合,“正常”聚合被认为是按引用聚合。定义略有改变,但一般的想法仍然适用。聚合和组合之间的区别更多的是设计概念,在分析过程中通常不相关。“  约翰摩尔

答案 2 :(得分:0)

您的问题的相关答案:http://ootips.org/uml-hasa.html

简而言之:组合和聚合都是非循环的 - 由部分整体组成的关系。区别在于,使用合成,整个负责创建(和删除)其部分

答案 3 :(得分:0)