UML类图的简单小结
UML中的简介
UML中主要是用于描述类与类之间的关系
。在从整体浏览项目的时候,往往会通过相应的流程图
来了解该项目的相关业务流程;而具体的对应类我们可以通过UML类图
去看到每个类中对应的关系。
例如下图中的是状态模式相关的UML类图:
传统UML类图的标识
简单了解了一下UML和看过对应类图后,我们来简单看看相应的标识
(通用表示)。
-
整体概览
- 第一矩形:类名
- 第二矩形:属性名
- 第三矩形:方法名
- 图例
-
权限相关
- private私有权限:-
- public最大权限:+
- default默认:#
- protect子类可继承: ~
-
类的区分
- 抽象类:斜体标识
- 普通类:正常
- 接口:类名前<>
-
类与类直接关系
- 依赖:虚线;箭头指向被依赖的类
- 泛化(继承):实线,实心箭头;箭头指向父类(因为你要对父类了解才继承)
- 实现:虚线,空心箭头;箭头指向接口类(实现也可以用棒棒糖表示法)
- 关联关系:实线;箭头指向被关联的类;关联关系会在两端出现数字,表示数量对应关系
- 聚合:实线,空心菱形;菱形指向整体,三角指向部分
- 合成(组合):实线,实心菱形;菱形指向整体,三角指向部分
-
数据类型
- 成员属性的类型和成员方法返回的类型都在其对应的名称后
UML中的关系
UML中表示类与类之间的关系有依赖、泛化、实现、关联、组合、聚合
。但是,泛化,实现,关联都可以概述成依赖;而聚合和组合又是关联关系的一种特例;所以所有的关系都可以说是依赖。
依赖
一般来说,依赖是指该类中的方法的参数类型,返回值类型
为另一个类对象;或者在该类中使用了其他类,具体如下:
- A类使用了B类:
- B类作为A类的成员属性类型
- B类作为A类的方法入参类型
- B类作为A类方法的返回值类型
但是,我们在看许多的类图中。主要还是以方法的入参类型
来说明依赖关系。
泛化(继承)
泛化关系其实就是是继承
关系,既子类继承父类
。
实现
普通类对于接口类的实现,以达到规范,增强普通类
的作用。实现可以用普通表示法
和棒棒糖表示法
。
普通表示法:
棒棒糖表示法:
关联
表示两个类的关联关系
,通过成员方法
即可看出有无此关系。而关联关系会有对应的数量级关联
,例如一对一,一对多等(比如,一只大雁有两只翅膀,一只大雁只有一个嘴巴)。关联关系比较“抽象”,凡事有两个类有关联都可以用关联关系;但是具体强弱关联
,要看是组合还是聚合
。
组合
关联关系的一种,用于表示整体与部分之间的关系
,属于强关联
。换而言之,A类的生命周期与B类的生命周期相同,既A类消亡后B类也会消亡。所以,在成员属性中,声明该类就直接创建了该类
聚合
关联关系的一种,也是用于表示整体与部分之间的关系
,属于弱关联
。
既双方的生命周期各不相同,可以根据需求初始化或不初始化。
IDEA中的类图
IDEA可通过如下步骤对类图进行查看:
并且,IDEA也提供了较为友好的区分。
-
对于继承使用了
蓝色实线
、实现使用绿色虚线
。 -
特别为构造方法准备一个矩形
-
权限控制采用图标:
- 成员属性方法状态(final、static)在最左侧原型上下。
小结
本文图片来自《大话设计模式》
;这本书对于入门来说比较友好,很浅显易懂。但是应该是本入门级的书,比如代理模式就没有进行细分静态代理、动态代理。但是以生活中常见的案例来说明设计模式,能让大家能更好的理解相应模式的作用。
另外对于时序图的绘制,可以使用startUML
或者下载IDEA插件
,startUML
可以进行拖拽式绘制,不需要考虑其他的语法。