阳光肺科

 找回密码
 立即注册

微信扫码登录

搜索

[Markdown] Markdown图表:时序图基本语法

  [复制链接]
阳光网络 发表于 2024-1-30 00:54:29 | 显示全部楼层 |阅读模式

马上注册,阅读更多内容,享用更多功能!

您需要 登录 才可以下载或查看,没有账号?立即注册

×
时序图(Sequence Diagram)用于描述对象之间发送消息的时间顺序或显示多个对象之间的动态协作。时序图中的每条消息对应一个类操作或一个事件。
时序图元素
时序图主要有一下几个元素:角色,对象,生命线,激活器和消息
  • 1、角色(Actor)
    任何主体都可以是角色,角色对外发布消息。示例中,客户端,打印机,数据库都是角色。
  • 2,对象(Object)
    对象代表时序图中的对象在交互中所扮演的角色,位于时序图顶部和对象代表类角色。有的时候可能有多个打印机 ,那么这些打印机都是同一角色的不同对象
  • 3,生命线(Lifeline)
    生命线代表时序图中的对象在一段时期内的存在。时序图中每个对象和底部中心都有一条垂直的线,这就是对象的生命线,对象间 的消息存在于两条虚线间。
  • 4,激活期(Activation)
    激活期代表时序图中的对象执行一项操作的时期,在时序图中每条生命线上的窄的矩形代表活动期。它可以被理解成C语言语义中一对花括号“{}”中的内容。csdn的Markdown中并没有这一举行,只能以右侧或左侧的注解来表示“` python
  • 5,消息(Message)
    消息是定义交互和协作中交换信息的类,用于对实体间的通信内容建模,信息用于在实体间传递信息。允许实体请求其他的服务,类角色通过发送和接受信息进行通信。

2.1标准时序图
基本语法:
  • Title:标题 :指定时序图的标题
  • Note direction of 对象:描述 : 在对象的某一侧添加描述,direction 可以为 right/left/over , 对象 可以是多个对象,以 , 作为分隔符
  • participant 对象 :创建一个对象
  • loop...end :创建一个循环体
  • 对象A->对象B:描述 : 绘制A与B之间的对话,以实线连接
    • -> 实线实心箭头指向
    • --> 虚线实心箭头指向
    • ->> 实线小箭头指向
    • -->> 虚线小箭头指向

示例:
时序图示例客户端客户端服务端服务端观察者观察者我想找你拿下数据 SYN我收到你的请求啦 ACK+SYN我收到你的确认啦,我们开始通信吧 ACK我是一个服务端我是一个客户端TCP 三次握手

代码:
  •   ```sequence
  •   Title:时序图示例
  •   客户端->服务端: 我想找你拿下数据 SYN
  •   服务端-->客户端: 我收到你的请求啦 ACK+SYN
  •   客户端->>服务端: 我收到你的确认啦,我们开始通信吧 ACK
  •   Note right of 服务端: 我是一个服务端
  •   Note left of 客户端: 我是一个客户端
  •   Note over 服务端,客户端: TCP 三次握手
  •   participant 观察者
再来一个UML时序图:
客户端客户端打印机打印机数据库数据库打印请求(id)请求数据(id)执行SQL获取数据返回数据信息使用数据打印返回打印结果等待提取结果

代码:
  •   ``` sequence
  •   客户端->打印机: 打印请求(id)
  •   打印机->数据库:请求数据(id)
  •   Note right of 数据库: 执行SQL获取数据
  •   数据库-->打印机:返回数据信息
  •   Note right of 打印机:使用数据打印
  •   打印机-->>客户端:返回打印结果
  •   客户端->客户端:等待提取结果
2.2带样式时序图
基本语法同标准时序图,不同的是
  • 需要使用 mermaid 解析,并在开头使用关键字 sequenceDiagram 指明
  • 线段的样式遵循 mermaid 的解析方式
    • -> : 实线连接
    • --> :虚线连接
    • ->> :实线箭头指向
    • -->> :虚线箭头指向

示例:
02.jpg
  • sequenceDiagram
  • 对象A->对象B:中午吃什么?
  • 对象B->>对象A: 随便
  • loop 思考
  • 对象A->对象A: 努力搜索
  • end
  • 对象A-->>对象B: 火锅?
  • 对象B->>对象A: 可以
  • Note left of 对象A: 我是一个对象A
  • Note right of 对象B: 我是一个对象B
  • participant 对象C
  • Note over 对象C: 我自己说了算
代码:
  •   ```mermaid
  •   sequenceDiagram
  •   对象A->对象B:中午吃什么?
  •   对象B->>对象A: 随便
  •   loop 思考
  •     对象A->对象A: 努力搜索
  •   end
  •   对象A-->>对象B: 火锅?
  •   对象B->>对象A: 可以
  •   Note left of 对象A: 我是一个对象A
  •   Note right of 对象B: 我是一个对象B
  •   participant 对象C
  •   Note over 对象C: 我自己说了算

微信扫二维码转发分享

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

给我们建议|手机版|阳光肺科 ( 粤ICP备2020077405号-1 )

GMT+8, 2025-2-20 15:17

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表