本文介绍如何使用Markdown绘制UML图
创建UML类图
1
2<pre class="mermaid"> classDiagram
// 以上为固定写法,此处开始创建对象与关系</pre>类与接口
创建
1
2
3class A {
}classDiagram class A { }
类型
符号 类型 < > 接口 < > 抽象类 < > service类 < > 枚举 使用方式:
1
2
3
4
5
6
7
8// 方式一:内嵌
class A {
<<Interface>>
}
// 方式二:单独的行
class B
<<Interface>> BclassDiagram class A { <
> } class B < > B 属性
两种方式内联和单独指定
方式一:
1
2
3
4
5
6
7class A
A : +String name
A : -int age
A : List~Object~ child //泛型变量
A : +eat()
A : +sleep(time) //有参数的方法
A : +getAge() int //有返回值的方法classDiagram class A A : +String name A : -int age A : List~Object~ child //泛型变量 A : +eat() A : +sleep(time) //有参数的方法 A : +getAge() int //有返回值的方法
方式二:
1
2
3
4
5
6
7
8class B {
+String name
-int age
List~Object~ child
+eat()
+sleep(time)
+getAge() int
}classDiagram class B { +String name -int age List~Object~ child +eat() +sleep(time) +getAge() int }
元素可见范围:
修饰符号 可见范围 - private + public # protected ~ package
关系
继承
表示子类继承父类的所有特征和行为
1
ClassA <|-- ClassB // class B extends A
classDiagram ClassA <|-- ClassB
实现
类是接口所有特征和行为的实现
1
InterfaceA <|.. ClassB // class B implements interface A
classDiagram InterfaceA <|.. ClassB
组合/聚合
组合: 整体与部分的关系,但部分不能离开整体而单独存在 带实心菱形的实线,实心菱形指向整体
聚合: 整体与部分的关系,且部分可以离开整体而单独存在 带空心菱形的实现,空心菱形指向整体。
1
ClassA *-- ClassB // class B is part of A
classDiagram ClassA *-- ClassB
关联
一个类知道另一个类的属性和方法;关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头
1
2ClassA -- ClassB
ClassC <-- ClassDclassDiagram ClassA -- ClassB ClassC <-- ClassD
依赖
一个类的实现需要另一个类的协助
1
ClassA <.. ClassB
classDiagram ClassA <.. ClassB
关系标识
关系上添加标签
1
ClassA <.. ClassB : 依赖
classDiagram ClassA <.. ClassB : 依赖
关系上添加数量
符号 含义 1 1个 0..1 0或1个 1..* 1个或多个 * 任意个 n n个(n>1) 0..n 0个到n个(n>0) 1..n 1到n个(n>1) 1
ClassA "1" --> "*" ClassB
classDiagram ClassA "1" --> "*" ClassB
例子
classDiagram class Parent { <> +String name -int age #List children ~Float weight +eat() +sleep() } class Child { +String toy -Integer grade } Parent "1" <|-- "*" Child : 继承