《统一建模语言(UML)》第4章顺序图与协作图精品PPT课件
第4章顺序图和协作图

Q:这两种消息可以看做是同步or异步消息?
UML
- 24 -
•消息
格式
[前缀][警戒条件][顺序表达式][返回值:=]消息名([参数列表])
例:
2: display ()
简单消息
1.3.1: p:=find()
信息亭发Request (count, performance)消息给售票中心,表示调用售票中心类的Request (count, performance)操 作,来查询演出的信息。
售票中心发Show Available(seat-list)消息给信息亭,表示调用信息亭类中的Show Available(seat-list)操作,给出 可用的座位表。…………
UML
- 17 -
4.2 顺序图
复杂的例子
信息亭
售票中心
信用卡服务
从这个例子中可以看出: Kjosk类中的操作有
Show Available (seat-list) Demand Payment (cost) printtickets (performance, seats) eject card Box Office中的操作有 Request (count, performance) Select Seats Insert Card (Card Number) authorized Credit Card Service类中的操作有 charge(card number, cost)
※发送者把消息发送后,等待直到接收者返回控制,可 以表示同步;
※实心箭头符号
UML
- 20 -
•消息
第4章-顺序图和协作图PPT课件

Sequence
-
Class (Complex)
Object
Collaboration
3
4.1 交互图概述(interaction diagram)
• 在对软件密集型(software-intensive)系统建模时, 如何对它的动态(模型)方面建模?怎样才能可 视化一个运行的系统?
• 交互图(interaction diagram)是一种详细表示对 象之间以及对象与系统外部的参与者(actor)之间 动态联系的图形文档。
例:超时消息的表示符号。
-
21
例:一些消息的例子
2: display (x, y) 1.3.1: p:= find(specs) 4 [x < 0] : invert (x, color) 3.1*: update ( ) A3,B4/ C2: copy(a,b)
简单消息 嵌套消息,消息带返回值 条件消息 循环消息 线程间同步
第4章 顺序图和协作图 (交互图)
2009年9月1日
-
1
主要内容
顺序图 协作图(通信图) 实例分析-课程注册系统
-
2
UML 1.x中各种图的关系
Activity
State
Requirement
Use case
Class (Simple)
Requirement阶段 Analysis阶段 Design阶段
语义:必须先发生的消息的列表。
• sequence-expression: is a dot-separated list of sequence-terms followed by a colon (‘:’): sequence-term ‘.’ . . . ‘:’ , 每个sequenceterm的语法格式为:
第4章 顺序图和协作图

4.3.5 消息的语法格式
□ UML中规定的消息语法格式如下: [predecessor] [guard-condition] [sequenceexpression] [return-value := ] message-name([argument-list])
4.3.5 消息的语法格式
□ 上述定义中用方括号括起来的是可选部分,各语 法成分的含义如下。 □ predecessor:必须先发生的消息的列表。其中消息 列表中的各消息号用逗号分隔,格式如下: sequence-number ','... '/' guard-condition:警戒条件,是一个在方括号中的布 尔表达式,表示只有在guard-condition满足时才能 发送该消息。格式如下: '[' Boolean-expression ']' □ 这里的方括号放在单引号中,表示这个方括号是 一个字符,是消息的组成部分。
4.7 顺序图和协作图的比较
□ 和协作图相比,顺序图在表示算法、对象 的生命期、具有多线程特性的对象等方面相 对来说更容易一些,但在表示并发控制流方 面会困难一些。
4.7 顺序图和协作图的比较
□ 顺序图和协作图在语义上是等价的,两者 之间可以相互转换,但两者并不能完全相互 代替。顺序图可以表示某些协作图无法表示 的信息,同样,协作图也可以表示某些顺序 图无法表示的信息。例如,在顺序图中不能 表示对象与对象之间的链,对于多对象和主 动对象也不能直接显示出来,在协作图中则 可以表示;协作图不能表示生命线的分叉, 在顺序图中则可以表示。
: Driver oper() : Car
: Driver oper() : Car
第4章 顺序图和协作图

第4章顺序图和协作图4.1 交互图概述交互图(interaction diagram)是用来描述对象之间以及对象与参与者(actor)之间的动态协作关系以及协作过程中行为次序的图形文档。
它通常用来描述一个用例的行为,显示该用例图中所涉及的对象和这些对象之间的消息传递情况。
交互图包括顺序图(sequence diagram)和协作图(collaboration diagram)两种形式。
顺序图着重描述对象按照时间顺序的消息交互,协作图着重描述系统成分如何协同工作。
顺序图和协作图从不同的角度表达了系统中的交互和系统的行为,它们之间可以相互转化。
一个用例需要多个顺序图或协作图,除非特别简单的用例。
交互图可以帮助分析人员对照检查每个用例中所描述的用户需求,如这些需求是否已经落实到能够完成这些功能的类中去实现,提醒分析人员去补充遗漏的类或方法。
交互图和类图可以相互补充,类图对类的描述比较充分,但对象之间的交互情况的表达不够详细;而交互图不考虑系统中的所有类及对象,但可以表示系统中某几个对象之间的交互。
需要说明的是,交互图描述的是对象之间的消息发送关系,而不是类之间的关系。
在交互图中一般不会包括系统中所有类的对象,但同一个类可以有多个对象出现在交互图中。
4.2 顺序图顺序图也称时序图。
Rumbaugh对顺序图的定义是:顺序图是现实对象之间交互的图,这些对象是按时间顺序排列的[RJB99]。
特别地,顺序图中显示的是参与交互的对象,及对象之间消息交互的顺序。
如图4.1所示是一个简单的顺序图例子。
图4.1 顺序图顺序图是一个二维图形。
在顺序图中水平方向为对象维,沿水平方向排列的是参与交互的对象。
其中对象间的排列顺序并不重要,但一般把表是参与者的对象放在图的两侧,主要参与者放在最左边,次要参与者放在最右边(或表示人的参与者放在最左边,表示系统的参与者放在最右边)。
顺序图中的垂直方向为时间维,沿垂直向下方向按时间递增顺序列出各对象所发出和接收的消息。
统一建模语言UML课件-顺序图

Sequence Diagrams: The Generic Sequence Diagram
The guard conditions provide essentially the same information as the return messages.
number2 : Number)
two arguments, number1 and number2, which
are both of class Number.
doSomething( ) : ReturnClass
myVar = doSomething( ) : ReturnClass
The message's name is doSomething; it takes no arguments and returns an object of class ReturnClass.
顺序图
What Is a Sequence Diagram?
The sequence diagram consists of objects represented in the usual way (as named rectangles with the name underlined),
messages represented as solid-line arrows, and time represented as a vertical progression.
The customer inserts the money into the money slot in the front of the machine and makes a selection The money travels to the register, which updates itself. Bacause this is the best scensrio, an availability check reveals the soda is in stock, and the register has the dispense release the soda to the front of the machine.
第4章顺序图和协作图

对象的创建和撤销
如果对象位于时序图的顶部,说明在交互 开始之前该对象已经存在了。如果对象是 在交互的过程中创建的,那么它应当位于 图的中间部分。 对象在创建消息发生之后才能存在,对象 的生命线也是在创建消息之后才存在的。
对象的创建和撤销
创建对象的两种表示方法(zj:被创建的对象比原来就有的 对象低):
加粗边框
链
链是关联的实例,当一个类与另一个类之间有关 联时,这两个类的实例之间就有链,一个对象就 能向另一个对象发送消息。所以链是对象间的发 送消息的路径(zj:信息通道)。 要在协作图中增加消息,必须先建立对象之间的 链接。 消息显示在链的旁边,一个链可以有多个消息 类间可能有不止一种类型的关联,因此可以存在 多个链
4: create(Integer, Title)
2. 图书管理员处理借书的时序图 (不包括预留书籍的情况)
3. 系统管理员删除书目的时序图
4. 借阅者预留书籍的时序图
theBorrower : Borrower 1: Login Web Application theTitle : Title
2: find(String)
3: Return true
4: reserve( )
4.11实例—图书馆管理系统的协作图
1. 2. 3. 4. 5. 系统管理员添加书籍的协作图 图书管理员处理借书的协作图 图书管理员处理还书的协作图 系统管理员删除书籍的协作图 借阅者预留书籍的协作图
1. 系统管理员添加书籍的协作图
3:buyBook( bookID)
3:buyBook( bookID)
返回消息
表示控制流显式地从接收消息的对象返回。 图形表示
3:buyBook( bookID)
UML顺序图ppt课件

getCustomerInput(cash,selection) checkAvailability(selection)
returnCash(cash)
Sold out
displayPrompt("sold out")
23
零钱数量不对的场景
这种场景是顾客多给钱的场景。比如可 乐3块,投入了4块。饮料机可以把多的 钱找回给顾客。
displayPrompt("use correct change)
26
练习
“发传真”用例的最理想的场景。 其中对象包括:发送方传真、接受方传 真、传真件和一台用来对传真和电话呼 叫选择路由的中央“交换机”。
27
发传真类似打电话
打电话
主叫
被叫
主叫拿起电话,拨被叫电话号码,通过交换机向 双方发电话铃声,被叫接电话,铃声停止。
[2] Joseph Schmuller.UML基础、案例与应 用.人民邮电出版社,2004,8:P90-105
38
}
tv.close();
…..;
}
}
}
31
消息的代码表示 tv.close();
消息= 接受对象名+接受者能做的操 作
32
顺序图中的消息
调用消息 异步消息 返回消息 阻止消息:消息发送者发出消息给接收者,如
果接收者无法立即接收消息,则发送者放弃该 消息。 超时消息:消息发送者发出消息给接收者并按 指定时间等待,如果接收者无法在指定时间内 接收消息,则发送者放弃该消息。
28
使用UML表示
caller
exchange
receiver
1: lift receiver
统一建模语言第4章顺序图和协作

1. 顺序图
它描述对象按时间顺序的消息交换过程,它体现出系 统用例的行为。
2. 协作图
它描述对象间的组织协作关系,它也可体现出系统用 例的行为。
整理ppt
4
第四章 顺序图和协作图
• 顺序图
– 顺序图的定义
– 顺序图的符号
– 顺序图的消息
– 顺序图的其他技术
– 帧化顺序图
– 顺序图的建模方法
• 协作图
同步消息
整理ppt
15
顺序图的符号(续)
(2)异步消息 异步消息(Asynchronous message)用于控制流
在完成前不需要中断的情况。异步消息的发送者把控 制传递给消息的接收者,然后继续自己的活动,不需 等待接收者返回信息或控制。
下面示例演示了如何在登录文件的情况下使用异 步消息。
整理ppt
分支允许控制流走向不同的对象,如下图所示。
整理ppt
27
顺序图的其他技术
注意消息的开始位置是相同的,分支消息的结束“高度” 也是相等的。这说明在下一步中,其中之一将会执行,如下图 所示。
整理ppt
28
顺序图的其他技术
从属流还允许控制流根据条件改变,但是只允许控制流改变为相 同对象的另一条生命线分支,如下图所示。
整理ppt
2
顺序图的定义
在标识出系统的类图之后,仅给出了实现用例的组成 结构,这时还需要描述这些类的对象是如何交互来实现用例 功能的。即不但需要把用例图模型转化为类图模型,还要将 它转化为交互图模型。
交互图表示类(对象)如何交互来实现系统行为。交互 图具有顺序图和协作图两种形式。
整理ppt
3
顺序图的定义(续)
– 协作图的定义
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
name表示并发控制线程,例如1.2a和1.2b为同时发送 的并发消息
recurrence表示一个条件或迭代的执行有两种选择 * [ 循环子句 ] 循环子句(iteration-clause)用来指定一个循环(重复执行) 例如:一个包括循环的消息 1.1 *[x = 1..10] : doSomething()
4.2.3 生命线
生命线(Lifeline):
每个对象都有自己的生命线,用来表示在该用例中一个对 象在一段时间内的存在
垂直的虚线 如果对象生命期结束,则用注销符号表示 对象默认的位置在图顶部,表示对象在交互之前已经存在 如果是在交互过程中由另外的对象所创建,则位于图的中
间某处。
4.2.4 激活期
4.2.5 消息
自调用(Self Call)
某对象自己调用自己的操作 UML标记 (嵌套的矩形条)
Rose标记
4.2.5 消息
Rose新增消息
阻止(Balking) 接收者如果无法立即接收消息,则发送者放弃该消息
超时(Time-out) 如果接收者无法在指定的时间内接收消息,则发送者放 弃该消息
Q:这两种消息可以看做是同步or异步消息?
4.2.5 消息
格式
[前缀][守卫条件][顺序表达式][返回值:=]消息名([参数列表])
例:
2: display ()
简单消息
1.3.1: p:=find()
带返回值的嵌套消息
[x<0] 4: invert(x, color) 条件消息
3.1 *[x = 1..10] : update() 循环消息
4.2.5 消息
UML三种消息:
调用(Procedure Call) 异步(Asynchronous) 返回(Return)
Rose扩充:
阻止(Balking) 超时(Time-out)
4.2.5 消息
UML三种消息:
调用(Procedure Call) 发送者把消息发送后,等待直到接收者返回控制,可以表示同步; 实心箭头符号
结构化程序设计中,模块间传递信息的方式主 要是过程(或函数)调用。
对象A向对象B发送消息,可以简单地理解为 对象A调用对象B的一个操作(operation)。
4.2.5 消息
顺序图中,尽力保持消息的顺序是从左到右排列的。 一个顺序图的消息流开始于左上方,消息2的位置比消息1
低,这意味着消息2的顺序比消息1要迟。因为西方的阅读 习惯是从左到右。 顺序图中消息编号可显示,也可不显示。协作图中必须显 示。
激活期(activation)/控制焦点(focus of control)
对象在一段时间内获得了焦点,也称激活期 对象执行某个动作的时期 空心矩形条 激活期的长短意味着对象执行某个动作的时间有多长,可以通过约束
{10ms}来限制执行时间的长短。
4.2.5 消息
面向对象方法中,消息是对象间交互信息的主 要方式。
顺序图
面向时间描述对象交互的图
协作图
对象间消息的结构化视图
4.2 顺序图
按照时间顺序显式对象之间交互的图
4.2.1 顺序图的组成
活动者(actor)或者 对象(object) 生命线(lifeline) 激活(activation)/ 控制焦点(focus of control) 消息(message)
发消息给线程a和b
守卫条件(guard-condition)
语法: [ 条件短语 ] 条件短语通常用伪代码或真正的程序语言来表示,UML并不规定其语法 例如,[x<0] 4: invert(x, color)
序列表达式 (sequence-expression)
语法 [integer | name] [recurrence] :
4.2.5 消息
UML三种消息:
异步(Asynchronous) 消息发送后,发送者继续操作,不等待,常用于并发;
4.2.5 消息
UML三种消息:
返回(Return) 表示消息的返回。消息上方放置返回值 同步消息的返回可以画出(如果想明确表达返回 值),也可以不画出,直接隐含。 异步消息可以有返回,也可以没有。(可以响应异 步消息,也可以不响应该异步消息。) 如果顺序图上显示有编号,则返回消息的编号和当 初发送消息的编号完全一样。 虚线箭头表示,和依赖关系不要混淆
4.2.2 活动者或对象
活动者和对象按照从左到右的顺序排列 一般最多两个活动者,他们分列两端。启动
这个用例的活动者往往排在最左边;接收消 息的活动者则排在最右端; 对象从左到右按照重要性排列或按照消息先 后顺序排列。来自4.2.2 活动者或对象
对象的命名方式有三种:
包括对象名和类名 类名(匿名对象) 对象名(不关心类)
《统一建模语言(UML)》
第4章 顺序图与协作图
4.1 交互图概述
Interaction diagram,是描述对象之间的关系和对象之间 的信息传递的图;
通常用来描述一个用例的行为,实现一个用例,完成对系 统的动态行为建模;
包含两种:
顺序图(或时序图,sequence diagram) 协作图(collaboration diagram)
a3,b4/c2: copy(a,b)
线程同步
1.1a, 1.1b/1.2: continue() 带前缀消息
在发送线程c的第2个消 息之前,必须先发送线 程a的第3个消息和线程b 的第在4发个送消消息息1.2之前必须
已经同时发送并发消息给 线程a和b
前缀(predecessor)
语法:消息序列号,消息序列号, ... / 前缀是一个用来同步线程或路径(path)的表达式 意思是在发送当前消息之前指定序列号的消息被处理(必须连续执行) 消息序列号之间用逗号隔开,用斜杠结束 例如 1.1a, 1.1b/1.2: continue() ,在发送消息1.2之前必须已经同时发送并