UML类图关系(泛化、继承、实现、依赖、关联、聚合、组合)
我是在画概念数据模型和逻辑数据模型时遇到了箭头表征含义的问题。现将内容分享:
UML是统一建模语言,通过图/文/表等方式,从不同角度对一个概念/系统/体系/实体进行描述。例如一个体系,有不同的利益相关者,他们从各自的角色出发去观摩体系,通过UML,我们事先定义相关概念,统一规则,再根据不同角色关心的方面,构造体系结构产品,实现对体系的完整描述。本次分享的内容是UML中的类图关系,包括泛化、继承、实现、依赖、关联、聚合、组合。
## 继承
A(子类)继承B(父类)的功能,并可以增加A的新功能的能力。
继承是类与类、接口与接口之间最常见的关系,表征符号如下(箭头方向是基于动作指向):
A与B的关系:
## 实现
指一个类实现(调取)接口的功能(服务),
实现是类与接口之间最常见的关系,表征符号如下:
## 依赖
类A依赖类B才能实现,类B的变化会影响到类A。
举一个例子:B是算法A的功能集,同一个算法在不同的场景下实现不同的功能,算法对功能的选择要根据适用场景设置,算法A依赖功能B实现,B的变化会影响到A。表征符号如下:
## 关联
A关联B的字段,关联的字段可以是1个(0..1),也可以是多个(0..*),表征符号如下:
## 聚合
聚合是关联关系的一种特例,体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等,表征符号如下:
## 组合
组合也是关联关系的一种特例,体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,表征符号如下:
## 总的来说,后几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖