类图是面向对象建模的一种表现形式,类图中的类表示了主要元素,应用程序中的交互以及要编程的类。
示例
语法
类
mermaid
提供了表示类成员的机制,例如属性和方法,以及有关他们的其他信息。
定义类
在mermaid
中有两种方式定义类:
- 使用
class
关键字来定义类 - 使用以下表格关键字来一次定义两个类及其关系的关系
关键字 | 描述 |
---|---|
<|– | 继承 |
*– | 组合 |
o– | 集合 |
–> | 联合 |
– | 链接(solid) |
…> | 属于 |
…|> | 实现 |
… | 链接(Dashed) |
代码
classDiagram
%% 使用第一种方式定义类
class Object
%% 使用第二种方式定义两个类,并定义父子类关系
classA <|-- classB :类A继承自类B
classC *-- classD
classE o-- classF
classG <-- classH
classI -- classJ
classK <.. classL
classM <|.. classN
classO .. classP
示例
tips:还可以在第二种方式定义类中[classA][Arrow][ClassB]:LabelText
来描述类关系
定义类成员
mermaid
对类的属性和方法的区分是通过()
进行判断的,具有()
的被视为函数或者方法,其他所有都将视为属性。
有两种定义类成员的方法:
- 使用
类名
: [属性类型表1] 后跟成员名称关联类的成员 [属性类型表2(可选)]
属性类型表1
关键字 | 描述 |
---|---|
+ | 公有属性 |
- | 私有属性 |
# | 受保护属性 |
~ | 封装/内部属性 |
属性类型表2
关键字 | 描述 |
---|---|
* | Abstract |
$ | Static |
classDiagram
class BankAccount
BankAccount : +String owner
BankAccount : -BigDecimal balance *
BankAccount : #deposit(amount)
BankAccount : ~withdrawal(amount) $
- 使用
{}
方括号一次性定义多个成员
classDiagram
class BankAccount{
+String owner
-BigDecimal balance *
#deposit(amount)
~withdrawal(amount) $
}
示例
函数返回类型
函数返回类型可以定义在方法或函数空格后。
代码
classDiagram
class BankAccount{
+String owner
+BigDecimal balance
+deposit(amount) bool
+withdrawal(amount) int
}
示例
泛型类型
如果需要定义泛型类型list<int>
,可以通过在mermaid
中使用list~int~
进行定义。
代码
classDiagram
class Square~Shape~{
int id
List~int~ position
setPoints(List~int~ points)
getPoints() List~Int~
}
Square : -Size
类的注释
可以使用以下方式进行注释:
<<Interface>>
表示接口类<<Abstract>>
表示抽象类<<Service>>
表示服务类<<Enumeration>>
表示枚举
代码
classDiagram
class Shape
%% 声明Shape为接口类
<<interface>> Shape
Shape : noOfVertices
Shape : draw()
%% 声明枚举
class Color{
<<enumeration>>
RED
BLUE
GREEN
WHITE
BLACK
}
示例
类关系
类图中的多重性或基数表示一个类的实例数,这些实例可以链接到另一个类的实例。例如,每个公司将有一名或多名员工(不是零),并且每个员工目前在零家公司或一家公司工作。
多重性表示法放置在关联末尾附近。
不同的基数选项是:
1
:只有 1 个0..1
: 零或一1..*
: 一个或多个*
:多n
: n0..n
:0 到 N1..n
:1 到 N
通过将文本选项放在给定箭头之前或之后的引号内,可以轻松定义基数。例如:[classA] "1" [Arrow] "0..1" [ClassB]:LabelText
代码
classDiagram
Student "1" --> "1..*" Course :一个学生有多个课程
Galaxy --> "非常多" Star
示例