第6章 顺序图和协作图
软件工程---交互建模之交互图,顺序图与协作图
2.5 消息
格式
[前缀][守卫条件][顺序表达式][返回值:=]消息名([参数列表])
例:
2: display ()
简单消息
1.3.1: p:=find()
带返回值的嵌套消息
[x<0] 4: invert(x, color) 条件消息
3.1 *[x = 1..10] : update() 循环消息
[ 条件子句 ] 条件子句一般用来表示分枝而不是用作守卫条件[x<0]是两个可
以用来分枝的条件子句这两个条件只能有一个为真因而只有一 个分枝被执行(即发送与分枝有关的消息) 条件子句和循环子句都可以用伪代码或真正的编程语言来表示 序列表达式用冒号结束
返回值、消息名和参数表
返回值表示一个操作调用(即一个消息)的结 果
顺序图中消息编号可显示,也可不显示。 协作图中必须显示Procedure Call) 异步(Asynchronous) 返回(Return) 自关联消息(Self Message)
2.5 消息
UML三种消息:
调用(Procedure Call) 发送者把消息发送后,等待直到接收者返回控制, 可以表示同步(synchronous message); 实心箭头符号
包括对象名和类名 类名(匿名对象) 对象名(不关心类)
2.3 生命线
生命线(Lifeline):
每个对象都有自己的生命线,用来表示在该用例中一个对象在一段时 间内的存在
垂直的虚线 如果对象生命期结束, 则用注销符号表示 对象默认的位置在图 顶部,表示对象在交互 之前已经存在 如果是在交互过程中 由另外的对象所创建, 则位于图的中间某处。
顺序图
面向时间描述对象交互的图
协作图
顺序图和协作图作用和建立方法
:Location
3:priceLocation(priceTier)
4:priceLocation(priceTier)
对对象象31
对对象象12
对对象象23
1.oper1()
1.1oper2()
1.1.1oper1()
补充:迭代和条件
迭代指的是需要对顺序图中的一条或多条 消息执行不止一次,对于单独一条消息, 迭代使用迭代符号--星号以及限制迭代 次数的条件来表示。
控制焦点表示为在生命线上的小矩形。
控制焦点可以嵌套,嵌套的控制焦点可以 更精确地说明消息的开始和结束位置。
激活期表示对象执行一个动作的期间,即 对象激活的时间段,和控制焦点表示的意 义相同。
顺序图
控制焦点嵌套
对象1
oper1() oper2()
对象2 oper3()
对象3
顺序图中的消息
消息被平行的置于对象生命线之间,水平的放置 方式说明消息的传递是瞬时的,即消息在发出之后 会马上被收到;
顺序图中的消息 语法格式(2)
guard-condition:警戒条件,是一个在方 括号中的布尔表达式,表示只有在条件满 足时才能发送该消息。
➢ 格式为:‘[’boolean-expression’]’, 方括号放在单引号中,表示方括号是消息 的一部分。
➢ 例:[x<0]4:invert(x,color)
Performance对象根据传递给它的ShowSeatID 返回一个座位号。
控制对象告知Order对象,将所选的座位添加到 已订购座位列表中。
一个顺序图例子(3)
Order对象返回布尔值true,说明一切做好 了。
控制对象告知ShowSeat对象它已经被选中, ShowSeat对象将它的状态由not sold转为 sold。 ShowSeat对象返回void。 说明:每个消息前面的序列号是可选的,但 是在讨论或改动UML图的时候,它们非常有 用。
第六章.顺序图和协作图
6.3 顺序图中的消息 返回消息:表示从过程调用返回 如果是过程消息返回, 返回消息:表示从过程调用返回. 如果是过程消息返回 则不用 画出; 如果是非过程消息, 则必须画出. 画出 如果是非过程消息 则必须画出
返回消息
6.3 顺序图中的消息 阻止消息:消息的发送者传递消息给接收者 阻止消息:消息的发送者传递消息给接收者, 如果接收者无法 立即接收, 则发送者放弃该消息. 立即接收 则发送者放弃该消息 超时消息:消息的发送者发出消息给接收者并按指定时间等待 超时消息:消息的发送者发出消息给接收者并按指定时间等待, 若接收者无法在指定时间内接收, 则发送者放弃该消息. 若接收者无法在指定时间内接收 则发送者放弃该消息
•
6.2 顺序图
• 创建对象的两种表示方法: 创建对象的两种表示方法:
6.2 顺序图
• 如果要撤销一个对象,只要在其生命线终止点放置一 如果要撤销一个对象,
符号即可, 个“X”符号即可,该点通常是对删除或取消消息的回 符号即可 应。
6.3 顺序图中的消息
• 调用消息 procedure call • 异步消息 asynchronous • 返回消息 return • 阻止消息 balking • 超时消息 time-out
• 顺序图的样式和元素 • 消息:对象之间传输的信息 消息:
消息
6.2 顺序图
• 顺序图的样式和元素 • 对象的创建和撤消 • 如果对象位于时序图的顶部,说明在交互开始之前 如果对象位于时序图的顶部,
该对象已经存在了。 该对象已经存在了。如果对象是在交互的过程中创建 那么它应当位于图的中间部分。 的,那么它应当位于图的中间部分。 对象在创建消息发生之后才能存在, 对象在创建消息发生之后才能存在,对象的生命线 也是在创建消息之后才存在的。 也是在创建消息之后才存在的。
知识点学习(顺序图和协作图 )
7.2 通信图
•图10从订单生成订货单的通信图。
2 通信图
• 1.通信图的作用
• 通信图常用来描述业务或软件系统中,每个对象在交互发生时承担的 角色,即强调了交互发生时,每个对象承担的职责。 • 使用协作图可以显示对象相互协作时充当的角色。如果需要强调时间 和序列,最好选择顺序图建模;如果需要强调上下文相关,最好选择 协作图建模。 • 协作图用于显示对象之间如何进行交互,以实现特定用例或用例中特 定部分的行为。设计员使用协作图和顺序图确定并阐明对象的角色, 这些对象执行用例的特定事件流。这些图提供的信息主要用来确定类 的职责和接口。 • 2.通信图的组成元素
1 顺序图
对象
控制焦点 消息
•图2 顺序图
生命线
1 顺序图
• 2.对象:
• 顺序图中对象的符号和对象图中对象所用的符号一样。将对象置于顺 序图的顶部意味着在交互开始的时候对象就已经存在了,如果对象的 位置不在顶部,那么表示对象是在交互的过程中被创建的。 • 3.生命线 • 生命线是一条垂直的虚线,表示顺序图中的对象在一段时间内的存在。 每个对象的底部中心的位置都带有生命线。生命线是一个时间线,所 用的时间取决于交互持续的时间。 • 4.控制焦点 • 在对象的生命线上,包含一个矩形,表示对象处于激活状态,处于激 活状态的对象正在执行某个任务。对象在完成自己的工作后,被去激 活,对象就处于空闲状态。
1.1: findStudent(name) 1.2: findCourse(course) <<self>> 1: register(name,course) :Registrar :RegistrationManager [(!s)&c]1:studentNotFound [s&(!c)]1:courseNotFound [(!s)&(!c)]1:allNotFound [s&c]1:OK :StudentList
第6章 软件动态行为分析与设计
[free memory] 1: Create()
:MainWindow
:Customer{new}
顶层包::主角1
3:Show(Customer)
{parameter} 2: Create()
:CustomerWindow{transient}
3.1: Update(data) 长春理工大学计算机科学技术学院 陈纯毅
长春理工大学计算机科学技术学院 陈纯毅
6.2 状态图
登录状态
login
login time=current time
entry/type “login” exit/login (userName,password) do/get userName do/get password help/display help
Submit [Info complete]
Order Marked Pending
Payment Information Sent to Accounting
[payment good] Order Marked
Confirmed
Order ID Displayed
长春理工大学计算机科学技术学院 陈纯毅
长春理工大学计算机科学技术学院 陈纯毅
6.4 顺序图
长春理工大学计算机科学技术学院 陈纯毅
6.4 顺序图
订货操作 的顺序图
长春理工大学计算机科学技术学院 陈纯毅
6.5 协作图
Print(ps-file)
:Computer
顶层包::顶层包
1 :Print(ps-file)
[printer free]1.1 :Print(ps-file)
6.6 活动图
第6章 顺序图和协作图
6.1.1 顺序图概述
顺序图主要用于按照交互发生的一系列顺序,显示对 象之间的这些交互。很象类图,开发者一般认为顺序 图只对他们有意义。然而,一个组织的业务人员会发 现,顺序图显示不同的业务对象如何交互,对于交流 当前业务如何进行很有用。除记录组织的当前事件外, 一个业务级的顺序图能被当作一个需求文件使用,为 实现一个未来系统传递需求。在项目的需求阶段,分 析师能通过提供一个更加正式层次的表达,把用例带 入下一层次。那种情况下,用例常常被细化为一个或 者更多的顺序图。在UML图中,顺序图与用例图和类 图之间关系如图6.1所示。
图6.8 异步消息符号
6.1.2 顺序图的基本内容
③返回消息(Return Message) 返回消息表示从过程调用返回。
图6.9 返回消息图标
6.1.2 顺序图的基本内容
另外在消息的创建过程中还存在一些其他的内容,比 如说创建对象、撤销对象、自关联消息等。 ①创建(create)对象 一个对象可以通过发送消息来创建另一个对象,即创 建对象,如图6.10所示。对象在创建消息发生后才能存 在,对象的生命线也是在创建消息后才存在。
6.1.3 约 束
userInterface dataControl dataSource
1 : requestArray() 2 : requestArryLength() 3 : returnArrayLength
loop
Condition 4 : requestArrayItem()
5 : returnArrayItem
3. 生命线 4. 激活期 生命线(LiftLine)代表顺序图中对象在一段时间内的 存在。生命线在顺序图中表示为从对象图标底部中心 位置向下延伸的一条虚线(但事实上UML2中定义的生 命线可以用实线来表示)。 激活期(Activation)也被称为控制焦点,代表顺序图 中的对象执行一项操作的时期,是顺序图中表示时间 段的符号,在这个时间段内对象将执行相应的操作。 在UML中,用小矩形表示,被称为激活条或控制期, 对象就是在激活条的顶部被激活的,在完成自己的工 作后被去激活。
图书馆管理系统中的协作图_管理信息系统实用教程(第2版)_[共2页]
第6章 面向对象的系统分析
139 图书管理员处理还书的顺序图如图6.18所示。
读者续借图书的顺序图如图6.19所示。
图6.18 图书管理员处理还书的顺序图 图6.19 读者续借图书顺序图 读者预约图书的顺序图如图6.16所示。
6.4.4 协作图的基本构成
协作图的主要作用是快速浏览相互协作、用来支持一个特定场景的所有对象。
协作图的参与者、对象和消息都使用了与顺序图相同的符号。
只是没有使用生命线符号,而使用了一个不同的符号:链接符号。
由于没有生命线表明场景消息的时间,所以用数字顺序标号来显示每一个消息的顺序。
在对象之间或在参与者与对象之间的连线表示链接。
在一个协作图中,链接表示两个对象共享一个消息——一个发送消息一个接收消息。
连线本质上仅仅用于传递消息。
可以把它们想象为用于传输消息的线缆。
协作图的重点是描述参与者和对象之间的协作,尽管图中也包含了消息信息,但它的重点仍然是协作本身。
6.4.5 图书馆管理系统中的协作图
下面将给出图书馆管理系统中的协作图,请读者与对应的顺序图对比来体会两种图的区别和联系。
图书管理员处理借书的协作图如图6.20所示。
图书管理员处理还书的协作图如图6.21所示。
读者续借图书的协作图如图6.22所示,其中
表示某个消息发送到某个对象后需要返回
一个消息结果。
读者预约图书的协作图如图6.23所示。
第6章 顺序图和协作图
第6章
顺序图元素
•发送者把消息发送后,等待直到接收者返回 控制,可以表示同步
6.2 顺序图元素
回复消息(reply message):目标对象执行结束 时,会发出回复消息给来源对象。它的图符是带 开放式箭头的虚线,从负责执行的目标对象反向 指回给来源对象,如下图所示。
第6章
顺序图元素
•表示消息的返回。消息上方放置返回值 •同步消息的返回可以画出(如果想明确表达返回值),也 可以不画出,直接隐含。 •异步消息可以有返回,也可以没有。(可以响应异步消息, 也可以不响应该异步消息。) •如果顺序图上显示有编号,则返回消息的编号和当初发送 消息的编号完全一样。
6.2 顺序图元素
6.2 顺序图元素 6.2.4 消息 在顺序图中,对象都不是孤立存在的,这些对象 之间是通过消息进行通讯。对象通过相互传递消 息来进行相互作用。使用消息是用来说明顺序图 中不同活动对象之间的通信过程。一个消息可以 激发一个对象的某个操作,完成一定的功能。 顺序图中,消息由从一个对象的生命线指向另一 个对象的生命线的直线箭头表示,箭头上标注要 发送的消息名。在消息的起点隐含着发送事件, 消息的终点隐含着接收事件 。
在顺序图中使用一个方框表示 一个对象,对象的名字下面有 一个下划线,一个学生对象 “张三”如图所示。
张三
第6章
顺序图元素
第6章
顺序图元素
对象的命名方式有三种: •包括对象名和类名 •类名(匿名对象) •对象名(不关心类)
6.2 顺序图元素
在顺序图中也可以使用用例图中的参与者图符 。 如果一个对象在顺序图的第一个操作之前就已经 存在,那么该对象的图符就应该画在顺序图的顶 部。 如果一个对象是在顺序图的交互过程中,由其他 对象创建的,那么该对象就不应该出现在顺序图 的顶端,而应该出现在创建该对象消息的末端 。
UML中顺序图与协作图的对比与选择
UML中顺序图与协作图的对比与选择UML(Unified Modeling Language)是一种用于软件系统建模的标准化语言,它提供了多种图形化工具,其中顺序图和协作图是两种常用的交互图。
本文将对这两种图进行对比,并讨论在不同情况下的选择。
顺序图是一种描述对象之间交互行为的图形化工具。
它展示了对象之间的消息传递顺序,以及消息的触发和响应。
顺序图以时间为轴,清晰地展示了对象之间的交互过程。
通过顺序图,我们可以更好地理解系统中不同对象之间的协作方式。
例如,在一个订单处理系统中,顺序图可以展示顾客对象与订单对象之间的交互过程,包括顾客发起订单请求、订单对象接收请求并生成订单、顾客确认订单等。
协作图是一种描述对象之间协作关系的图形化工具。
它展示了对象之间的结构和关联关系,以及对象之间的消息传递。
协作图以对象为中心,通过箭头和标签展示了对象之间的交互过程。
与顺序图相比,协作图更加注重对象之间的结构和关联关系。
例如,在一个电子商务系统中,协作图可以展示顾客对象、订单对象和商品对象之间的协作关系,包括顾客对象发起订单请求、订单对象生成订单并关联商品对象等。
那么,在实际应用中,我们该如何选择使用顺序图还是协作图呢?首先,如果我们更关注对象之间的交互行为和消息传递顺序,那么顺序图是更好的选择。
顺序图以时间为轴,清晰地展示了对象之间的交互过程,帮助我们更好地理解系统中不同对象之间的协作方式。
例如,在一个银行系统中,我们可以使用顺序图展示客户对象与银行柜员对象之间的交互过程,包括客户发起取款请求、柜员接收请求并处理、客户确认取款等。
其次,如果我们更关注对象之间的结构和关联关系,那么协作图是更好的选择。
协作图以对象为中心,展示了对象之间的结构和关联关系,帮助我们更好地理解系统中不同对象之间的协作关系。
例如,在一个团队协作系统中,我们可以使用协作图展示团队成员对象之间的协作关系,包括成员之间的沟通、任务分配和工作协调等。
顺序图和协作图
顺序图和协作图第4章顺序图和协作图4.1 交互图概述在一个待开发的系统中,任何对象都不是孤立存在的,系统中的这些对象都是通过传递消息进行交互的。
因此在设计系统时,就免不了对交互进行缄默,并用交互图展现出来。
4.1.1 交互的定义当需要对类操作、类、构件、用例乃至整个系统的控制流进行建模时,一定离不开“交互”。
交互:一次交互就是指在特定语境中,为了实现某一个目标,而在一组对象之间进行交换的一组消息所表示的行为。
交互图:是用来描述对象之间以及对象与参与者之间的动态协作关系以及协作过程中行为次序的图形文档。
通常用来描述一个用例的行为,显示该用例中所涉及的对性和这些对象之间的消息传递情况在大多数情况下,消息通常是指启动一个操作或发送一个信号,以及创建或销毁一个对象。
4.1.2 UML交互图的类型顺序图:是一种强调消息时间顺序的交互图,着重描述对象按照时间顺序的消息交换,为读者提供了控制流随着时间推移的清晰的可视化轨迹。
协作图(UML 2.0中的通信图):强调的是参加交互的对象的组织,着重描述系统成分如何协同工作,为读者提供了在协作对象结构组织的语境中观察控制流的一个清晰的可视化轨迹。
顺序图和协作图从不同的角度表达了系统中的交互和系统的行为,它们可以相互转化,并且转换过程不会丢失信息。
定时图(UML 2.0中新增):采用了一种带数字刻度的时间轴来精确地描述消息的顺序,而不是像顺序图那样只是指定消息的相对顺序,而且它还允许可视化的表示每条生命线的状态变化,当需要对实时时间进行定义时,采用定时图可以很好的满足。
交互概述图(UML 2.0中新增):是交互图和活动图的混合物。
定时图和交互概述图是两种特殊的变体。
4.1.3交互图和类(图)4.2 顺序图顺序图:显示的是参与交互的对象及对象之间消息交换的顺序,用来表示用例中的行为顺序。
图显示的是汽车租赁系统中客户取车的顺序图,涉及5个对象:客户、预定请求、工作人员、工作记录和汽车。
UML顺序图和协作图
练习: 比较顺序图与协作图
在这个练习中,将通过对ATM机取款用例的行为 描述,比较顺序图与协作图。例如,客户Joe从ATM机 提取20美金的场景。
协作图的建模方法
协作图的建模有3个基本的步骤:
1)确定属于协作图的元素。 2)建模这些元素之间的结构关系。 3)建模实例层的协作图。
建模分数记录系统的协作图。具体用例是Teacher使用 Website登录并且查看学生的分数。
协作图的符号(续)
3.消息 消息是协作图中对象与对象之间通信的方式。消息在协 作图中显示为一个伴随链接或者关联角色的文本字符串,并 带有一个箭头来指示消息沿着关系传递的方向,如下图所示。
Message :Object1 :Object2
协作图的符号(续)
消息还可传递变量或者参数 下例说明了对象Teacher 如何把消息AssignGrade传递 给对象Student,它使用了参数 Class、Assignment和 Grade,如下图所示。
每个对象的生命线都是一条从对象向下的虚线。表 示对象的存在时间。
顺序图的符号(续)
激活 在生命线上的窄矩形条被称为激活 (activation).激活表示该对象正在执行某 个操作。激活矩形的长度表示出激活的持续 时间.
顺序图的符号(续)
• 消息 消息用来说明顺序图中不同活动对象之间的通信。它可在 一个对象需要取消不同对象的进程时或者需要向另一个对象提 供服务时,使用消息。 消息从活动对象生命线到接收对象生命线的箭头表示。箭 头上面标记要发送的消息,如下图所示。
第1个工作流
顺序图的建模方法(续)
顺序图的建模方法(续)
接下来以独立的顺序图建模从属工作流。此处只建模否定的 条件,如下图所示。
第6章顺序图和协作图优秀课件
顺序图
范例2
顺序图
范例3
系统管理员添加书籍的顺序图
: Administrator
: Maintenance Window
1: add item( )
: Title
2: find(String)
Check if corresponding title exist
3: return true
4: create(Integer, Title)
交互图通过从用例建模中得到的用例文档 说明、词汇表和用例图来创建。
顺序图
概念
顺序图是强调消息时间顺序的交互图。
顺序图描述了对象之间传送消息的时间顺序, 用来表示用例中的行为顺序。
顺序图将交互关系表示为一个二维图。其中, 纵轴是时间轴,时间沿竖线向下延伸。横轴代 表了在协作中e)
消息定义的是对象之间某种形式的通信,它可 以激发某个操作、唤起信号或导致目标对象的 创建或撤销。
消息是两个对象之间的单路通信,从发送方到 接收方的控制信息流。
消息可以用于在对象间传递参数。
消息可以是信号,也可以是调用。
在UML中,消息使用箭头来表示,箭头的类型 表示了消息的类型。
概念
顺序图
顺序图包含了4个元素:
对象(Object) 生命线(Lifeline) 消息(Message) 激活(Activation)
顺序图
对象(Object)
顺序图中对象的符号和对象图中对象所用的符 号一样。
将对象置于顺序图的顶部意味着在交互开始的 时候对象就已经存在了,如果对象的位置不在 顶部,那么表示对象是在交互的过程中被创建 的。
并且,给出系统用例的实现描述,是从外部视图 转到内部结构的第一步。
交互作用图(顺序、协作)
创建消息:创建一个对象,箭头需要指到所建立的 对象上面。 销毁消息:销毁一个对象,对象生命线用差号来表 示销毁,表示被销毁对象的生命周期将到此终结。
obj1:Class <<c re at e>> obj2:Class
<<d e s t ro y >>
<<boundary>> : 职员管理界面
• findTitle(isbn:String):OID • 返回指定ISBN的Title对象的 OID • getTitle(oid:OID):Title • 返回Title对象 • getAvaliableBook():OID • 返回第一个可借阅的Book对 象的OID
• 类Borrower • borrowerID:String • loans:OID[ ]
(3). 简单消 息
它只表示控制如何从一个对象传递给另一个对象,而没有描述通信的任何细节。 这种类型的消息主要用于通信细节未知或者无需考虑通信细节的场合。也就是说,主 要用于不知道消息是同步还是异步的场合,但通常情况下表示异步消息此外在高层分 析中,有时候没有必要指定一个消息是同步的还是异步的。如下面的示例所示。
顺序图是显示对象之间交互的图, 这些对象是按时 间顺序排列的. 它显示参与交互的对象及对象之间消息交互的顺序.
对象/参与者 对象维
生命线 消息 时间维 控制焦点
对象的三种命名方式:
生命线是对象图标向下延伸的虚线, 表示对象生存时间.
消亡点
控制焦点(Focus of Control)又称为激活期(Activation), 用 生命线上的小矩形表示, 在这个时间段内, 对象执行相 应的操作.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.4 顺序图理解
计算机 打印文件 [打印机忙] [打印机空闲] 打印服务器 打印机 打印队列
条件[打印机忙]和[打印机空闲]是两个互斥的条件, 打印服务器根据条件来确定消息发给对象“打印 机”还是对象“打印队列”。两个消息都是从同 一点出发的,这表示两个分支在同一时间点上只 能执行一个分支。
6.4 顺序图理解 6.4.2 从属流 从属流与条件分支不 同,从属流允许某一 个对象根据不同的条 件改变执行不同的操 作,即可以创建对象 的另一个生命线分支。
如果为了强调需要对多个对象重复发送某个消息, 可以在顺序图中添加循环标识符号,顺序图中表 示循环执行的消息有三种方式。
第一种,在需要循环重复执行的消息前添加符号 “*”,并在其后的中括号中写明具体的条件。
计算机 打印服务器 打印队列
校验打印文件
*[for each file] [check()=true]
6.2 顺序图元素
顺序图描述了对象以及对象之间传递的消息,强 调对象之间的交互是按照时间的先后顺序发生的, 这些特定顺序发生的交互序列从开始到结束需要 一定的时间。在顺序图中主要包括了以下四种元 素: • • • • 对象 生命线 激活 消息
6.2 顺序图元素 6.2.1 对象
类定义了对象可执行的各种行为,但在面向对象 系统中,行为的执行者是对象,而不是类,因此 在顺序图中通常描述的是对象层次而不是类层次。 面向对象分析中最基本的单位是对象,它代表现 实世界中一个一个地具体事物。 在顺序图中使用一个方框表示 一个对象,对象的名字下面有 一个下划线,一个学生对象 “张三”如图所示。
张三
6.2 顺序图元素
在顺序图中也可以使用用例图中的参与者图符 。 如果一个对象在顺序图的第一个操作之前就已经 存在,那么该对象的图符就应该画在顺序图的顶 部。 如果一个对象是在顺序图的交互过程中,由其他 对象创建的,那么该对象就不应该出现在顺序图 的顶端,而应该出现在创建该对象消息的末端 。
6.2 顺序图元素 6.2.2 生命线 对象在垂直方向拖出的虚线是对象的生命线,用 于表示对象是存在的时间范围。 对象的生命线是一个时间线,从顺序图的顶部一 直延续到顺序图的底部,所用的长度取决于交互 的维持长度。
6.2 顺序图元素
寻获消息(found message):缺少了发送事件, 只有接收事件的消息称为寻获消息。对于寻获消 息,在表示时需要在消息的非箭头端加上一个实 心的小圆。 未知消息( unknown message ):既没有发送事 件,也没有接收事件的消息称为未知消息。对于 未知消息,UML中也没有详细说明这种消息,也 许这个消息在实际应用时并不真实存在。
6.1 顺序图概述
顺序图的主要用途之一是用来为某个用例的泛化 功能提供其所缺乏的解释,即把用例表达的需求, 转化为进一步、更加正式层次的精细表达。 顺序图描述了对象之间传递消息的时间顺序,用 来表示用例中行为顺序。用例常常被细化为一个 或多个的顺序图。 顺序图用一个二维图描述系统中各个对象之间的交 互关系。主要由四个标记符组成:对象、生命线、 消息和激活。
6.2 顺序图元素 根据通信性质的不同,UML中定义了几种消息的 性质。在UML 2.0规格书中,定义了四种消息性 质,在UML 2.1.1中,消息性质从原来的四种变 为了六种,这是UML中变化比较大的部分。
创建消息(createMessage):用来创建对象的消 息,称为创建消息。它的图符是带开放性箭头的 虚线,箭头的指向目标对象,如下图所示。
6.4 顺序图理解 下图给出了一个图书超期检查系统的顺序图示例, 用来描述图书馆中图书超期检查的过程。参与图 书检查的对象有四个:系统、图书、读者及通知 单。
系统
CheckAllBooks( )
CheckTimeExceding( ) GetBookInformations( ) GetReaderInformations( ) Create( ) PrintNotice( )
6.2 顺序图元素
最常见的实现异步消息的方式是使用线程。当系 统发送异步消息时,需要启动一个线程在后台运 行。异步调用的图符如下图所示。 异步信号(asynchSignal):同步信号消息和异 步信号消息的区别在于,消息发送对象是否等待 目标执行结束才继续往下执行。异步信号消息类 似于最常用的简单消息,一般情况下,如果不必 强调消息的性质,则可以使用异步信号消息代表 其他性质的消息。它的图符如下图所示。
6.4 顺序图理解
第四步,系统程序对象向对象根据超期图书信息 向相应的“读者”对象发送消息 “GetReaderInformations”得到图书对象信息和 相应读者对象信息。 第五步,系统程序对象负责发送一个“Create”消 息,创建一个新对象“通知单”,通知单中记录 超期图书和相应的读者信息。 第六步,系统程序对象负责向“通知单”对象发 送一个消息PrintNotice,打印出生成的通知单。
打印服务器 打印队列
添加打印任务
删除打印任务
如图中所示,打印服务器会根据需要从打印队列 中删除打印任务或根据需要向打印队列中添加打 印任务。
6.4 顺序图理解 6.4.3 消息延迟 顺序图中的消息通常都是水平的,表明消息的传 递是瞬时的,也就是说在消息传递的过程中不会 发生其他的事件。但有些情况下,从一个对象到 另一个对象的消息可能存在一定的时间延迟,也 就是说消息的传递不是瞬时完成的。对于这种带 有延迟的消息的表示,可以将消息的箭头向下倾 斜
6.1 顺序图概述
在顺序图中参加交互的各个对象沿横轴排列,发 起交互的对象通常放在左边,其他对象依次放在 右边。这些对象发送和接收的消息沿纵轴方向按 时间顺序从上到下放置。该在顺序图中纵轴为时 间轴。 顺序图清晰地描述了系统随时间推移的控制流轨 迹。图中每个对象在单独的一列中,每个对象符 号放置在代表生成对象消息的箭头末端,其垂直 位置表示该对象第一次生成的时间。
6.2 顺序图元素
同步调用(synchCall):同步调用消息代表一个 操作调用的控制流。同步调用消息的发送方把控 制传递给消息的接收者,然后暂停活动,等待消 息接受者的应答,收到应答后才继续自己的操作。 同步调用消息被水平的置于对象的生命线之间, 水平放置的方式说明消息的传递是瞬时的,即消 息在发出之后会马上被收到。它的图符是带实心 箭头的实线,如下图所示。
6.4 顺序图理解 上图描述的超期检查过程如下: 第一步,系统程序对象负责定期对所有外借图书 进行超期检查,每次检查时首先发送消息 “CheckAllBooks”,用来检查所有外借图书,获 取图书借阅时间和期限信息。 第二步,系统程序对象向对象“图书”发送消息 “CheckTimeExceding”检测每一本外借图书是否 超期。 第三步,系统程序对象向对象“图书”发送消息 “GetBookInformations”来获取超期图书的信息。
6.4 顺序图理解
用户 邮件服务器
连接 连接时间小于1秒 返回邮件
比较典型的消息延迟的例子就是电子邮件的应用, 由于邮件服务器是外部对象,用户与邮件服务器 的相互通讯需要必要的网络延迟,因此可以把用 户和邮件服务器的连接和从邮件服务器下载邮件 的活动表示为延迟消息 。
6.4 顺序图理解 6.4.4 循环
6.2 顺序图元素 6.2.4 消息 在顺序图中,对象都不是孤立存在的,这些对象 之间是通过消息进行通讯。对象通过相互传递消 息来进行相互作用。使用消息是用来说明顺序图 中不同活动对象之间的通信过程。一个消息可以 激发一个对象的某个操作,完成一定的功能。 顺序图中,消息由从一个对象的生命线指向另一 个对象的生命线的直线箭头表示,箭头上标注要 发送的消息名。在消息的起点隐含着发送事件, 消息的终点隐含着接收事件 。
图书
读者
通知单
6.4 顺序图理解 对象“系统”是图书管理系统中的一个控制程序, 它负责定期检查是否有超期图书;“图书”对象 是图书馆中的每一本具体的图书;“读者”对象 是借阅图书的某个具体的读者;“通知单”对象 是一个具体的超期通知单。 通过图中对象的放置位置可以看出,对象“系 统”、“图书”和“读者”是在发送第一条消息 前就存在的,而对象“通知单”的位置没有在顺 序图的顶端,它是在消息发送的过程中,通过对 象“系统”发送的“Create”消息创建的。
6.2 顺序图元素
回复消息(reply message):目标对象执行结束 时,会发出回复消息给来源对象。它的图符是带 开放式箭头的虚线,从负责执行的目标对象反向 指回给来源对象,如下图所示。 异步调用(asynchCall):异步调用消息表示消 息的发送对象不用等待消息接收对象回应的返回 消息,即可以开始另一个活动。异步调用消息在 某种程度上规定了发送方和接收方的责任,即发 送方只负责将消息发送到接收方,至于接收方如 何响应,发送方则不需要知道。
6.4 顺序图理解 第二种,在时间轴上注释表明消息的重复执行, 使用大括号标明说明文字。如图所示,打印服务 器对象时间轴上大括号内标注重复执行的动作。
计算机 打印服务器 打印队列
校验打印文件 {对每个文件进行校 验,直到全部校 验合格}
6.4 顺序图理解 第三种,使用矩源自框将需要重复执行的消息框起 来,并在中括号内说明重复执行的条件,如图所 示。矩形框框内为需要重复执行的消息,矩形框 下中括号内是重复执行的条件。
6.2 顺序图元素 从消息和消息端的元模型可以得知,消息包含了 消息种类(message kind)和消息性质(message sort)两个属性。 消息中包括四种消息种类:
完整消息( complete message ):一般常见的消 息都是完整消息,该消息的发送事件和接受事件 都是存在的。 迷途消息(lost message):只有发送事件,但没 有接收事件的消息称为迷途消息,对于迷途消息, 在表示时需要在消息的箭头端加上一个实心的小 圆。
6.2 顺序图元素
在顺序图中消息的次序是由它们在垂直轴上的位 置来决定的,在垂直轴上靠上的消息先发送,靠 下的消息后发送。 在UML中,消息的发送方和消息的接收方可以是 同一个对象。也就是说,对象也可以将消息发送 给自己本身,也就是自己给自己发送消息 在UML中,每一条消息可以带有一个名称说明, 可以带参数。消息还可以包含条件以限制它们只 在满足条件时才能被发送。条件标注在消息的名 称上的方括号中。