【前言】
在画类图之前,首先要理清UML中的四大关系,不然后边学设计模式还是看类图都会有很大的障碍,四大关系包含:泛化(Generalization), 实现(Realization),关联(Association),依赖(Dependency)
【正文】
目录
一、四大关系介绍:
【 泛化(Generalization)】
1.解释:是一种继承关系,是一个类(子类)继承另外一个类(父类)的功能,但子类还能够添加自己的新功能。
2.UML表示法:实线+空心箭头 (空心箭头指向父类)
3.实例说明:鸟属于动物类,鸟继承了动物类,但是鸟具有动物特征的同时还具有自己特有的功能。
【 实现(Realization)】
1.解释:是一种类与接口的关系,指的是一个类实现一个或多个接口的功能。
2.UML表示法:虚线+空心箭头(空心箭头指向接口)
3.实例说明:麻雀实现了飞翔的接口。
【 关联(Association) 】
1.解释:是一种结构化关系,是指一种对象和还有另一种对象有联系,给定关联的两个类,能够从当中的一个类的对象访问到另一个类的相关对象。关联又包括聚合(Aggregation)、组合(Composition)两大类。
1.1 聚合关系(Aggregation)
(1)聚合是表示整体与部分的关系,聚合关系中的总体和部分是能够分离的,他们具有各自的生命周期。
(2)聚合用实线+空心菱形表示(空心菱形指向整体)
(3)比如:大雁跟雁群就是一种聚合关系,大雁是部分,雁群是整体,大雁有自己的生命周期,雁群也 有自己的生命周期,大雁离开雁群能生活,雁群离开某个大雁也能生存,可见它们是一种弱依赖关系。
1.2 组合关系(Composition)
(1)组合表示整体与部分的关系,整体拥有部分,此时整体和部分是不可分的,整体与部分具有相同的生命周期
(2)组合用实线+实心菱形表示(实心菱形指向整体)
(3)比如:大雁跟翅膀的关系,大雁是整体,翅膀是部分,他们具有相同的生命周期,大雁没了翅膀不能活,翅膀没了大雁也不能活,可见大雁跟翅膀是一种强依赖关系。
【 依赖(Dependency) 】
1.解释:表示一个对象在执行期间还会跟另一个对象存在关系。
2.UML表示法:虚线和箭头表示(箭头指向被依赖的对象)
3.实例说明:动物要生存需要依赖氧气、水和食物。
二、四大关系比较:
1、【聚合】PK【组合】
相同点:两者都表示‘拥有’的关系,区别:生命周期的长短。
【聚合】:表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,他们的生命周期或许是不同的,A对象不随着B对象的消失而消失,两者可以独立存在。
【组合】:表示一种强的‘拥有’,他们是部分和整体的关系,他们的生命周期是相同的,A对象会随着B对象的消失而消失,二者是不能独立存在的。
关系强弱比较:组合>聚合
2、【泛化】PK【实现】
相同点:相当于继承。 子类继承父类,父类泛化子类。
关系强弱比较:泛化=实现
3、【关联】PK【依赖】
相同点:都表示依赖关系。区别:类之间关系的强弱程度和类之间关系的时间长短。
【关联】表示类之间的很强的关系,它表示类之间的“持久”关系,这种关系一般表示一种重要的业务之间的关系,需要保存的,或者说需要“持久化”的,或者说需要保存到数据库中的。
【依赖】表示类之间的较弱的关系,它表示类之间的是一种“临时、短暂”关系,这种关系是不需要保存的。
关系强弱比较:关联>依赖
得到关系强弱的比较:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
三、总结:
从上面的比较我们可以看出,依赖、关联、聚合、组合与泛化代表类与类之间的耦合度依次递增,依赖关系实际上一种比较弱的关联关系,聚合是一种比依赖较强的关联关系,组合是一种更强的关系,泛化则是一种最强的关联关系。