使用Markdown绘制类图

类图是面向对象建模的一种表现形式,类图中的类表示了主要元素,应用程序中的交互以及要编程的类。

示例

Animal
+int age
+String gender
+isMammal()
+mate()
Duck
+String beakColor
+swim()
+quack()
Fish
-int sizeInFeet
-canEat()
Zebra
+bool is_wild
+run()

语法

mermaid提供了表示类成员的机制,例如属性和方法,以及有关他们的其他信息。

定义类

mermaid中有两种方式定义类:

  1. 使用class关键字来定义类
  2. 使用以下表格关键字来一次定义两个类及其关系的关系
关键字描述
<|–继承
*–组合
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

示例

类A继承自类B
Object
classA
classB
classC
classD
classE
classF
classG
classH
classI
classJ
classK
classL
classM
classN
classO
classP

tips:还可以在第二种方式定义类中[classA][Arrow][ClassB]:LabelText来描述类关系

定义类成员

mermaid对类的属性和方法的区分是通过()进行判断的,具有()的被视为函数或者方法,其他所有都将视为属性。

有两种定义类成员的方法:

  1. 使用类名: [属性类型表1] 后跟成员名称关联类的成员 [属性类型表2(可选)]

属性类型表1

关键字描述
+公有属性
-私有属性
#受保护属性
~封装/内部属性

属性类型表2

关键字描述
*Abstract
$Static
classDiagram
	class BankAccount
	BankAccount : +String owner
	BankAccount : -BigDecimal balance *
	BankAccount : #deposit(amount) 
	BankAccount : ~withdrawal(amount) $
  1. 使用{}方括号一次性定义多个成员
classDiagram
class BankAccount{
    +String owner
    -BigDecimal balance *
    #deposit(amount) 
    ~withdrawal(amount) $
}

示例

BankAccount
+String owner
-BigDecimal balance
#deposit(amount)
~withdrawal(amount)

函数返回类型

函数返回类型可以定义在方法或函数空格后。

代码

classDiagram
class BankAccount{
    +String owner
    +BigDecimal balance
    +deposit(amount) bool
    +withdrawal(amount) int
}

示例

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
Square<Shape>
int id
List<int> position
-Size
setPoints(List<int> points)
getPoints() : List<Int>

类的注释

可以使用以下方式进行注释:

  • <<Interface>>表示接口类
  • <<Abstract>>表示抽象类
  • <<Service>>表示服务类
  • <<Enumeration>>表示枚举

代码

classDiagram
class Shape
%% 声明Shape为接口类
<<interface>> Shape
Shape : noOfVertices
Shape : draw()	
%% 声明枚举
class Color{
	 <<enumeration>>
    RED
    BLUE
    GREEN
    WHITE
    BLACK
}

示例

«interface»
Shape
noOfVertices
draw()
«enumeration»
Color
RED
BLUE
GREEN
WHITE
BLACK

类关系

类图中的多重性或基数表示一个类的实例数,这些实例可以链接到另一个类的实例。例如,每个公司将有一名或多名员工(不是零),并且每个员工目前在零家公司或一家公司工作。

多重性表示法放置在关联末尾附近。

不同的基数选项是:

  • 1 :只有 1 个
  • 0..1: 零或一
  • 1..*: 一个或多个
  • * :多
  • n: n
  • 0..n :0 到 N
  • 1..n:1 到 N
    通过将文本选项放在给定箭头之前或之后的引号内,可以轻松定义基数。例如:[classA] "1" [Arrow] "0..1" [ClassB]:LabelText

代码

classDiagram
	Student "1" --> "1..*" Course :一个学生有多个课程
	Galaxy --> "非常多" Star 

示例

一个学生有多个课程
1
1..*
非常多
Student
Course
Galaxy
Star
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值