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
相关推荐
吴声子夜歌7 小时前
PlantUML——状态图
uml·plantuml·状态图
吴声子夜歌13 小时前
PlantUML——序列图
uml·plantuml·序列图
吴声子夜歌15 小时前
PlantUML——活动图
uml·plantuml·活动图
吴声子夜歌1 天前
PlantUML——类图(二)
uml·plantuml·类图
吴声子夜歌2 天前
PlantUML——对象图
uml·plantuml·对象图
吴声子夜歌3 天前
PlantUML——用例图
uml·plantuml
弈风千秋万古愁2 个月前
plantuml支持的绘图种类
plantuml
弈风千秋万古愁2 个月前
vscode使用markdown+plantuml
vscode·markdown·plantuml
Minilinux20184 个月前
工具使用系列之 PlantUML画UML时序图
uml·plantuml·统一建模语言·sequence·时序图
JaredYe4 个月前
node-plantuml-2:革命性的纯Node.js PlantUML渲染器,告别Java依赖!
java·开发语言·node.js·uml·plantuml·jre