首页 > 其他分享 >Markdown 类图语法

Markdown 类图语法

时间:2024-07-03 15:20:26浏览次数:12  
标签:Markdown 定义 .. -- 类图 语法 classDiagram class

定义一个类

两种方式定义类:

使用像诸如class Animal这样的关键字显式定义类。
通过对象之间的关系定义两个类:Vehicle <|-- Car,这条语句定义了两个类,分别是车辆和汽车及其从属关系。

classDiagram class Animal 交通工具 <|-- 小汽车

定义类的成员

UML提供了表示类成员的机制,例如属性和方法,以及关于它们的附加信息。

Mermaid根据括号 () 是否存在来区分属性和函数/方法。带有 () 的被视为函数/方法,其他被视为属性。

定义类的成员有两种方法,无论使用哪种语法来定义成员,输出都是相同的。两种不同的方式是:

classDiagram class BankAccount BankAccount : +String owner BankAccount : +BigDecimal balance BankAccount : +deposit(amount) BankAccount : +withdrawal(amount)

使用{}关联类的成员,成员被分组在花括号中。适用于一次定义多个成员。例如:

classDiagram class BankAccount{ +String owner +BigDecimal balance +deposit(amount) +withdrawl(amount) }

返回类型

可选地,您可以在定义结束时设定返回的数据类型 (注意:最终的方法定义和返回类型之间必须有一个空格来结束方法/函数定义),示例:

classDiagram class BankAccount{ +String owner +BigDecimal balance +deposit(amount) bool +withdrawl(amount) int }

泛型

可以使用通用类型(例如List),对于字段、参数和返回类型,方法是将类型封装在~(波浪号)中。注意:当前不支持嵌套类型声明(例如List<List>)。

这可以作为任何一个类定义方法的一部分来完成:

classDiagram class Square~Shape~{ int id List~int~ position setPoints(List~int~ points) getPoints() List~int~ } Square : -List~string~ messages Square : +setMessages(List~string~ messages) Square : +getMessages() List~string~

可见性

要指定类成员(即任何属性或方法)的可见性,可以将这些符号放在成员名称之前(可选):

+ 公共Public

- 私有Private

# 保护Protected
包/内部Package/Internal

您还可以通过在方法的末尾添加以下符号来将其他分类器包含到方法定义中,例如,在 () 之后:

* Abstract 例如:someAbstractMethod()*

$ Static例如:someStaticMethod()$

定义关系

关系是一个通用术语,涵盖在类和对象图上找到的特定类型的逻辑关系。

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

不同的逻辑关系定义如下:

类型 定义
<|-- 继承
*--. 组合
o--. 聚合
-->. 关联
--. 连接(实线)
..>. 依赖
..|> 实现
... 连接(虚线)

classDiagram classA <|-- classB classC *-- classD classE o-- classF classG <-- classH
classDiagram classI -- classJ classK <.. classL classM <|.. classN classO .. classP

关系标签

可以将标签式的文本添加到关系上:

[classA][Arrow][ClassB]:LabelText

classDiagram classA --|> classB : Inheritance classC --* classD : Composition classE --o classF : Aggregation classG --> classH : Association
classDiagram classI -- classJ : Link(Solid) classK ..> classL : Dependency classM ..|> classN : Realization classO .. classP : Link(Dashed)

双向关系

关系可以逻辑上表示 N:M 的关联:

classDiagram 动物 <|--|> 斑马

语法:

[关系类型][链接][关系类型]

其中,“关系类型”可以是以下之一:

其中Relation Type可以是以下之一:

类型 说明
<|. 继承
*. 组合
o. 聚合
>. 关联
<. 关联
>. 实现

以及Link 可以是以下之一:

类型 说明
-- 实线
... 虚线

关系上的基数/多重性

类图中的多重性或基数表示一个类连接到另一个类的一个实例的实例数。例如,一家公司将有一名或多名员工,但每个员工只为一家公司工作。

多重性符号放置在关联的末尾。

不同的基数选项有:

类型 说明
1 仅1个
0..1 0或者1个
1..* 1个或多个
* 多个
n n个(n>1)
0..n 0-n个(n>1)
1..n 1-n个(n>1)

通过在给定箭头之前(可选)和之后(可选)在 "" 内放置基数文本,可以轻松定义基数。

[类A] "基数1" [箭头] "基数2" [类B]:标签文本

classDiagram 消费者 "1" --> "*" 消费券 学生 "1" --> "1…*" 课程 星系 --> "许多的" 星星 : 包含

类的注解

可以使用标记对类进行说明,以提供关于类的其他元数据。这可以更清楚地指示其属性。一些常见的说明包括:

<<Interface>> 表示接口

<<Abstract>> 表示抽象

<<Service>> 表示服务

<<Enumeration>> 表示枚举

classDiagram class 形状 <<interface>> 形状 形状 : 顶点数 形状 : `绘制()

在类定义的嵌套结构中定义。例如:

classDiagram class 形状{ <<接口>> 顶点数 绘制() } class 颜色{ <<枚举>> 红 蓝 黄 }

注释

注释可以在类图代码中使用,解析器将忽略这些注释。注释需要写在单独的一行里并且必须以 %% 开头。注释开始到下一个换行符之后的任何文本都将被视为注释,包括任何类图语法。

classDiagram %% 整行都是注释 classDiagram class 形状 <<接口>> class 形状{ <<接口>> 顶点数 `绘制() }

设置图的方向

对于类图,您可以使用方向语句来设置图将呈现的方向,就像本示例中的那样:

classDiagram %% TB direction LR class 学生 { -身份证 : 身份证信息 } class 身份证信息{ -序号 : int -名称 : string } class 自行车信息{ -序号 : int -名称 : string } 学生 "1" --o "1" 身份证信息 : 拿 学生 "1" --o "1" 自行车信息 : 骑

交互

可以将单击事件绑定到节点,单击可以打开链接,该链接将在新的浏览器选项卡中打开。

声明所有类后,可以另起一行定义这些操作:

action className "reference" "tooltip"
click className href "url" "tooltip"

action可以是link
className 是类的名称
reference 可以是一个URL链接
(可选)tooltip是一段鼠标悬浮后显示的文本
示例

classDiagram class Shape link Shape "http://www.github.com" "This is a tooltip for a link" class Shape2 click Shape2 href "http://www.github.com" "This is a tooltip for a link"

使用场景实例

类图主要用于为系统建模。

classDiagram direction RL 鸟 --|> 动物 : 继承 翅膀 "2" --|> "1" 鸟 : 组合 动物 ..> 氧气 : 依赖 动物 ..> 水 : 依赖、 class 动物 { <<interface>> +有生命 +新陈代谢(氧气, 水) +繁殖() } class 鸟 { +羽毛 +有角质喙没有牙齿 +下蛋() } class 鸟 { +羽毛 +有角质喙没有牙齿 +下蛋() } graph TD; A-->B; A-->C; B-->D; C-->D; graph BT; A-->B; A-->C; B-->D; C-->D;

标签:Markdown,定义,..,--,类图,语法,classDiagram,class
From: https://www.cnblogs.com/dyanblog/p/18281611

相关文章

  • VSCODE 编辑markdown 文件
    因为Obsidian版权问题,改用vscode编辑器 编辑markdown文件1.使用VSCODE编辑markdown文件首先分别下载Markdown和markdownPDF第三方插件2.保存文件为md格式,如果需要缓存图片,可以点击右上角的预览模块。就可以看图片了(window和linux服务器都是/分隔符)如果是图片,就是......
  • SQL的存储过程,语法示例
    存储过程类型含义IN作为输入,调用时需要传入值OUT作为输出,该参数作为返回值INOUT既可以输入参数,也可以输出参数 语法:创建createprocedure存储过程名称(in参数名称1参数数据类型,out参数名称2参数数据类型,i......
  • 前端视角下的Go语法学习:demo-crud 实现增删改查
    今日话题基于go+gin实现增删改查,仅仅只是提供接口不涉及数据库增删改查作者:云层上的光时间:2024年6月22日10时15分14秒主线任务一、项目创建1、创建demo-crud文件夹2、编辑器打开demo-crud项目,提示设置gosdk,这里我设置了1.22.43、声明go.mod文件go......
  • Markdown格式
    本文链接Markdown语法。一级标题二级标题三级标题一直到六级段落,回车即可换行:这一行末尾添加两个空格然后回车即可强调前后两个*哈哈斜体前后一个*哈哈引用前面用>,两个>>是二级嵌套比如:这个引用了这个二级嵌套引用这个-是小圆点(要有空格)连起来用哈......
  • Markdown学习
    Markdown学习一、标题一级标题:#标题名二级标题:##标题名三级标题:###标题名四级标题:####标题名二、字体粗体:两边都加**例:hello,world斜体:两边都加*例:hello,world斜加粗:两边都加***例:hello,world删除线:两边都加~~例:hello,world三、引用用法:>加空格helloworld......
  • Python 语法 - 海象运算符:=
    前言海象运算符的英文原名叫AssignmentExpresions,即赋值表达式。是Python3.8新增的语法:=,在PEP572中提出。海象运算符之所以叫这个名字是因为这个符号就像是一个海象逆时针90°倒过来一样,符号为一个冒号接着一个等号,是:=这样的。用于条件表达式海象运算符由一个:......
  • Dockerfile语法,自定义镜像
    我们一直在使用别人准备好的镜像,那如果我要部署一个Java项目,把它打包为一个镜像该怎么做呢?镜像结构要想自己构建镜像,必须先了解镜像的结构。镜像之所以能让我们快速跨操作系统部署应用而忽略其运行环境、配置,就是因为镜像中包含了程序运行需要的系统函数库、环境、配置、依......
  • 《DNK210使用指南 -CanMV版 V1.0》第七章 基于CanMV的MicroPython语法开发环境搭建
    第七章基于CanMV的MicroPython语法开发环境搭建1)实验平台:正点原子DNK210开发板2)章节摘自【正点原子】DNK210使用指南-CanMV版V1.03)购买链接:https://detail.tmall.com/item.htm?&id=7828013987504)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/......
  • Google常用搜索语法
    1.常用内容搜索语法1、intitle:搜索网页标题中包含有特定字符的网页。例如输入“intitle:后台”,这样网页标题中带有c后台的网页都会被搜索出来。2、intext:搜索网页正文内容中的指定字符,例如输入“intext:后台管理”。这个语法类似我们平时在某些网站中使用的“文章内容搜索......
  • Java基础语法
    注释单行注释//文字多行注释/*文字*/文档注释/**​*​*​*/标识符关键字(不能用以下关键字来起名字,会报错)Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。标识符注意点所有的标识符都应该以字母(A-Z或者a-z)、美元符号($)、或者下划......