- 组合、聚合和关联三者的区别是什么
关联(Association):
最基本的一种关系,表示一个类知道另一个类的存在,或者说是类之间的某种联系。
关联可以是双向的也可以是单向的,且不规定参与关联的对象的生存周期。
实例:老师与学生之间的关系,学生可以有多个老师,老师也可以教授多个学生,但删除一个老师或学生不会直接影响到对方的存在。
聚合(Aggregation):
一种特殊的关联,表示整体与部分的关系,但这种关系比较松散。
部分对象可以在不同的整体对象间共享,且部分的生命周期不完全依赖于整体。即使整体被销毁,部分对象仍然可以独立存在。
在UML中,聚合通常用空心菱形表示。
实例:汽车(整体)和轮胎(部分)的关系,轮胎可以被安装在不同的汽车上,即使汽车报废,轮胎依然可以被重新利用。
组合(Composition):
也是整体与部分的关系,但比聚合更强烈,是一种“强拥有”的关系。
部分对象的生命周期严格依赖于整体对象,一旦整体对象被销毁,部分对象也随之消失,不能独立存在。
在UML中,组合通常用实心菱形表示。
实例:人体(整体)和心脏(部分)的关系,心脏不能脱离人体单独存在,如果人体不存在,心脏也就没有存在的意义。
如果大家需要视频版本的讲解,欢迎关注我的B站: