Markdown类图的用法

Markdown类图的用法

  • 1. 前言
  • 2. 语法详解
    • 2.1 类图的[类]
    • 2.2 类图中的关系
    • 2.3 类修饰符
  • 使用场景及实例
  • 注意
  • 小结
  • 其他文章
  • 快来试试吧🥰

Markdown类图的用法 👈点击这里也可查看

1. 前言

Markdown 的原生语法不支持绘制图形,但通过扩展模块,我们可以将一些格式化的文字渲染成我们需要的图形。常用的图形有 “流程图”、“时序图”、“类图”、“状态图”、“甘特图”、“饼图” 等。

本节将重点介绍如何通过 Mermaid 绘制「类图」。
类图(Class diagrams)用来描述系统中静态对象的内容和关系。
类图是一种面对对象的建模形式。它是应用系统结构的概念模型,通常与开发时的代码有严格的对应关系。类视图也可以用于数据建模。

2. 语法详解

2.1 类图的[类]

类是类图中的核心组成,类的成员包括属性和方法,以及一些扩展信息。在类图中,一个类实例由三层组成。

  • 类名称,在类图的最顶端;
  • 类属性,在类图的中间层;
  • 类方法,在类图的最下层;
    实例一:
    代码:
```mermaid
classDiagramclass 动物动物 : string 标签动物 :()
``

渲染:

动物
string 标签
吃()

2.1.1类的定义
类的定义方式由两种方式,第一种是形如class Animal这样的直接描述,另一种是通过关系来定义类,如Vehicle <|-- Car
实例二:
代码:

```mermaid
classDiagram
class 动物
交通工具 <|-- 小汽车
``

渲染:

动物
交通工具
小汽车

2.1.2类成员的定义
类成员包含属性,方法;区分属性和方法的语法以来于是否以()结尾,没有括号的成员会被解释为属性,有括号的成员会被解释为方法。
类成员有两种定义方法。

实例三:
使用:声明类成员
代码:

```mermaid
classDiagramclass 银行账户银行账户 : +String 户主银行账户 : +BigDecimal 余额银行账户 : +存(数量)银行账户 : +取(数量)
``

渲染:

银行账户
+String 户主
+BigDecimal 余额
+存(数量)
+取(数量)

实例四:
使用{}大括号确定类对象的成员描述。

```mermaid
classDiagramclass 银行账户 {+String 户主+BigDecimal 余额+存(数量) bool+取(数量)}
``

渲染:

银行账户
+String 户主
+BigDecimal 余额
+存(数量)
+取(数量)

对于CSDN编辑器{}不支持这种写法所以没有改变。
成员的作用域作为可选项,定义是在成员的开头,有以下四种:

  • +Public
  • -Private
  • #Protected
  • ~Package/Internal
    除此之外,通过在()后面增加*$,可以用来描述方法成员的抽象或静态属性。

2.2 类图中的关系

类图中类之间的逻辑关系由连接线表示,定义的形式如:[类A][箭头][类B]:标签文字。
不同的逻辑关系定义如下:

类型描述
<|--实线箭头
*-- 组成关系
o-- 集合关系
--> 关联关系
-- 实现连接
..> 依赖关系
<|.. 虚线箭头
.. 虚线连接

实例五:
代码:

```mermaid
classDiagramclassA <|-- classBclassC *-- classDclassE o-- classFclassG <-- classHclassI -- classJclassK <.. classLclassM <|.. classNclassO .. classP
``

渲染:

classA
classB
classC
classD
classE
classF
classG
classH
classI
classJ
classK
classL
classM
classN
classO
classP

还可以加上关系标签
实例六:
代码:

​```mermaid
classDiagramclassA --|> classB : 继承classC --* classD : 组成classE --o classF : 集合classG --> classH : 关联classI -- classJ : 实线连接classK ..> classL : 依赖classM ..|> classN : 实现classO .. classP : 虚线连接
​``

渲染:

继承
组成
集合
关联
实线连接
依赖
实现
虚线连接
classA
classB
classC
classD
classE
classF
classG
classH
classI
classJ
classK
classL
classM
classN
classO
classP

实例七:
不同基数关系的定义
代码:

​```mermaid
classDiagram顾客 "1" --> "\*" 票据学生 "1" --> "1..\*" 课程银河 --> "many" 星星 : 包含
​``

渲染:

1
\*
1
1..\*
包含
many
顾客
票据
学生
课程
银河
星星

2.3 类修饰符

我们可以通过标签文本描述类的元数据,例如:抽象类、接口、服务、枚举等。
元数据的通过<< >>定义,由两种写法

实例九:
在类名称下面另起一行
代码:

​```mermaid
classDiagramclass 形状<<interface>> 形状
​``

渲染:

«interface»
形状

使用场景及实例

类图主要用于为系统建模

实例十:
一个关于动物的类图。
代码:

​```mermaid
classDiagram鸟 --|> 动物 : 继承翅膀 "2" --> "1" 鸟 : 组合动物 ..> 氧气 : 依赖动物 ..> 水 : 依赖class 动物 {<<interface>>+有生命+新陈代谢(氧气, 水)+繁殖()}class 鸟 {+羽毛+有角质喙没有牙齿+下蛋()}class 鸟 {+羽毛+有角质喙没有牙齿+下蛋()}
​``

渲染:

继承
组合
2
1
依赖
依赖
+羽毛
+有角质喙没有牙齿
+羽毛
+有角质喙没有牙齿
+下蛋()
+下蛋()
«interface»
动物
+有生命
+新陈代谢(氧气, 水)
+繁殖()
翅膀
氧气

注意

代码中:最后的[``]应为[```],自己复制的时候注意加上。

小结

如果对您有帮助,请您点赞、收藏、关注、转发,让更多的人看到。

其他文章

点击此处查看

👉Markdown段落的空行缩进用法
👉Markdown表格的使用
👉Markdown语法字体字号讲解
👉Markdown语法字体字号讲解
👉Markdown如何填充前景色、背景色
👉Markdown代码块,超链接,图片的插入
👉Markdown如何添加任务列表-复选框的添加
👉Markdown中特殊符号的使用
👉Markdown实现代码高亮,注释代码
👉Markdown注释的用法

快来试试吧🥰

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/891846.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c和c++中为什么要防止头文件被重复包含!

在编程中&#xff0c;头文件就像一本工具书&#xff0c;它包含了函数、类、宏、全局变量等的定义和声明&#xff0c;供其他代码文件引用。想象一下&#xff0c;如果你在写一篇文章时&#xff0c;反复引用同一本工具书的内容&#xff0c;会发生什么情况呢&#xff1f; 1. 避免重…

Compression Techniques for LLMs

Compression Techniques for LLMs 随着大型语言模型&#xff08;LLMs&#xff09;的迅速发展&#xff0c;提高其计算效率和存储效率成为研究的重要方向。为了实现这一目标&#xff0c;诸多压缩技术应运而生。本文将深入探讨几种有效的压缩技术&#xff0c;这些技术不仅能够降低…

django vue3实现大文件分段续传(断点续传)

前端环境准备及目录结构&#xff1a; npm create vue 并取名为big-file-upload-fontend 通过 npm i 安装以下内容"dependencies": {"axios": "^1.7.9","element-plus": "^2.9.1","js-sha256": "^0.11.0&quo…

Oracle 11g rac + Dataguard 环境调整 redo log 大小

Oracle 11g rac Dataguard 环境调整 redo log 大小 目录 Oracle 11g rac Dataguard 环境调整 redo log 大小一、问题的产生1、查看日志文件、日志组信息2、日志切换较快出现的问题 二、 确认 DG 同步是否正常1、检查数据库角色2、查看进程信息3、检查归档是否一致4、查看 GAP…

MCP(Model Context Protocol)模型上下文协议 进阶篇3 - 传输

MCP 目前定义了两种标准的客户端-服务端通信传输机制&#xff1a; stdio&#xff08;标准输入输出通信&#xff09;HTTP with Server-Sent Events (SSE)&#xff08;HTTP 服务端发送事件&#xff09; 客户端应尽可能支持 stdio。此外&#xff0c;客户端和服务端也可以以插件方…

Laravel操作ElasticSearch

在Laravel项目中操作ElasticSearch可以通过以下步骤来实现&#xff0c;通常会借助相应的ElasticSearch客户端扩展包。 ### 安装ElasticSearch客户端包 在Laravel项目中&#xff0c;常用的是 elasticsearch/elasticsearch 这个PHP客户端库来与ElasticSearch进行交互&#xff0c…

openai swarm agent框架源码详解及应用案例实战

文章目录 简介数据类型Agent类Response类Result类Swarm类run_demo_loop交互式会话 基础应用agent-handsofffunction-callingcontext_variablestriage_agent 高阶应用通用客服机器人(support bot)构建航班服务agent 参考资料 openai 在24年10月份开源了一个教育性质的多agents协…

【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 2:基础知识

目录 1 预热1.1 记号1.2 分类器计算过载问题 2 多头编码&#xff08;MHE&#xff09;2.1 标签分解2.2 多头组合&#xff08;Multi-Head Combination&#xff09; 论文&#xff1a;Multi-Head Encoding for Extreme Label Classification 作者&#xff1a;Daojun Liang, Haixia …

FTP上传下传、SFTP上传下传、进度监控、断点续传、连接池封装JAVA一网打尽(五)SFTP进阶篇【5/5】【完结篇】

一、摘要&#xff08;本系列汇总说明&#xff09; - 总纲 FTP、SFTP上传下传、进度监控、断点续传、连接池封装JAVA一网打尽&#xff08;一&#xff09; FTP、SFTP上传下传、进度监控、断点续传、连接池封装JAVA一网打尽&#xff08;二&#xff09; FTP、SFTP上传下传、进度监…

攻防世界 - Misc - Level 1 | 适合作为桌面

关注这个靶场的其它相关笔记&#xff1a;攻防世界&#xff08;XCTF&#xff09; —— 靶场笔记合集-CSDN博客 0x01&#xff1a;考点速览 想要通过本关&#xff0c;你需要掌握以下知识点&#xff1a; Stegolve 查看图片隐写内容。 了解 pyc 文件&#xff0c;并知道如何通过 Wi…

Unity 从零开始的框架搭建1-3 关于命令模式的一些思考

Unity 从零开始的框架搭建1-2 事件的发布-订阅-取消的小优化及调用对象方法总结[半干货]-CSDN博客 本人水平有限 如有不足还请斧正&#xff0c;该文章专栏是向QFrameWork作者凉鞋老师学习总结得来&#xff0c;吃水不忘打井人&#xff0c;不胜感激 关于此模式我曾实现过&#…

UVM :uvm_sequence_item property and methods

transaction是uvm_sequence_item的一个子类。 topic transaction介绍 uvm_sequence_item override Set_type_override:同类型替换 Set_inst_override:同例化替换

SpringBoot原理分析-1

SpringBoot原理分析 作为一个javaer&#xff0c;和boot打交道是很常见的吧。熟悉boot的人都会知道&#xff0c;启动一个springboot应用&#xff0c;就是用鼠标点一下启动main方法&#xff0c;然后等着就行了。我们来看看这个main里面。 SpringBootApplication public class E…

前端(API)学习笔记(CLASS 4):进阶

1、日期对象 日期对象&#xff1a;用来表示事件的对象 作用&#xff1a;可以得到当前系统时间 1、实例化 在代码中发现了new关键字&#xff0c;一般将这个操作称为实例化 创建一个时间对象并获取时间 获得当前时间 const datenew Date() 使用日志查看&#xff0c;得到的…

力扣刷题:二叉树OJ篇(上)

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 目录 1.单值二叉树&#xff08;1&#xff09;题目描…

4.1.2 栈和队列(二)

文章目录 队列的定义队列的基本运算队列的存储结构 队列的定义 队列先进先出&#xff0c;仅允许一端插入、一端删除 队尾(Rear)&#xff0c;插入 队头(Front)&#xff0c;删除 队列的基本运算 队列的基本运算 初始化空队列&#xff1a;initQueue(Q)判队空&#xff1a;isEmpty…

【HeadFirst系列之HeadFirst设计模式】第1天之HeadFirst设计模式开胃菜

HeadFirst设计模式开胃菜 前言 从今日起&#xff0c;陆续分享《HeadFirst设计模式》的读书笔记&#xff0c;希望能够帮助大家更好的理解设计模式&#xff0c;提高自己的编程能力。 今天要分享的是【HeadFirst设计模式开胃菜】&#xff0c;主要介绍了设计模式的基本概念、设计模…

Oracle数据库如何找到 Top Hard Parsing SQL 语句?

有一个数据库应用程序存在过多的解析问题&#xff0c;因此需要找到产生大量硬解析的主要语句。 什么是硬解析 Oracle数据库中的硬解析&#xff08;Hard Parse&#xff09;是指在执行SQL语句时&#xff0c;数据库需要重新解析该SQL语句&#xff0c;并创建新的执行计划的过程。这…

【GBT32960协议学习系列】GBT 32960协议的背景、目的和适用范围

GBT 32960协议的背景、目的和适用范围 1. GBT 32960协议的背景 GBT 32960是中国国家标准&#xff0c;全称为《电动汽车远程服务与管理系统技术规范》。该标准由中国国家标准化管理委员会发布&#xff0c;旨在规范电动汽车远程服务与管理系统的技术要求&#xff0c;确保电动汽车…

软件工程期末复习(一)

题目复习 单选题 软件产品的核心特性是什么&#xff1f; A. 物质性 B. 逻辑性 C. 可复制性 D. 消耗性 正确答案&#xff1a;B 单选题 在软件开发过程中&#xff0c;哪个环节最接近于传统制造业中的“生产”过程&#xff1f; A. 需求分析 B. 编码 C. 测试 D. 研制&#xff08…