UML学习笔记——顺序图(时序图)

article/2025/8/29 17:51:08

文章目录

  • 顺序图(时序图)
  • 顺序图的引入
  • 顺序图的概念
  • 顺序图的组成
    • ①对象( Object)
    • ②生命线( Lifeline )
    • ③激活(Activation) (控制焦点focus of control)
    • ④消息(Message)
      • 消息的表示和分类
        • 调用消息(Procedure Call)
        • 异步消息(Asynchronous)
        • 返回消息(Return)
      • 三种消息的示例
      • 特殊的消息
        • 自反消息
        • 阻止消息(Rose中)
        • 超时消息(Rose中)
        • 创始消息(Found Message)
  • UML交互片段
    • 常用的交互片段对应的操作符及其作用
      • ①ref 交互片段—— (引用reference)
        • 使用场景
        • 使用方法
      • ②loop交互片段——(循环交互片段)
        • (1) loop(minint, maxint)
        • (2) loop(minint)
        • (3) loop
        • (4) loop(minint, maxint) +监护条件
        • loop实例
        • 对集合的迭代
      • ③opt和alt交互片段——(表示分支)
        • opt交互片段—— (单分支)
        • alt交互片段—— (多分支)
      • ④par交互片段——(表示并发)
      • ⑤break交互片段
      • ⑥critical (临界)交互片段
    • 交互片段的嵌套


顺序图(时序图)

UML中的顺序图(时序图)的相关知识。

顺序图的引入

  • 用例图描述系统需求,类图描述组成系统结构的类关系。

  • 用例图和类图无法描述系统动态行为。

  • 使用交互图为系统各部分交互进行建模。

  • 交互图( interaction diagram)通常用来描述一个用例或者部分用例的行为,显示该用例中所涉及的对象和这些对象之间的消息传递情况。( 动态交互行为建模)

  • UML2.x交互图包括顺序图、通信图(协作图)、交互纵览图、定时图。

  • 顺序图着重描述对象之间消息传递的时间顺序。
    通信图(协作图) 强调对象之间的链接关系。

  • 顺序图和通信图从不同的角度表达了系统中的交互,它们之间可以互相转换。

  • UML规范更多是以顺序图为核心,对其表示法和语义投入更多的精力。

  • 准则:针对每个用例中所描述的需求,使用类图进行静态对象建模后,使用交互图进行动态对象建模可以帮助考虑更多的设计细节,提醒分析人员去补充遗漏的类或方法,“ 落实”发送哪些消息、发送给谁、以何种顺序发送等具体问题。

  • 当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或状态机中引起状态转换的触发事件。

顺序图的概念

  • 顺序图 (sequence diagram)是一种详细表示对象之间动态交互的图形文档。
  • 顺序图将交互关系表示为一个 二维图
  • 横轴 代表了在协作中各独立的对象。
  • 纵轴 是时间轴,时间沿竖线向下延伸。
  • 沿时间方向按时间递增顺序列出个对象所发出和接收的消息。
1

例如:汽车租赁系统中客户取车的顺序图
取车的动作是从客户向工作人员提出取车要求并出示清单开始,工作人员检查客户的预定申请,确认后顾客付款。工作人员填写工作记录,同时登记汽车的状态,最后客户取车。

2

顺序图的组成

顺序图包含了4个元素:
①对象( Object)

②生命线( Lifeline )

③激活(Activation) / (控制焦点focus of control) / 控制条

④消息(Message)

①对象( Object)

顺序图中对象的符号和对象图中对象所用的符号一样。

  • 对象的命名方式有三种:
    • 包括对象名和类名
    • 类名(匿名对象)
    • 对象名(不关心类)
3
  • 对象间的排列顺序并不重要,但一般把表示参与者的对象放在图的两侧。
4
  • 将对象置于顺序图的顶部意味着在交互开始的时候对象就已经存在了。
  • 如果对象的位置不在顶部,那么表示对象是在交互的过程中被创建的。
5

②生命线( Lifeline )

  • 每个对象都有自己的生命线,生命线在顺序图中表示为从对象图标向下延伸的一条虚线,表示对象在特定时间内的存在。
6

如果对象生命期结束,则用注销符号表示

7

③激活(Activation) (控制焦点focus of control)

  • 激活 表示该对象被占用以完成某个任务,对象执行某个动作的时期。
  • 去激活 指对象处于空闲状态,不做什么事情,但它是存在的,等待新的消息激活它。
  • 在UML中,为了表示对象是激活的,可以将该对象的生命线拓宽成为矩形。其中的矩形称为激活条或控制期,对象就是在激活条的顶部被激活的,对象在完成自己的工作后被去激活。
8

激活表示一个对象直接或者通过从属例程执行一个行为的时期,既可以表示行为执行的持续时间,也表示了活动和它的调用者之间的 控制关系

9

④消息(Message)

  • 消息是对象之间某种形式的通信,它可以激发某个操作、发送信号或导致目标对象的创建或撤销。
  • 消息是两个对象之间的单路通信,从发送方到接收方的控制信息流。即从源对象指向目标对象,以触发目标对象中的特定操作。
10
  • 消息可以用于在对象间传递参数。
  • 消息可以是信号(对象间的异步通信),也可以是调用(具有返回控制机制的同步调用)。

消息的表示和分类

  • 消息——在UML中,消息使用箭头来表示,箭头的类型表示了消息的类型。
  • UML三种消息
    • 调用消息(Procedure Call)
    • 异步消息(Asynchronous)
    • 返回消息(Return)
  • Rose消息扩充
    • 阻止消息(Balking )
    • 超时消息(Time-out)

调用消息(Procedure Call)

UML用一个带实心箭头的实线表示调用消息。

11
  • 调用消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息接收者执行其某种操作后返回控制。
  • 由于发送者等待接收者,这种消息又叫做同步消息( synchronous)。
  • 通常,同步消息会隐含包含了来自接收者的一个返回消息,尽管建模者经常忽略这个返回消息的符号。
12

异步消息(Asynchronous)

13

➢消息发送后,发送者继续操作,不等待,常用于并发;

返回消息(Return)

  • 如果异步消息有返回消息,必须明确表示出来。
14

➢表示消息的返回。一般同步(过程调用)的返回不需画出,直接隐含,而异步返回则可用它。

15

三种消息的示例

16

特殊的消息

自反消息

  • 自调用消息(反身消息) (SelfCall) :一个对象将一个消息发送给它本身。
  • 在反身消息里,消息的发送方和接收方是同一个对象。
  • 自反消息一般是同步消息
17

阻止消息(Rose中)

  • 阻止消息 是指消息发送者发送消息给接收者,如果接收者无法立即接收消息,则发送者放弃这个消息。
  • Rose中用折回的箭头表示 阻止消息
18

超时消息(Rose中)

  • 超时消息 指消息发送者发出消息给接收者并按指定时间等待。如果接收者无法在指定时间内接收消息,则发送者放弃这个消息。
19

创始消息(Found Message)

  • 以实心圆作为起点来表示此类消息。
  • 创始消息表示没有特定发送者、发送者不明确或消息源众多的消息。
20

UML交互片段

  • UML2.x针对UML1.x顺序图添加了一个有用的改动:交互片段( interaction fragment)
  • 交互片段: 用一个边框包围顺序图中的部分交互,并在其左上角添加一个间隔区。
  • 间隔区中,有操作符来描述交互片段的类型。
21

常用的交互片段对应的操作符及其作用

22

①ref 交互片段—— (引用reference)

  • 为一个用例的多个场景创建实例顺序图,图和图之间的相当一部分内容是重复的。
  • ref交互片段能够在一张顺序图中快速容易地复用另一张顺序图的部分内容。

使用场景

当想要简化图时,将其中的一部分分解到另;一个图中,或者存在可复用的交互。

使用方法

引用其它的顺序图作为自身交互的一部分,使用ref交互片段并写明要引用的交互图的名称。

例如:

23

或:

24

②loop交互片段——(循环交互片段)

loop操作符 来表示变互判断,表明该片段内的交互被循环执行多次,而具体的次数由 循环次数监护条件 表达式来说明。

(1) loop(minint, maxint)

minint表示循环的最小次数,maxint表示循环的最多次数

25

(2) loop(minint)

26

(3) loop

永无止境的循环

27

(4) loop(minint, maxint) +监护条件

28

loop实例

29

对集合的迭代

  • 对集合(例如list和map)中所有成员进行迭代的常用算法是向每个成员发送同一条消息。
  • 在这种情况下,通常最终会使用某种迭代器(iterator) 对象。
30

③opt和alt交互片段——(表示分支)

  • 分支:表明交互的控制流程取决于某个特定的条件。
  • 可以表示分支的操作符有两个:支持单条件的 opt 和支持多条件的 alt .

opt交互片段—— (单分支)

●包含在此片段中的交互只有在判断条件为真时才执行

31

特殊情况:

32

alt交互片段—— (多分支)

  • alt交互片段中可以有多个区域,不同的区域用虚线分割,每一个区域设置一个监护条件,代表一个分支。根据判断条件,选择片段中的一个区域中的交互执行。
33

例如:

34

④par交互片段——(表示并发)

  • par交互片段 中,每个区域中的交互并发工作而不会互相交互。用于各个片段并行执行。
  • 操作符par是用来表示“并行”的,也就是用来表示两个或多个并发执行的子片段,并行子片段中,单个元素的执行次序可以以任何可能的顺序相互操作(除非采用critical禁止)。
35

例如:

36

⑤break交互片段

  • 操作符break和循环语句的break有些类似。

  • 通常用break定义一个含有监护条件的子片段。

  • 如果监护条件为“真”则执行子片段,而且不执行子片段后面的其他交互;如果监护条件为“假”,那么就按正常流程执行。

37

例如:

下图中,当系统要用户登录时。如果单击“取消”按钮,那么就将取消登录。并且不再执行后续地交互;否则就将等待用户输入登录信息,系统对输入的信息进行相应地应答。

38

⑥critical (临界)交互片段

  • 操作符critical 表示子片段是 “临界区域“ 在临界区域中,生命线上的事件序列不能和其它区域中的任何其它事
    件交错。
39

多进程并发执行时,表示排它处理,类似于操作系统中的加锁,以防止死锁的产生。

例如:交互片段实例
在VCD播放的过程中,显示图像(displayframe) 的同时,可以响应各种按键。但是有一个例外,当用户按下暂定键(pause)时,在用户按下恢复键resume之前是无法显示图像displayFrame的,即displayFrame不能交错在pause和resume之间。

40

●使用操作符critical还常用来表示一个原子性的连续操作,例如事务性操作。
例如:
从银行帐号( bankaccount)扣钱和往证券帐户(stockaccount)加钱的这两个动作要么全部成功完成,要么都不执行。

41

交互片段的嵌套

42

http://chatgpt.dhexx.cn/article/26gHe3Kn.shtml

相关文章

软件设计中的顺序图

C程序开发过程中,程序的入口一般是main函数也是主函数,然后才会在main函数中调用其他的类对象使程序运行起来。 一个软件程序一般是由很多类对象组合而成的,程序运行过程中对象之间要相互通信,也就是互相调用,互相配合…

顺序图(Sequence Diagram)

先让我们了解一下交互图的有关概念: 交互图用来描述系统中的对象是如何进行相互作用的,即一组对象是如何进行消息传递的。交互主要用于描述协作的动态行为方面。当对交互建模时,通常既包括对象(每个对象都扮演某一特定的角色&…

银行ATM系统——顺序图及文档

一、图形文档 我为设计的ATM系统绘制了五张顺序图:验证密码、查询账户信息、存款、取款、转账。 验证密码: 查询账户信息: 存款: 取款: 转账: 二、文字说明 2.1 顺序图综述 顺序图描述了用…

UML-顺序图与协作图

实验目的 (1) 理解时序图的基本概念; (2) 理解协作图的基本概念; (3) 掌握在Rational Rose中绘制交互图的操作方法。 实验内容 一、概要描述交互场景(存款用例)。(文件名命名为存取款交互概要.mdl) 二、设计和绘制自动车锁系统类图&…

顺序图概述

顺序图(Sequence Diagram)是强调消息时间顺序的交互图,它描述了对象之间传送消息的时间顺序,用于表示用例中行为的顺序。顺序图将交互关系表示为一个二维图,横向轴代表了在协作中各独立对象的类元角色,纵向…

数值分析-龙格库塔法

龙格库塔法 数值分析中,龙格-库塔法(Runge-Kutta methods)是用于非线性常微分方程的解的重要的一类隐式或显式迭代法。 这些技术由数学家卡尔龙格和马丁威尔海姆库塔于1900年左右发明。 [1] 龙格-库塔(Runge-Kutta)方法是一种在工…

Matlab 四阶龙格库塔法求解二元常微分方程组

龙格库塔法是一种求解高阶常微分方程的常用方法,在工程当中应用广泛,例如求解物体的运动方程等。 这里我们通过matlab程序编写龙格库塔算法求解二元常微分方程组,假设有常微分方程组: { x − x ˙ 2 y y ˙ − 2 s i n t −…

四阶龙格库塔法求解微分方程【MATLAB||C】

四阶龙格库塔法求解微分方程 作者:PEZHANG 时间:2021.11.6 求解过程数学描述 四阶龙格库塔的求解过程可用如下数学公式描述: k 1 f ( t n , y n ) k_1f\left( t_n,y_n \right) k1​f(tn​,yn​) k 2 f ( t n h 2 , y n h 2 k 1 ) k_2f\…

算法-----龙格-库塔法(转)

数值分析中,龙格-库塔法(Runge-Kutta)是用于模拟常微分方程的解的重要的一类隐式或显式迭代法。这些技术由数学家卡尔龙格和马丁威尔海姆库塔于1900年左右发明。 龙格库塔法的家族中的一个成员如此常用,以至于经常被称…

隐式龙格库塔法举例说明

隐式龙格-库塔法 题目具体分析前期准备确定系数MATLAB求解 题目 用隐式中点公式求解常微分方程: { d y d x y , y ( 0 ) 1. \begin{cases} \dfrac{dy}{dx}y,\\ y(0)1. \end{cases} ⎩⎨⎧​dxdy​y,y(0)1.​ 具体分析 前期准备 首先对和在区间上进行离散化,然…

龙格库塔法求解微分方程

在https://blog.csdn.net/weixin_42141390/article/details/110184743一文中,我们曾经讨论了欧拉法,龙格-库塔法也跟欧拉法一样,是用梯形的面积去替代积分的面积的一种方法。 欧拉法简介 设有微分方程: d x ( t ) d t f ( x )…

数值计算大作业:常微分初值问题数值解法(欧拉法、改进欧拉法、四阶龙格库塔法程序在Matlab中的实现)

作为研究生的入门课,数值计算的大作业算是所有研究生开学的重要编程作业。 我把矩常微分初值问题用欧拉法、改进欧拉法、与四阶龙格库塔法分别在MATLAB中编程实现。具体的程序详细标注后放在文章最后了,每道题我只展示运算结果与结论,需要的同…

Matlab之四阶龙格—库塔法方法:解常微分初值问题

目录 1. 题目 2. 算法原理 3. 代码 4. 结果 4.1 运行结果 4.2 结果分析 【若觉文章质量良好且有用,请别忘了点赞收藏加关注,这将是我继续分享的动力,万分感谢!】 直接通过解题的方式进行学习,代入感更强 1. 题…

龙格库塔方法的原理和案例及MTATLAB编程

文章目录 龙格库塔法的原理利用四阶龙格库塔法求解一个案例用MATLAB编程 龙格库塔法的原理 在百度百科中是这么解释的:在各种龙格-库塔法当中有一个方法十分常用,以至于经常被称为“RK4”或者就是“龙格-库塔法”。该方法主要是在…

欧拉法、改进的欧拉法、龙格-库塔法求解初值问题

求解初值问题 简介前期准备欧拉法改进的欧拉法龙格-库塔法标准四阶显式Kutta公式三级三阶显式公式四级四阶显式Kutta公式四级四阶显式Gill公式 示例MATLAB代码结果 简介 通过求解简单的初值问题: { d u d x f ( x , u ) ( 1 ) u ( x 0 ) u 0 ( 2 ) \begin{cases…

6.2 龙格—库塔法

学习目标: 学习龙格-库塔法的具体明确的学习目标可以有以下几点: 理解龙格-库塔法的基本思想和原理:我们应该了解龙格-库塔法的数值求解思想和数值误差的概念,包括截断误差和稳定性等基本概念,并且要熟悉龙格-库塔法的…

四阶龙格库塔法求解一次常微分方程组(python实现)

四阶龙格库塔法求解一次常微分方程组 一、前言二、RK4求解方程组的要点1. 将方程组转化为RK4求解要求的标准形式2. 注意区分每个方程的独立性 三、python实现RK4求解一次常微分方程组1. 使用的方程组2. python代码3. 运行结果 一、前言 之前在博客发布了关于使用四阶龙格库塔方…

四阶龙格库塔算法及matlab代码

常微分方程 Ordinary differential equation,简称ODE,自变量只有一个的微分方程。 例子1: d y d x f ( x , y ) \dfrac {dy} {dx}f(x,y) dxdy​f(x,y) , f ( x , y ) f(x,y) f(x,y)是已知函数 偏微分方程 Partial differential equation…

经典四阶龙格库塔法

关注微信公众号“二进制小站”~~获取更多分析~~(文末二维码~~) 龙格-库塔(Runge-Kutta)方法是一种在工程上应用广泛的高精度单步算法,经常被称为“RK4”或者就是“龙格库塔法”。 令初值问题表述如下。 对于该问题的RK4由如下方程给出: 其中&…

四阶龙格库塔法(Runge-Kutta)求解常微分方程的 Matlab程序及案例

文章目录 1. 算法2. 程序3. 案例4. 联系作者 1. 算法 上一篇介绍了显式欧拉法、隐式欧拉法、两步欧拉法和改进欧拉法求解常微分方程初值问题;其中显式欧拉法和隐式欧拉法是一阶算法精度,截断误差为 O ( h 2 ) O\left( {{h^2}} \right) O(h2)&#xff1b…