当前位置:文档之家› 第10章时序图(顺序图)-郭

第10章时序图(顺序图)-郭


:AddBookDialog Administrator AddBook()
:Book
:Title
findTitle() newBook()
addBook()

将对象置于时序图的顶部意味着在交互开始 的时候对象就已经存在了。 如果对象的位置不在顶部,那么表示对象是 在交互的过程中被创建的。

10.2.2 生命线
getBook()
Return Book getTitle()
Return Title
[遍历Loan数组] Return Ttile Array
10.6 顺序图建模步骤
时序图建模技术
① ② ③ ④
⑤ ⑥ ⑦
设置交互的语境。 通过识别对象在交互中扮演的角色,设置交互的场 景。 为每个对象设置生命线。 从引发某个消息的信息开始,在生命线之间画出从 顶到底依次展开的消息,显示每个消息的特性(如 参数)。 如果需要可视化消息的嵌套或实际计算发生时的时 间点,可以用激活修饰每个对象的生命期。 如果需要说明时间或空间的约束,可以用时间标记 修饰每个消息,并附上合适的时间和空间约束。 如果需要更形式化的说明某控制流,可以为每个消 息附上前置和后置条件。
10.3 对象的创建和撤销

如果对象位于时序图的顶部,说明在交互开始 之前该对象已经存在了。如果对象是在交互的 过程中创建的,那么它应当位于图的中间部分。

对象在创建消息发生之后才能存在,对象的生 命线也是在创建消息之后才存在的。
10.3 对象的创建和撤销

创建对象的两种表示方法:
10.3 对象的创建和撤销

生命线在顺序图中表示为从对象图标向下延伸 的一条虚线,表示对象存在的时间。
实际上,对象的生 命线可以代表一组 对象。
10.2.2 生命线
10.2.3 激活期(控制焦点)



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

如果要撤销一个对象,只要在其生命线终止点 放置一个“X”符号即可,该点通常是对删除 或取消消息的回应。
当用户登录失败后,将创建一个MessageBox 对象以提示用户登录错误。
递归:当一个操作调用它自身时,递 归就会出现。

当一个操作调用它自身时,所产生的消息总是 同步的,因此在顺序图中总是将递归的消息绘 制成同步消息。
例子: 汽车和车钥匙

能够遥控锁车和开锁的车钥匙 车主按下“锁车”按钮时,汽车自动上锁,闪动 一下车灯并发出一声蜂鸣,告诉你它已经把车门 上锁了。 CarOwner(车主) Car(汽车) CarKey(车钥匙)


接收信号 信号
顺序图中使用异步消息符号来对这两个信号建模。
例题:
注意:


当执行一个用例行为时,时序图中的每条消息对 应了一个类操作或状态机中引起状态转换的触发 事件。
时序图将交互关系表示 为一个二维图。 横轴代表了在协作中各 独立的对象。 纵轴是时间轴,时间沿 竖线向下延伸。 沿时间方向按时间递增 顺序列出个对象所发出 和接收的消息。
:AddBookDialog Administrator AddBook() findTitle() newBook() :Book :Title

激活条
10.2.4 消息

消息定义的是对象之间某种形式的通信,它可以激发 某个操作、发送信号或导致目标对象的创建或撤销。 消息是两个对象之间的单路通信,从发送方到接收方 的控制信息流。 消息可以用于在对象间传递参数。



消息可以是信号(对象间的异步通信),也可以是调 用(具有返回控制机制的同步调用)。 在UML中,消息使用箭头来表示,箭头的类型表序图的组成 10.3 对象的创建和撤销 10.4 顺序图中的时间建模 10.5 建模迭代 10.6 顺序图建模步骤 10.7 帧化顺序图:UML2.0中的顺序图 10.8 实例——图书馆管理系统的时序图
10.1
10.1 概述

用例图描述系统需求,类图描述组成系统结构的各 种类型。但单凭用例和类还无法描述系统实际上的 运行情况。使用交互图可以对其进行补充,为系统 各部分交互进行建模。


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

对象可以自己发消息给自己,自调用消息,递归调用。 UML中,激活的控制条被以重叠的方式表示出来。

在UML中,消息可以包含条件以限制它们只 在满足条件时才能被发送。条件显示在消息名 前的方括号中。
问题: 阻止消息和超时消息属于同步消息还是异步消息?
消息的语法格式

UML中规定消息的语法格式为:


必须先发生的消息列表。 条件,在一个方括号中的布尔表达式,表示只有 在条件满足时才能发送该消息。 消息顺序号,可能有多个消息顺序项。
表示有三个线程A B C。在发送线程 C的第2个消息前,必须先发送线程A 的第3个消息和线程B的第4个消息。

10.5 建模迭代


通过建模迭代可以实现消息的重复执行。在顺 序图中,建模人员常用的建模迭代消息是通过 一个矩形把重复执行的消息包括在矩形框中, 并且提供一个控制重复执行的控制条件。 如图所示重复执行的消息。
:DisplayDialog getTitleInfo() Borrower Loan Book
addBook()

汽车租赁系统中客户取车的时序图
取车的动作是从客户向工作人员提出取车要求并出示清 单开始,工作人员检查客户的预定申请,确认后顾客付 款。工作人员填写工作记录,同时登记汽车的状态,最 后客户取车。
10.2 时序图的组成
① ② ③ ④
时序图包含了4个元素: 对象(Object) 生命线(Lifeline) 消息(Message) 激活(Activation) /(控制焦点 focus of control)

一个用例可对应多个顺序图。 通常来说,一个完整的控制流有时是很复杂的, 随意,将一个大的控制流分为几个部分放在不 同的顺序图中是比较合适的。 一些顺序图用来描述主要事件流,另一些可以 用来描述可选择的路径或例外条件,然后用包 来组织这些顺序图的集合。


10.6 补充知识 帧化顺序图:UML2.0中的顺序图
par
break
片段中的各个交互并行执行。 当包含在break片段中的交互发生时,则退出 任何一个交互。类似于程序设计语言中的 break语句
。。。
ref 交互片段---(reference)

为一个用例的多个场景创建实例顺序图,图和图 之间的相当一部分内容是重复的。 ref交互片段能够在一张顺序图中快速容易地复用 另一张顺序图的部分内容。 使用方法:使用ref交互片段并写明引用的交互图 的名称。 ref交互片段也叫做交互事件(interaction occurrence)。

交互片段类型 ref loop opt alt
作用
分解大型的顺序图,类似于用例关系中的 include(程序设计语言中的文件包含)
循环执行该片段内的交互,直到判断条件为假。 类似于程序设计语言中的循环语句。 包含在此片段中的交互只有在判断条件为真时 才执行。 根据判断条件,选择片段中的一个交互执行。 类似与程序设计语言中的if..else语句



这种情况发生在两个应用程序通过网络相互 通信时。如图
OjectA Message1
ObjectB
Message2

一个消息需要一段时间才能完成的最好示例是 使用电子邮件服务器进行通信。 因为电子邮件服务器是外部对象,具有潜在的 消耗通信时间的可能性,可以把发送到电子邮 件服务器和从中接收到的消息建模为耗时的消 息。

与调用消息相比,异步消息在箭头符号上不同。

在登录时使用异步消息。 处于对系统安全的考虑, 在登录时使用一个日志 文件,以记录用户的登 录操作。
使用异步消息创建日志 时,对系统的操作不需 要等待到对日志文件操 作完成之后进行,这样 可以提高系统响应的速 度。 最常见的实现异步消息 的方式是使用线程。当 发送该异步消息时,系 统需要启动一个线程在 后台运行。

帧化的概念很有用,有多种应用方法,不同的应 用帧化类型(间隔区操作符)对应不同。
交互片段(interaction fragment)

交互片段是UML2.0中对一个顺序图的某一段 的一般的称呼。 画法和帧化整个顺序图是相似的。只是在间隔 区中,不同类型的交互片段,其片段类型(操 作符)也不同。

UML2.0针对顺序图添加了一个有用的改动。 帧化一个顺序图:用一个边框包围它,并在其 左上角添加一个间隔区。这个间隔区包含了识 别该顺序图的信息。 间隔区中,有操作符(描述帧中的图的类型的 表达式)和图所描绘的交互的名字。


间隔区: 对于一个顺序图,操作 符是 sd (sequence diagram). BuySoda是交互的名字。



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

Rose 还对消息类型做了扩充,增加了阻止消 息(Balking)和超时消息(Timeout)。
阻止消息是指消息发送者发送消息给接收者, 如果接收者无法立即接收消息,则发送者放弃 这个消息。


Rose中用折回的箭头表示阻止消息。

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