设计原则(二)——类与类之间的关系
类与类之间的六种关系:
泛化(Generalization)、实现(Realization)、组合(Composition)、聚合(Aggregation)、关联(Association)、依赖(Dependency)
UML中常用符号含义:
+ public
- private
# protected

一、泛化(继承)
继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识,C#中通过:来标识继承。在UML类图设计中,继承用一条带空心三角箭头的实线表示,从子类指向父类,或者子接口指向父接口。
UML类图表示

二、实现
实现指的是一个class类实现interface接口(可以是多个)的功能,实现是类与接口之间最常见的关系。在Java中此类关系通过关键字implements明确标识,C#中使用:来标识,在UML类图设计中,实现用一条带空心三角箭头的虚线表示,从类指向实现的接口。
UML类图表示

三、依赖
类A的实现需要引用类B,这就是依赖,这种使用关系是具有偶然性的、临时性的、非常弱的,而B类的变化会影响到A,则A与B存在依赖关系,依赖关系是弱的关联关系。例如:人依赖计算机去做软件开发。在UML类图设计中,依赖关系用由类A指向类B的带箭头虚线表示。
UML类图表示

四、关联
关联体现的是两个类之间语义级别的一种 强依赖关系,比如我和我的朋友,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。
关联可以是单向、双向的。表现在代码层面,为被关联类B以类的属性形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。在UML类图设计中,关联关系用由关联类A指向被关联类B的带箭头实线表示。
UML类图表示

五、聚合
聚合是关联关系的一种特例,它体现的是整体与部分的关系,即 has-a 的关系。此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。此时整体与部分之间是可分离的,即没有了整体,局部也可单独存在。比如计算机与CPU、公司与员工的关系等。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在UML类图设计中,聚合关系以空心菱形加实线表示(菱形指向整体)
UML类图表示

六、组合
组合也是关联关系的一种特例,这种关系比聚合更强,是一种contains-a的关系,部分不能脱离整体存在。这是一种比聚合更强的关系,所以也称为强聚合。
整体的生命周期即为组成部分的生命周期。它同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,比如人和人的大脑。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在UML类图设计中,组合关系以实心菱形加实线表示。
UML类图表示

全图 看你掌握了没~

————————————————
参考文章:https://blog.csdn.net/weixin_43819566/article/details/111795638

