Mermaid画UML类图
Mermaid画类图
语法简单,可在线画图
简单示例
语法
基础类
classDiagramclass 类名 {<<修饰符>>+公有属性: 类型-私有属性: 类型#保护属性: 类型+公有方法(参数) 返回值类型-私有方法()}
效果展示:
语法细节:
- 命名约定: 类名应仅由
字母
、数字
字符(包括 Unicode)、下划线
和短横线 (-
) 组成。 - 修饰符:
<<interface>>
(接口)、<<abstract>>
(抽象类)、<<enum>>
(枚举) - 给类添加标签:
class 标签类名["类标签信息..."]
- 可见性符号:
+
公有(public)-
私有(private)#
保护(protected)~
包内可见(package/internal)
类关系
--
表示实线、..
表示虚线
关系类型 | 语法 | 示例 | 说明 |
---|---|---|---|
继承(泛化) | <|-- | 父类 <|-- 子类 | 空心三角箭头+实线 |
实现接口 | <|.. | 接口 <|.. 实现类 | 空心三角箭头+虚线 |
关联 | --> 或 -- | 类A --> 类B | 单向关联(箭头指向被包含方) |
双向关联 | <--> | 类A <--> 类B | 双向箭头 |
聚合 | o-- | 整体 o-- 部分 | 空心菱形+实线(整体与部分) |
组合 | *-- | 整体 *-- 部分 | 实心菱形+实线(强所属关系) |
依赖 | ..> 或 ..|> | 类A ..> 类B | 虚线箭头(临时使用关系) |
注释
PS:下方示例中的classname表示类名
1、关系注释
classname1 --> classname2 : 注释信息
2、类注释
note for classname "类注释信息"
3、忽略型注释
可以在类图中输入注释,解析器将忽略这些注释。注释需要位于它们自己的行上,并且必须以 %%
(双百分号)为前缀。直到下一行之前的任何文本都将被视为注释
,包括任何类图语法。
其他常用语法
- 设置图将呈现的方向:
direction RL
,RL左右,TM上下(默认TM) - 类关系的多重性:
classname2 "1" --> "n" classname1
,表示类2和类1是1对n的关系 - 可以使用
note "line1\nline2"
在图上添加备注 - PS:还有其他设置样式、交互的语法,有兴趣可以阅读官方文档
综合示例
PS:仅做综合示例,不考虑类之间关系的设计规范
完整代码
classDiagramdirection TMclass 父类A {+公有属性: 类型#保护属性: 具体类D+公有方法(参数) 返回值类型}note "PS:仅做综合示例,不考虑类之间关系的设计规范"class 子类B {-私有属性: 类型+重写父类方法(参数) 返回值类型-私有方法()}父类A <|-- 子类B : 泛化(类2继承类1)class 抽象类C {<<abstract>>+抽象方法(参数) 返回值类型*}class 具体类D{+实现抽象方法(参数) 返回值类型}抽象类C <|-- 具体类D:实现接口父类A --> 具体类D: 单向关联class 类E {+属性:类F=None+属性:类G的实例列表=[]}class 类F {+属性:类E=None+属性:测试类H的实例+属性:[子类B的实例1,子类B的实例...]}class 类G {+方法(instance_F:类F)}类E <--> 类F : 双向关联类G ..> 类F : 依赖类E o-- 类G : 聚合(弱拥有)类F "1" *-- "1..n" 子类B : 组合(拥有>)class 测试类H类F *-- 测试类H : 组合(包含>)
了解更多,请前往官方文档
其他工具:plantuml
还有其他工具也比较常用来画类图,比如:plantuml
,语法类似,功能更多
简单示例
语法
元素声明:
类关系简单示例:
类
了解更多plantuml语法,可查看官方文档