使用PlantUML绘制类图
本文基于PlantUML官网绘制类图和相关如何正确uml类图相关文章。
为什么使用plantUml
原因很简单,不用自己考虑构图,像写代码一样写出来,图出来既美观又能够符合逻辑。
基本类构成
基本使用
使用class
关键字构件类,同理其他关键字。如interface
,enum
。
在类中使用 - # +
分别对应表示类中的private
,protected
,public
。如果在类中使用 static
、abstract
关键字,需要使用大括号包裹起来。
备注使用note
来实现,可以使用js优化备注的样式,具体可以参考下面的代码。
1 | @startuml |
类更多使用
更复杂一些的类的构件参考上图。
使用__内容__
来表示分割线,对不同类型的进行分割。在类名后加<? extends xxx>
表示范型,参考下面代码:
1 | @startuml |
关系表示
继承与实现
继承指的就是泛化,如图中左表示一样,类A继承于B,由子类实现父类的行为。泛化使用带大三角箭头和实线来表示,表示一种继承关系。
实现指的是特定类实现接口,如图中右表示一样,类implement
实现interface
,表示实现类实现接口类的关系。同样会由子类实现接口类中的行为。实现使用带大三角的箭头和虚线来实现。
无论是继承还是实现,箭头都执行夫类,也就是被实现类。
依赖与关联
使用plantUML代码实现:
1 | @startuml |
一、依赖关系
依赖是一种使用的关系,代码中体现到依赖的关系的情况:局部变量
、方法的参数或者对静态方法的调用
,依赖是最弱的一种关联。依赖关系使用虚线和普通的小箭头来实现,箭头指向被依赖的对象。如图中的x依赖y一样,所以指向y,这个被x依赖的对象。
二、关联关系
关联是拥有的关系,如玩家与游戏中的角色一样。关联可能是单向的,也可能是双向的,也同样能够自己关联自己。代码中体现到关联的关系的情况:成员变量
。关联关系使用实线和小尖头来实现,箭头指向被关联的对象。
三、组合关系
组合关系是整体与部分
的关系,但是如果整体不存在,那部分也不能存在。就如同公司与部门一样,公司解散了,部门也就不存在了。和关联关系相同,在代码中的体现也是成员变量
。组合关系使用空心的菱形和实线来表示。
四、聚合关系
聚合关系是整体与部分
的关系,但是和组合关系不同的是,聚合关系中的部分
可以脱离整体而存在,就如同麦当劳中的套餐与汉堡一样。在代码中的体现同样是成员变量
。聚合关系使用实心的菱形和实线来表示。
所以可以说聚合关系和组合关系是关系更加确定,更加紧密的关联关系。
各关系的强弱顺序
泛化= 实现> 组合> 聚合> 关联> 依赖
PlantUML支持更多的更复杂的情景下的图形绘制,具体可以查看PlantUML的中文网站。