一分钟了解什么是类图,并学会用mermaid绘制类图
💡什么是类图?
类图(Class Diagram)是统一建模语言(UML)中最常用、最重要的结构图之一。它用于描述系统中静态结构,展示类、接口以及它们之间的关系。类图以面向对象的思想为基础,帮助开发者可视化地理解、设计和文档化系统的数据模型与业务逻辑。
🦚先来看一个类图示例
Mermaid是一种基于文本的图表绘制工具,可直接在 Markdown 或支持的环境中渲染。
以下示例用 #WordBN 笔记软件基于mermaid绘制,该示例展示了一个简单的电商系统类图:
🪐类图示例mermaid代码:
❄️示例图形和代码说明:
- 继承:`
User`是基类,`Customer`继承自`User`(空心三角箭头)。 - 关联:一个`
Customer`拥有多个`Order`(多重性1和0..*)。 - 组合:`
Order`包含`OrderItem`,使用实心菱形(Mermaid 中用`*--`语法,但此处用`--`加文字“包含”表示组合语义,实际 Mermaid 推荐`o--`聚合、`*--`组合)。 - 实现:`
Payment`接口被`CreditCardPayment`实现(虚线空心三角)。 - 依赖:`
Order`使用`Payment`接口的`pay`方法,用虚线箭头`..>`表示。
🗺️类图的核心元素
- 类(Class)
矩形框,通常分三格:- 第一格:类名(抽象类用斜体)
- 第二格:属性(可见性 属性名: 类型,如- name: String)
- 第三格:方法(可见性 方法名(参数): 返回值类型,如+ getName(): String)
可见性符号:+public,-private,#protected,~package
- 接口(Interface)
与类类似,但标注`«interface»`,或使用圆角矩形。 - 关系(Relationships)
类之间通过连线及箭头表达不同语义:
| 关系 | 符号表示 | 英文 | 说明 |
|---|---|---|---|
|
关联 |
实线箭头(或无线) |
Association |
一个类持有另一个类的引用(如“学生→课程”) |
|
聚合 |
空心菱形 + 实线 |
Aggregation |
“整体-部分”,部分可独立存在(如“汽车-轮胎”) |
|
组合 |
实心菱形 + 实线 |
Composition |
“整体-部分”,部分不可独立存在(如“订单-订单项”) |
|
继承(泛化) |
空心三角箭头 + 实线(子类指向父类) |
Generalization |
is-a 关系 |
|
实现 |
空心三角箭头 + 虚线(实现类指向接口) |
Realization |
接口与实现类 |
|
依赖 |
虚线箭头(一个类使用另一个类作为局部变量/参数) |
Dependency |
临时性关系,如方法参数 |
此外还有多重性标注,如1、0..、1..等,表示数量约束。
🌟类图的使用场景
- 系统分析与设计阶段
业务领域建模:识别关键实体(顾客、订单、产品),明确它们之间的关系,作为后续编码的依据。 - 代码生成与逆向工程
许多IDE(如IntelliJ、Eclipse)支持从类图自动生成代码骨架,或从代码反向生成类图,便于理解现有系统。 - 文档化系统架构
类图可以清晰展示系统的核心模块、层次结构(如Controller、Service、DAO),方便团队沟通和维护。 - 设计模式描述
经典的设计模式(工厂、单例、观察者等)通常使用类图来直观表达参与者类和交互关系。 - 数据库建模的辅助
类图中的持久化类可以映射为数据库表,关联关系对应外键或关联表。
🚀附录:Mermaid 常用语法速查
| 关系类型 | Mermaid 符号 | 示例 |
|---|---|---|
|
继承(泛化) |
` |
` |
|
实现 |
` |
` |
|
组合 |
` |
` |
|
聚合 |
` |
` |
|
关联(普通) |
` |
` |
|
依赖 |
` |
` |
|
标注多重性 |
"多重性"放在关系两端 |
A "1" -- "0..*" B |
提示:Mermaid 中关系线的方向(左到右、上到下)可自动调整,也可用`--o`、`--*`等控制样式。
💪类图总结
类图是面向对象软件工程中不可或缺的视觉语言,它统一了团队对领域模型的理解,连接了分析与实现。通过 Mermaid 等轻量化工具,开发者可以快速在文档、Wiki 或代码注释中嵌入可渲染的类图,极大提升沟通效率。
🔚🔸🔸🔸
🧑💻我是著名MYCP`C++高并发通讯框架`开源项目、和`WordBN字远笔记`共享软件作者。👉待过多家上市公司软件总监,技术总监。拥有超20年C++、QT/QML开发经验。早期🌎互联网行业出身,做过企业即时通讯、区块链等大型项目。目前在做🧭机器视觉智能制造行业,如无序抓取,3D仿真,🌟缺陷检测,上位机软件,硬件控制和通讯等。🪐精通各种跨平台应用开发,高并发,系统架构,☀️性能优化,进程间通讯,RTP通讯,IM即时通讯,音视频编解码等。👈🛠️业余无事写写免费软件。如有软件开发、外包、定制等合作需求,欢迎私信咨询🌹


浙公网安备 33010602011771号