系列文章目录
PlantUML绘制活动图
https://blog.youkuaiyun.com/zhangwei_david/article/details/125507374
PlantUML 绘制时序图https://blog.youkuaiyun.com/zhangwei_david/article/details/125451459
目录
前言
类图是描述类、接口以及它们之间的静态关系图;本文主要介绍如何使用PlantUML 绘制类图
一、描述类的类图
一个类图可以分为以下几个部分
- 类名,在名中可以区分抽象类,接口,注解等
- 属性,一个属性可以是public,protected或provide
- 方法,一个方法同属性一样,它可以是public ,protected或provide
二、使用PlantUML绘制类图
1.类
1.1类名
说明 | 语法 | 图示 |
类 | class className | ![]() |
抽象类 | abstract className abstract class "className" | ![]() |
接口 | interface interfaceName | ![]() |
实体 | entity entityName | ![]() |
枚举 | enum enumName | ![]() |
注解 | annotation annotationName | ![]() |
结构 | struct structName | ![]() |
协议 | protocol protocalName | ![]() |
圆形 | cicrle cicleName / () cicleName | ![]() |
菱形 | diamond diamondName / <> diamondName | ![]() |
1.2 类的属性与方法
在PlantUML 中要声明一个类的属性和方法,可以使用符号":",后面跟属性名或方法名称
@startuml
Object:equals()
@enduml
对于复杂的属性与方法可以在{ }定义所有属性与方法
@startuml
class Dummy{
String data
void methods()
}
@enduml
1.3可访问性
在定义属性与方法时,可以使用特殊符号定义相应属性或方法的可访问性值
字符 | 图标(属性) | 图标(方法) | 可访问性 |
- | | | private 私有 |
# | | | protected 受保护 |
~ | | | package private 包内可见 |
+ | | | public 公有 |
1.4 静态与抽象
在定义属性与方法时候,有可能需要定义静态属性或静态方法以及抽象方法,在PlantUML 中可以通过{static}, {abstract}来定义。
@startuml
class Dummy {
{static} String id
{abstract} void methods()
}
@enduml
2.类之间的关系
首先看一下PlantUML 中对于类之间关系的语法
关系类型 | 符号 | 绘图 |
泛化关系 | <|-- | |
关联关系 | -- | —— |
合成关系 | *-- | |
聚合关系 | o-- | |
继承 | extends | class ArrayList implements List |
实现 | implements | class ArrayList extends AbstractList |
2.1一般泛化关系
一般泛化关系表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现。一般泛化关系是从子类指向父类或从实现类指向被实现的接口。
2.2关联关系
关联关系是类与类之间的联接,它使一个类知道另一个类的属性和方法。关联可以是双向的,也可以是单向的。每一个关联的断点还可以有一个基数,表明这一端的类可以有几个实例。在PlantUML 中使用“”来说明每端的基数;常见的基数有:
基数 | 含义 | |
0..1 | 零个或1个实例 | 类1 "1" *-- "1..*" 类2 |
0..* 或 * | 零个或多个 | |
1 | 只有一个实例 | |
1..* | 至少1个实例 |
2.3聚合关系
聚合关系是关联关系的一种,是强关联关系。聚合是整体与个体之间的关系。比如汽车与发送机和轮子之间的关系就是整体与个体之间的关系,一辆汽车是由一个发动机和四个轮子组成的,它们之间的类图如下:
2.4合成关系
和成关系也是关联关系的一种,是比聚合关系更强的一种关系。代表整体关系要负责保持部分对象的存活,部分关系必须依赖于整体;比如猴子与四肢之间的关系就是合成关系,四肢不能脱离猴子独立存在。
2.5类与包
可以通过关键字 package声明包,在包中声明类
@startuml
package "Classic Collections" #DDDDDD {
Object <|-- ArrayList
}
@enduml
三、颜色和样式
如果想绘制一个美观的类图,我们还需要调整颜色和样式,下面就介绍PlantUML 颜色和样式如何设置
3.1 关系的颜色和样式
改变表示关系的线和箭头的颜色或样式,使用下面的单行样式格式:
#color;line.[bold|dashed|dotted];text:color
示例:
@startuml
class foo类
foo类 --> bar类 : 默认
foo类 --> bar类1 #line:red;line.bold;text:red : 红色粗线
foo类 --> bar类2 #green;line.dashed;text:green : 绿色断线
foo类 --> bar类3 #blue;line.dotted;text:blue : 蓝色点线
@enduml
3.2类的颜色和样式
改变类的颜色和样式,可以使用下面方式:
#color ##[style]color
#[color|background:color];header:color;line:color;line.[bold|dashed|dotted];text:color
示例1:
@startuml
abstract 抽象类
annotation 注解 #pink ##[bold]red
class 类 #palegreen ##[dashed]green
interface 接口 #aliceblue ##[dotted]blue
@enduml
示例2:
@startuml
abstract 抽象类
annotation 注解 #pink;line:red;line.bold;text:red
class 类 #palegreen;line:green;line.dashed;text:green
interface 接口 #aliceblue;line:blue;line.dotted;text:blue
@enduml