PlantUML类图使用总结

使用PlantUML绘制类图

本文基于PlantUML官网绘制类图和相关如何正确uml类图相关文章。

为什么使用plantUml

原因很简单,不用自己考虑构图,像写代码一样写出来,图出来既美观又能够符合逻辑。

基本类构成

基本使用

基本类构成

使用class关键字构件类,同理其他关键字。如interface,enum

在类中使用 - # + 分别对应表示类中的private,protected,public。如果在类中使用 staticabstract关键字,需要使用大括号包裹起来。

备注使用note来实现,可以使用js优化备注的样式,具体可以参考下面的代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@startuml
' 简单定义类A
class classA
'定义类B
class classB{
-{static} STATIC:Type
-a:A
#b:B
+c:C
+hello():void
-word():void
}
'抽象类C
abstract class classC {
+ {abstract} method1:void
}
'备注
note right: note on right
note top of classA : note on top
' 复杂备注
note top of object
In java, <size:18>every</size> <u>class</u><b>extends</b><i>this</i> one.
end note
@enduml

类更多使用

复杂

更复杂一些的类的构件参考上图。

使用__内容__来表示分割线,对不同类型的进行分割。在类名后加<? extends xxx> 表示范型,参考下面代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@startuml
class classC <<Serializable>> {
__variable__
-a:A
#b:B
+c:C
__methods__
+hello():void
-word():void
}

class classD <? extends List>{

}
@enduml

关系表示

继承与实现

继承与实现

继承指的就是泛化,如图中左表示一样,类A继承于B,由子类实现父类的行为。泛化使用带大三角箭头和实线来表示,表示一种继承关系。

实现指的是特定类实现接口,如图中右表示一样,类implement实现interface,表示实现类实现接口类的关系。同样会由子类实现接口类中的行为。实现使用带大三角的箭头和虚线来实现。

无论是继承还是实现,箭头都执行夫类,也就是被实现类。

依赖与关联

依赖与关联

使用plantUML代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@startuml
'依赖与关联
Class X
' 依赖关系
X ..> Y :"依赖关系"

class A
' 单向关联 A关联B
A--> B :"单向关联"
' 双向关联
class C
C -- D : "双向关联"
' 自关联
class F
F --> F:"自关联"
' 聚合关系
class G {
List<H> h
}
G "n" o-- "1" H : "组合关系"
' 组合关系
class K {
List<L> l
}
K "n"*--"1" L :"聚合关系"
@enduml
一、依赖关系

依赖是一种使用的关系,代码中体现到依赖的关系的情况:局部变量方法的参数或者对静态方法的调用,依赖是最弱的一种关联。依赖关系使用虚线和普通的小箭头来实现,箭头指向被依赖的对象。如图中的x依赖y一样,所以指向y,这个被x依赖的对象。

二、关联关系

关联是拥有的关系,如玩家与游戏中的角色一样。关联可能是单向的,也可能是双向的,也同样能够自己关联自己。代码中体现到关联的关系的情况:成员变量。关联关系使用实线和小尖头来实现,箭头指向被关联的对象。

三、组合关系

组合关系是整体与部分的关系,但是如果整体不存在,那部分也不能存在。就如同公司与部门一样,公司解散了,部门也就不存在了。和关联关系相同,在代码中的体现也是成员变量。组合关系使用空心的菱形和实线来表示。

四、聚合关系

聚合关系是整体与部分的关系,但是和组合关系不同的是,聚合关系中的部分可以脱离整体而存在,就如同麦当劳中的套餐与汉堡一样。在代码中的体现同样是成员变量。聚合关系使用实心的菱形和实线来表示。

所以可以说聚合关系和组合关系是关系更加确定,更加紧密的关联关系。

各关系的强弱顺序

泛化= 实现> 组合> 聚合> 关联> 依赖

PlantUML支持更多的更复杂的情景下的图形绘制,具体可以查看PlantUML的中文网站

-------------本文结束感谢您的阅读-------------

本文标题:PlantUML类图使用总结

文章作者:NanYin

发布时间:2019年06月26日 - 12:06

最后更新:2019年08月12日 - 13:08

原始链接:https://nanyiniu.github.io/2019/06/26/2019-06-26-PlantUML%E7%B1%BB%E5%9B%BE%E4%BD%BF%E7%94%A8%E6%80%BB%E7%BB%93/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。