最近在看一些开源项目的源码分析,其中涉及到UML建模方面的知识,在网上查找了一些好的基础资料,现写成博文做一些基础积累。(部分属于转载,本着学习的态度,原作者勿怪)
在UML类图中,常见的有以下几种关系:泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)
1、 泛化(Generalization)
关系:代表一种继承关系,体现为一般和特殊的关系,子类继承父类的所有共有属性和方法。
箭头指向:带待三角箭头的实线,箭头指向父类。
2、 实现(Realization)
关系:指接口和类的关系,表示类实现接口的所有特性与行为。
箭头:带三角箭头的虚线,箭头指向接口
3、 关联(Association)
关系:指一种拥有的关系,一个类知道另一个类的属性和方法。可以是双向,也可以是单向。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。其中关联的双方也可以是自己本身,例如单例模式中设置的自身对象
代码体现:成员变量
箭头:带普通箭头的实心线,指向被拥有者
4、 聚合(Aggregation)
关系:整体与部分的关系,且部分可以离开整体而单独存在。
聚合是关联的一种,是强的关联关系;区别在于具体的逻辑关系
代码体现:成员变量
箭头:带空心菱形的实心线,菱形指向整体
5、 组合(Composition)
关系:也是整体与部分的关系,单部分不能离开整体而单独存在。
组合也是关联的一种,是比聚合关系还强的关系,要求整体的对象负责部分对象的生命周期。
代码体现:成员变量
箭头:带实心菱形的实线,菱形指向整体。
6、 依赖(Dependency)
关系:是一种使用的关系,即一个类的实现需要另一个类的协助。
代码体现:局部变量、方法的参数或对静态方法的调用
箭头:带箭头的虚线,指向被使用者
注:各种关系的强弱顺序:
泛化=实现>组合>聚合>关联>依赖
现给出一张UML的类图举例图