- 一、PlantUml简介
- 二、类与类之间关系汇总整理
- 三、PlantUml类图语法介绍
- 四、类图
- 五、类图 PlantUml 代码
本文介绍如何使用 PlantUml 插件来画 Uml 图
一、PlantUml简介
PlantUML 是一个可以快速编写各种图表的工具,可以通过安装 Intellij Idea 或者 Vs Code 插件来画图,也可以在线编辑,链接为:
https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000
类图示例文档链接为:
https://plantuml.com/zh/class-diagram
动动发财小手,关注 + 点赞 + 收藏不迷路。
二、类与类之间关系汇总整理
- 依赖关系(Dependency)
单向,表示一个类依赖于另一个类的定义,其中一个类的变化将影响另外一个类,是一种“use a”关系
如果A依赖于B,则B表现为A的局部变量,方法参数,静态方法调用等
局部变量
public class Animal {public void drink() {Water water = new Water();//局部变量....}
}
方法参数
public class Animal {public void drink(Water water) {//方法参数....}
}
静态方法调用
public class Animal {public void drink() {Water.drink();//静态方法调用....}
}
- 关联关系(Association)
单向或双向(通常我们需要避免使用双向关联关系),是一种"has a"关系,如果A单向关联B,则可以说A has a B,通常表现为全局变量。
单向关联:
public class Person {public Phone phone;public void setPhone(Phone phone) {this.phone = phone;}public Phone getPhone() {return phone;}
}
双向关联:
public class Man {public Women women;public void setWomen(Women women) {this.women = women;}public Women getWomen() {return women;}
}public class Women {public Man man;public void setMan(Man man) {this.man = man;}public Man getMan() {return man;}
}
- 聚合关系(Aggregation)、组合关系(Composition)
这两个关系我们放在一起,因为他们看似十分的相似,但是却有着本质的区别。
聚合
不同的工种聚合在一起变成了施工人员,施工人员包含工程师、电工、木工等,是整体和个体之间的关系,即 has-a 的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期。即施工人员可以不存在,但是工程师仍然存在。
public class Builders {public Engineer engineer;public void setEngineer(Engineer engineer) {this.engineer = engineer;}public Engineer getEngineer() {return engineer;}
}
组合
电脑由cpu、内存、硬盘组合而成,虽然组合和聚合我们都说“有”什么,但是这个“有”是不同的,他体现的是一种 contains-a 的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,比如cpu坏了,电脑也就无法使用。
public class Computer {public Cpu cpu;public void setCpu(Cpu cpu) {this.cpu = cpu;}public Cpu getCpu() {return cpu;}
}
- 继承关系(extends)
类继承抽象类,子类继承父类都属于这种关系
public class Child extends Father {
}
- 实现关系(implements)
类实现接口
public class MyRunnable implements Runnable {@Overridepublic void run() {}
}
三、PlantUml类图语法介绍
- 类属性字段以及方法访问权限映射关系**
| 符号 | 访问权限 |
|---|---|
| - | private |
| # | protected |
| ~ | package private |
| + | public |
- 依赖
Water <… Animal : 依赖
- 关联
Phone <-- Person : 关联
- 双向关联
Man <–> Women : 双向关联
- 聚合
Engineer <–o Builders : 聚合
- 组合
Cpu <–* Computer : 组合
- 继承
Father <|-- Child : 继承
- 实现
Runnable <|… MyRunnable : implements
- 其他
箭头方向可以在左边,也可以在右边。
–表示纵向的实线,-表示横向的实线。
…表示纵向的虚线,-表示横向的虚线。
在符号两侧可以用""来添加对元素的说明。
在关系末尾可以用:来添加对关系的说明。
四、类图
类图如下:

五、类图 PlantUml 代码
plantuml 代码如下:
@startuml
scale 300 widthtitle 类图关系示例演示class Water {
+static void drink()
}class Animal {
}class Phone {
}class Person {
}class Man {
}class Women {
}class Engineer {
}class Builders {
}class Cpu {
}class Computer {
}class Father {
}class Child {
}interface Runnable {
+run()
}class MyRunnable {
+run()
}Water <.. Animal : 依赖
Phone <-- Person : 关联
Man "1" <--> "1" Women : 双向关联
Engineer <--o Builders : 聚合
Cpu <--* Computer : 组合
Father <|-- Child : 继承
Runnable <|.. MyRunnable : implements
@enduml
引用:
1.https://blog.csdn.net/qq_28379809/article/details/79499577
2.https://www.cnblogs.com/jisijie/p/5062109.html
3.https://cloud.tencent.com/developer/article/1932863
















![[UML] 类图介绍 —— 程序员(灵魂画手)必备画图技能之一](https://img-blog.csdnimg.cn/20210423224133882.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzI1MjA3Mjk1,size_16,color_FFFFFF,t_70#pic_center)
