plantuml:类图

PlantUML类图

类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解。它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。

(Class)封装了数据和行为,是具有相同属性、操作、关系的对象集合。在系统中,每个类都有一定的职责,这里的“职责”指的是类要完成什么样的功能、承担什么样的义务。一个类可以有多种职责,但是设计得比较优秀的系统中一个类对应一个职责。

在定义类的时候,将类的职责分解为类的属性方法。在UML当中分别使用{field}{method}来显式声明。类的图形化表述如下:

«类属性»这是一个类属性1属性2方法1方法2

@startuml
abstract        abstract
abstract class  "abstract class"
annotation      annotation
circle          circle
()              circle_short_form
class           class
diamond         diamond
<>              diamond_short_form
entity          entity
enum            enum
interface       interface
@enduml

abstractabstract classannotationcirclecircle_short_formclassentityenuminterface

类之间的关系使用<|–这样的线条来定义。类的关系有六种:

表示父类与子类之间的关系。如“汽车”与“车辆”之间的关系。泛化关系使用带有空心箭头的实线表示,从子类指向父类。

@startuml
class 动物
class 老虎
动物<|--老虎
@enduml

动物老虎

实现是一种类与接口的关系,表示类是接口所有特征和行为的实现。实现关系使用带空心三角形的虚线,箭头指向接口。

@startuml
class IBrush <<接口>>
class PenBrush
IBrush<|..PenBrush
@enduml

«接口»IBrushPenBrush

关联是一种“拥有”关系。表示一个类“知道”另一个类的属性和方法。如老师和学生、丈夫与妻子。关联可以是双向的,也可以是单向的。双向关联没有箭头或者带有两个箭头,单向关联有一个箭头指向被拥有者。

@startuml
class 老师 {
{field}学生列表
{method}上课
}
class 学生 {
{field}课程表
{method}上课
}
class 课程
老师-学生
学生->课程
@enduml

老师学生列表上课学生课程表上课课程

聚合是整体与部分的关系,而且部分可以单独离开整体独立存在。如轮胎与汽车。聚合关系使用带有空心菱形的实线,菱形指向整体。

@startuml
class 汽车 {
{field}发动机
{field}变速箱
{field}轮胎
}
class 发动机
class 变速箱
class 轮胎
汽车 o--> 发动机
汽车 o--> 变速箱
汽车 o--> 轮胎
@enduml

汽车发动机变速箱轮胎发动机变速箱轮胎

组合是整体与部分的关系,但是部分不能离开整体而单独存在。组合关系使用带有实心菱形的实线表示,菱形指向整体。

@startuml
class 公司
class 研发部
公司 *--> 研发部
@enduml

公司研发部

依赖是一种使用的关系,一个类的实现依赖于另一个类的协助,所以尽量不要使用双向依赖。使用带箭头的虚线来表示,箭头指向被使用的一方。

@startuml
class 电子邮件
class 互联网
电子邮件 ..> 互联网
@enduml

电子邮件互联网

类图的关系可以用下图来演示:

@startuml
class 动物 {
	{field} 生命
	{method} 新陈代谢(氧气,水)
	{method} 繁殖
}
class 氧气
class 水
class 鸟 {
	{field} 羽毛
	{method} 下蛋
}
class 翅膀
class 鸭子 {
	{method} 下蛋
}
class 大雁 {
	{method} 下蛋
	{method} 飞
}
class 企鹅 {
	{method} 下蛋
}
interface 飞 <<接口>> {
	{method} 飞
}
class 雁群
class 寒冷气候

氧气 <. 动物
动物 .> 水
动物 <|-- 鸟
鸟 *-> 翅膀
鸟 <|-- 大雁
鸟 <|-- 鸭子
鸟 <|-- 企鹅
飞 <|.. 大雁
大雁 o--> 雁群
企鹅 --> 寒冷气候
@enduml

动物生命新陈代谢(氧气,水)繁殖氧气羽毛下蛋翅膀鸭子下蛋大雁下蛋企鹅下蛋«接口»雁群寒冷气候

对元素的说明,可以在每一边用“”来说明。在标签的开始或者结束位置添加<或者>来表明对象作用在哪一边。

@startuml
class 汽车

发动机 - 汽车 : 驱动 >
汽车 *- 轮子 : 拥有 4× >
汽车 -- "车主/司机"人 : < 拥有
@enduml

汽车发动机轮子驱动拥有 4×拥有车主/司机

字符可访问性
-Private 私有
#Protected 受保护
~Package Private 包内可见
+Public 公有
@startuml
class Dummy {
-Field1
#Field2
~Method1()
+Method2()
}
@enduml

DummyField1Field2Method1()Method2()

可以使用skinparam classAttributeIconSize 0来展示特殊符号本身。

@startuml
skinparam classAttributeIconSize 0
class Dummy {
-Field1
#Field2
~Method1()
+Method2()
}
@enduml

Dummy-Field1#Field2~Method1()+Method2()

  • plantuml/类图.txt
  • 最后更改: 2023/04/15 18:13
  • Ian Goo