大家都知道,UML中有四种关系--关联、实现、泛化、依赖。其中,关联分为普通关联、组合和聚合。那么都表示整体与部分的组合和聚合到底有什么样的不同呢?它们之间有怎样的联系呢?
1.联系
首先, 聚合和组合是表示整体与部分之间关系的两种形式。
其次,都用一条带有菱形的符号表示。
2.区别
虽然同样是整体与部分的关系表示,但是绝活通常是在定义好一个整体类后,在分析整体类的组成结构,找出一些类与该整体形成了聚合关系,并不要求整体和部分统一生存。就是说聚合中的部分可以脱离整体单独生存。
而组合中却要求整体和部分具有统一的生存期,即一旦整体不存在,部分也就不复存在。整体与部分之间具有同生死共存亡的关系。
下面就用生活中的一个例子来充分说明组合与聚合之间的关系。如图,鸟群由多只鸟组成一个群体成为鸟群。但鸟群和鸟的并不遵循共存亡的原理,因为死一只鸟,鸟群还在,也就是说鸟自身仅仅是组成鸟群的一个个体。
而对于鸟自身来讲,翅膀是鸟身体的一部分,一旦鸟死了,翅膀还能单独存在吗?但鸟群和鸟的关系就不是这样的。所以这样来讲的话,聚合和组合就能分开了。
既然说道关联关系了,就顺道将实现、泛化和依赖关系的理论都生活化,如下图。
米老师上课经常说:把知识和生活联系起来,和学过的知识联系起来。当将一些理论用生活中我们熟悉的事物来描述和理解,这样死板的理论就会被生活化,知识也就会转换成我们熟悉而熟知的生活常识,那么我们就可以更好的理解和运用这个理论了。
希望这篇博客可以帮到大家,也欢迎大家给我指正和提意见哦。先谢谢了!