PlantUML语法(全)及使用教程-类图

目录


1. 类图

类图的设计语法与编程语言的传统语法相似。这种相似性为开发人员提供了一个熟悉的环境,从而使创建图表的过程更简单、更直观。这种设计方法不仅简洁,而且还能创建既简洁又富有表现力的表述。此外,它还允许通过与序列图相呼应的语法来描绘类之间的关系,为流畅而深刻地描绘类之间的交互铺平了道路。除了结构和关系表示法,类图语法还支持进一步的丰富,如包含注释和应用颜色,使用户能够创建信息丰富且视觉上吸引人的图表。

1.1、什么是类图

类图(Class Diagram)是描述类、接口、协同以及他们之间关系的图,用来显示系统中这些概念的静态结构。

类图是其它图的基础。我们可以在类图的基础上,使用状态图、协作图、组件图和配置图等。

类图的主要作用有:

  1. 对系统的词汇进行建模
  2. 对简单的协作进行建模
  3. 对逻辑数据库模式进行建模

类图主要由类、接口和各种关系组成。

关系主要包括泛化关系、依赖关系、关联关系和实现关系。

1.2、元素声明

java 复制代码
@startuml
abstract        abstract
abstract class  "abstract class"
annotation      annotation
circle          circle
()              circle_short_form
class           class
class           class_stereo  <<stereotype>>
diamond         diamond
<>              diamond_short_form
entity          entity
enum            enum
exception       exception
interface       interface
metaclass       metaclass
protocol        protocol
stereotype      stereotype
struct          struct
@enduml

1.3、类之间的关系

关系类型 符号 绘图
泛化关系 <--
组合关系 *--
聚合关系 o--

可以用... 来代替-- ,会显示为虚线。

java 复制代码
@startuml
Class01 <|-- Class02
Class03 *-- Class04
Class05 o-- Class06
Class07 .. Class08
Class09 -- Class10
@enduml
java 复制代码
@startuml
Class11 <|.. Class12
Class13 --> Class14
Class15 ..> Class16
Class17 ..|> Class18
Class19 <--* Class20
@enduml
java 复制代码
@startuml
Class11 <|.. Class12
Class13 --> Class14
Class15 ..> Class16
Class17 ..|> Class18
Class19 <--* Class20
@enduml

1.4、关系上的标签

在关系之间使用标签来说明时, 使用 :后接 标签文字。 对元素的说明,你可以在每一边使用 "" 来说明

java 复制代码
@startuml
类01 "1" *-- "many" 类02 : 包含
类03 o-- 类04 : 聚合
类05 --> "1" 类06
@enduml

在标签的开始或结束位置添加< 或 >以表明是哪个对象作用到哪个对象上

java 复制代码
@startuml
class 汽车

发动机 - 汽车 : 驱动 >
汽车 *- 轮子 : 拥有 4 >
汽车 -- 人 : < 所属
@enduml

1.5、在元素名称和关系标签中使用非字母

如果你想在类(或枚举...)的显示名称中使用非字母,可以

  • 在类定义中使用as 关键字来指定一个别名
  • 在类名称周围加上引号""
java 复制代码
@startuml
class "This is my class" as class1
class class2 as "It works this way too"

class2 *-- "foo/dummy" : use
@enduml

1.6、添加方法

要声明属性和方法,你可以使用符号:,后面跟字段或方法的名称。 编译器会通过检查括号来选择方法和字段。

java 复制代码
@startuml
Object <|-- ArrayList

Object : equals()
ArrayList : Object[] elementData
ArrayList : size()

@enduml

可用花括号{} 为所有属性和方法分组。 注意,语法对类型/名称的顺序有很大的灵活性。

java 复制代码
@startuml
class Dummy {
  String data
  void methods()
}

class Flight {
   flightNumber : Integer
   departureTime : Date
}
@enduml

可以使用{field}和{method}修饰符来覆盖编译器对属性和方法的默认识别。

java 复制代码
@startuml
class Dummy {
  {field} A field (despite parentheses)
  {method} Some method
}
@enduml
相关推荐
EQ-雪梨蛋花汤15 天前
【如何做好一份技术文档?】用Javadoc与PlantUML构建高质量技术文档(API文档自动化部署)
java·api·ci·plantuml·doc
斗转星移31 个月前
Ubuntu20.04 中使用vscode中编辑查看PlantUML
linux·vscode·uml·plantuml
北冥有鱼被烹3 个月前
【微知】plantuml在泳道图中如何将多个泳道框起来分组并且设置颜色?(box “浏览器“ #LightGreen endbox)
plantuml
小沈同学呀5 个月前
Java UML 类图绘制解析:结构与工具类型详解
java·开发语言·uml·plantuml
Just_Paranoid5 个月前
PlantUML 入门使用指南
uml·建模·plantuml·类图·用例图·序列图
geocat5 个月前
plantuml的picoweb无法渲染分页图表的问题
vscode·plantuml
morning_judger6 个月前
【PlantUML系列】状态图(六)
plantuml
morning_judger6 个月前
【PlantUML系列】流程图(四)
流程图·plantuml
巽星石8 个月前
PlantUML中的实体关系图
uml·plantuml·er图