当前位置: 首页 > news >正文

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语法,可查看官方文档

http://www.xdnf.cn/news/886033.html

相关文章:

  • 深度学习N2周:构建词典
  • 【笔记】解决MSYS2安装后cargo-install-update.exe-System Error
  • Mybatis动态SQL语句
  • aitrader兼容talib,布林带的简单策略,创业板十年年年化15.5%,附代码
  • 成都芯谷金融中心·文化科技产业园:构建产业新城的实践与探索
  • Python打卡训练营day45——2025.06.05
  • 11 - ArcGIS For JavaScript -- 高程分析
  • Redis 缓存策略:借助缓存优化数据库性能并保障数据一致性
  • Liunx进程替换
  • 【Linux篇】0基础之学习操作系统进程
  • 2021 RoboCom 世界机器人开发者大赛-高职组(初赛)解题报告 | 珂学家
  • Spring中@Primary注解的作用与使用
  • Dockerfile实践java项目
  • 哈希算法实战全景:安全加密到分布式系统的“核心引擎”
  • 25_06_05Ubuntu系统root密码破解
  • Vite模块联邦(vite-plugin-federation)实现去中心化微前端后台管理系统架构
  • ROS:pcd点云转为路径规划的pgm文件和yaml文件
  • PHP的namespace
  • 第十三节:第五部分:集合框架:集合嵌套
  • ubuntu24.04 使用apt指令只下载不安装软件
  • BENTLY模块特价型号3300/16-14-01-03-00-00-01找小游、主要应用领域
  • ArcGIS Pro 3.4 二次开发 - 公共设施网络
  • windows server2019 不成功的部署docker经历
  • python项目如何创建docker环境
  • 无 sudo 权限下 Conda 安装 GCC 全攻略:虚拟环境适配、版本冲突解决与实战指南
  • 负载均衡将https请求转发后端http服务报错:The plain HTTP request was sent to HTTPS port
  • RAG:大模型微调的革命性增强——检索增强生成技术深度解析
  • Android15 launcher3
  • proteus8安装教程
  • PLM软件:如何打通产品研发全生命周期的“任督二脉”?