第五章顺序图和协作图
软件工程---交互建模之交互图,顺序图与协作图
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):
每个对象都有自己的生命线,用来表示在该用例中一个对象在一段时 间内的存在
垂直的虚线 如果对象生命期结束, 则用注销符号表示 对象默认的位置在图 顶部,表示对象在交互 之前已经存在 如果是在交互过程中 由另外的对象所创建, 则位于图的中间某处。
顺序图
面向时间描述对象交互的图
协作图
顺序图和协作图
协作图
消息(Message)
协作图中的消息类型与顺序图中的相同,只不 过为了说明交互过程中消息的时间顺序,需要 给消息添加顺序号。 顺序号是消息的一个数字前缀,是一个整数, 由1开始递增,每个消息都必须由唯一的顺序 号。可以通过点表示法代表控制的嵌套关系。 嵌套可以具有任意深度。与顺序图相比,协作 图可以显示更为复杂的分支。
顺序图
概念
顺序图
顺序图包含了4个元素:
对象(Object) 生命线(Lifeline) 消息(Message) 激活(Activation)
顺序图
对象(Object)
顺序图中对象的符号和对象图中对象所用的符 号一样。 将对象置于顺序图的顶部意味着在交互开始的 时候对象就已经存在了,如果对象的位置不在 顶部,那么表示对象是在交互的过程中被创建 的。
系统管理员添加书籍的顺序图
: Administrator
: Maintenance Window 1: add item( ) 2: find(String)
: Title
: Item
Check if corresponding title exist
3: return true
4: create(Integer, Title)
2: find(String)
1: identify borrower( ) 3: reserve title( ) : Borrower : Reservation Window
teacher
Req stu info Get stu data Load stu Return stu info Load grades
知识点学习(顺序图和协作图 )
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
UML中的顺序图和协作图的区别与实际应用案例解析
UML中的顺序图和协作图的区别与实际应用案例解析UML(Unified Modeling Language)是一种用于软件系统建模的标准语言,被广泛应用于软件开发过程中。
在UML中,顺序图和协作图是两种常用的建模工具,用于描述系统中对象之间的交互关系。
本文将探讨顺序图和协作图的区别,并通过实际应用案例解析它们的使用。
顺序图是一种时序图,用于展示对象之间的交互顺序。
它通过显示对象之间的消息传递和时间顺序来描述系统的动态行为。
顺序图以垂直方向表示时间轴,从上到下按照时间顺序排列对象和消息。
每个对象用一个矩形表示,对象之间的消息通过箭头表示。
顺序图强调对象之间的交互和消息的顺序,能够清晰地展示系统中的动态行为。
协作图是一种静态图,用于描述对象之间的合作关系。
它通过展示对象之间的连接和消息传递来描述系统的结构和交互。
协作图以水平方向表示对象之间的连接关系,每个对象用一个矩形表示,对象之间的连接通过实线和虚线表示。
协作图强调对象之间的连接和合作关系,能够清晰地展示系统中的结构和交互。
为了更好地理解顺序图和协作图的区别,我们可以通过一个实际应用案例来解析它们的使用。
假设我们正在开发一个在线购物系统,其中包含用户、购物车和商品三个对象。
首先,我们可以使用顺序图来描述用户购买商品的过程。
顺序图可以展示用户选择商品、将商品添加到购物车、结算支付等交互过程。
通过顺序图,我们可以清晰地了解用户与系统之间的交互顺序和消息传递。
接下来,我们可以使用协作图来描述购物车和商品之间的合作关系。
协作图可以展示购物车和商品之间的连接关系,以及它们之间的消息传递。
通过协作图,我们可以清晰地了解购物车和商品之间的合作关系,从而更好地设计系统的结构和交互。
通过以上案例,我们可以看到顺序图和协作图在描述系统中的对象交互和合作方面有着不同的应用场景。
顺序图适用于描述对象之间的交互顺序和消息传递,而协作图适用于描述对象之间的连接关系和合作关系。
5.交互图(序列+协作)
多重对象
多个对象的集合,往往是同类对象 用于表示:同一消息同时发给多个对象 在顺序图中仍然显示为单一对象的图标
练习
画出对应的顺序图
答案
练习:协作图
练习:协作图
顺序图与协作图的关系
顺序图与协作图都表示对象之间的交互作用,只 是侧重点有所不同:
Frequency(频率)
Periodic(定期):按照固定时 间间隔发送 Aperiodic(不定期):只发送一 次,或者在不规则的时间发送
不同类型的消息
序列图的绘制顺序
练习1:绘制序列图
仓库管理员处理产品入库工作流程,基本工作流 程如下:
1.仓库管理员将通过库存管理子系统将生产的产品处理 入库。 2.仓库管理员通过库存管理子系统中的产品入库界面获 取产品信息。 3.产品入库界面根据产品的编号将产品类实例化并请求 该类产品信息。 4.产品类实例化对象根据产品的编号加载产品信息,并 提供给产品入库界面。 5.仓库管理员通过产品入库界面增加产品数目。 6.产品入库界面通过产品类实例化对象修改产品信息。 7.产品类实例化对象向产品入库界面返回修改信息。 8.产品入库界面向仓库管理员显示添加成功信息。
顺序图描述了对象交互的时间顺序,但没有明确地表 达对象之间的关系(多用于用例描述) 协作图描述了对象在交互中承担的角色,但对象在交 互中的时间顺序必须从消息的顺序号获得(多用于详 细设计时对象关系的描述) 顺序图可以表示出对象的激活状态和非激活状态,也 可以表示出对象的创建和销毁的相对时间;协作图则 没有这些功能。
作用:通过一系列的消息来描述系统的动态行为 表示形式:
每个消息包括一个顺序号以及消息的名称 使用带有标签的箭头来表示,箭头指向接收者 附在连接发送者和接收者的链上 消息的名称也可以是一个方法,包含一个名字和参数 表、可选的返回值表。
第5章动态交互模型-顺序图
铃声停止 电话连通
电话断开 打电话者挂机
铃声 受话方回答 铃声停止 电话连通 受话方挂机 电话断开
顺序图的相关概念
• UML的交互图是用户系统动态方面的建模,交互图可分为顺序图和协 作图。
• 顺序图(Sequence Diagram)描述了对象之间传递消息的时间顺序, 它用来表示用例中的行为顺序,是强调消息时间顺序的交互图。顺序 图描述类系统中类和类之间的交互,它将这些交互建模成消息交换, 也就是说,顺序图描述了类以及类间相互交换以完成期望行为的消息。 • 顺序图包括了4个元素,分别是对象(Object)、生命线(Lifeline)、 激活(Activation)和消息(Message)。
– 1.对象(Object) – 2.链(Link)
– 3.消息(Message)
链
• 链是关联的实例,当一个类与另一个类之间有关联时,这两个类的实
例之间就有链,一个对象就能向另一个对象发送消息。所以链是对象
间的发送消息的路径。 • 要在通信图中增加消息,必须先建立对象之间的链接。
• 链接一般建立在两个对象或者两个类实例之间,也可以建立反身链接。
2 : 下 单 ()
3 : 做 菜 ()
4:菜 5:菜
6 : 结 帐 () 7 : 通 知 结 帐 () 8 : 账 单 结 算 () 9 : 账单 10 : 账 单 11 : 信 用 卡 12 : 信 用 卡 13 : 刷 卡 () 14 : 刷 卡 单
15 : 刷 卡 单
16 : 签 字 () 17 : 签 字 的 刷 卡 单
顾客服务员厨师继续用顺序图画出顾客指示买单和刷卡结帐顾客服务员厨师前台收款账单10账单11信用卡12信用卡13刷卡14刷卡单15刷卡单16签字17签字的刷卡单18签字的刷卡单19核对签名确认20存根21存根活动图与顺序图1假设自动售票机只接收硬币我们需要先找到地铁的工作人员询问到某站需要多少钱然后拿出纸币兑换硬2在自动售票机上选择要去的目的地和票数投币售票机给出地铁票顺序图乘客工作人员售票机强调角色之间的交互信息传递明确
5 UML 顺序图协同图
2.从弹出菜单选择Open Specification。
3.在Documentation字段中输人对象文档。
或l.选择Collaboration框图或Sequence框图中的对象。
2.在文档窗口输人对象文档。
将对象映射类每个Collaboration框图或Sequence框图中的对象都可以映射类。
例如,1020次航班可以映射Flight类。
在对象规范窗口中,可以用Class字段设置对象的类。
默认情况下,类设置为Unspecified。
选择对象的类时,可以用模型中现有的类,也可以对对象创建新类。
在下列过程中,我们介绍两种方法。
准备代码生成时,所有对象都应映射类。
要将对象映射现有类:1.右单击Interaction框图中的对象。
2.从弹出菜单选择Open Specification。
3.在Class下拉列表框中,输人类名或从下拉清单选择类名。
4.将对象映射类后,类名出现在框图的对象名后面,用冒号分开。
可以右单击对象并选择Show Class拨动显示类名。
(默认为显示)或1.选择例浏览器Logical视图中的类。
2.将类从浏览器拖动到框图中的对象上。
3.将对象映射类后,类名出现在框图的对象名后面,用冒号分开。
要删除对象的类映射:1.右单击Collaboration框图或sequence框图中的对象。
2.从弹出菜单选择Open Specification。
3.在Class下拉列表框中选择Unspecified。
要对对象创建新类:1.右单击Collaboration框图或Sequence框图中的对象。
2.从弹出菜单选择Open Specification。
3.在Class下拉列表框中选择<New>,Rose进入新类规范窗口。
要保证所有对象映射类:1.选择Report>Show Unresolved Objects。
2.Rose列出模型中还没有映射类的所有对象。
要在框图中只显示对象名:1.右单击Collaboration框图或Sequence框图中的对象。
5.实验5---顺序图和协作图
实验5顺序图和协作图一.顺序图1.实验内容图1-1顺序图2.实验步骤2.1定义类在LogiC VieW视图下创建4个类,它们是:客户、ATM端口、钱币记录仪、分类器,如图1-2所示。
图1-2创建类2.2创建顺序图右击LogiC View,选择New→Sequence Diagram,系统自动增加了一个项目:NewDiagram0我们在此处输入:顺序图,如图1-3所示。
图1-3创建顺序图2.3往顺序图中添加对象在i刘览器窗口中,双击“顺序图”文本,系统就在模型图窗口打开“顺序图”,如图1-4所示。
图1-4打开顺序图分别将浏览器窗口中的4个类(客户、ATM端口、钱币记录仪、分类器)拖入顺序图。
当把类拖入顺序图中时,系统自动创建匿名对象。
如图1・5所示。
图1-5对象拖入顺序图给匿名对象命名步骤如下:右击匿名对象客户”图标,选择OPen SPeCifICatiOn,打开对象的规范窗口,输入姓名:邓小贫。
如图1-6所示。
图1-6给匿名对象取名点击“OK”按钮,完成对象命名。
2.4 给对象添加消息添加消息的步骤:1)在工具箱中单击ObjeCl Message 按钮,2)在“邓小贫”对象的生命线上按下鼠标左键(不要松手),拖动鼠标到对象”:ATM端口”后,松开鼠标,就建立了一条消息。
如图1-7所示。
×ι÷lMHl ►!►Mog/For H«lp , pr«ss Fl∣D∙fftult Ltt<u∙g∙: Analysis图1-7添加消息3)右击消息,打开快捷菜单,选择OPenSPeCifiCatiOn ,打开消息的规范窗口,并输 入消息名:请求接收钱币,如图,1-8所示。
图1-7消息命名@ Rational Rose - 20182236+季自成+⅛⅛4.mdl‰侬File Edit View Format Browse Report ToOk Add-Ins Window Help口空。
实验五--1 顺序图和协作图
实验五—1 顺序图、协作图一、实验目的1.理解顺序图的基本概念。
2.理解协作图的基本概念。
3.掌握在Rational Rose 中绘制顺序图、协作图的操作方法。
二、实验器材1.计算机一台。
2.Rational Rose 工具软件。
三、实验内容通过对课堂学习和前面的实验,使我们完成了图书馆的管理系统的需求分析,并从业务对象中抽象出了类。
现在需要对前面所给出的用例进行实现,而用例的实现主要由顺序图来描述系统的动态特性,协作图与顺序图是同构的,Rose 可自动转换。
现指派你运用课堂所学的相关知识,完成如下任务:1.对图书管理功能中的借书用例、还书用例进行动态建模。
四、实验步骤4.1 分析阶段的动态建模1.分析:在分析阶段,绘制的顺序图中,所有消息可以使用便于理解的自然语言来描述,并且可以仅在实体类中识别对象职责,而不涉及边界类和控制类。
根据课堂讲授,参见教材P213 可完成借书用例和还书用例分析阶段的动态建模。
2.绘图步骤:(1)鼠标右击导航窗口“Logicl View”节点,选择“New——Package”,建立1 个子包:“Sequence Di ag ra m”(用于存放顺序图、协作图),完成后如图 3.1 所示。
(2)如图 3.2 所示,鼠标右击“Sequence Diagram”子包,选择快捷菜单项“New——Sequence Di ag ram”,创建一张新的顺序图,取名为“借出图书”(注意:为了好对应,顺序图名称最好与相应的用例名称相同)。
鼠标双击新建的顺序图,在右边绘图窗口中将其打开,如图 3.3 所示。
(3)设置支持嵌套消息的环境:选择主菜单项“Tools——O ptions”,打开Rose 环境设置的对话框,点击“D i a g r a m”选项卡,在如图3.4所示界面中,将“D i s p l a y”下的“Hierarchical Message”选中,点击“确定”即可。
图 3.1图 3.2图3.3图3.4(4)绘制类:从导航窗口中,将“Use Case View”节点下的参与者“图书管理员”拖到绘图窗口;将“Class Diagram”包下“BO”实体包中的相关类“Reader”、“ResourceItem”、“ResourceTitle”和“Loan”拖到绘图窗口中,如图3.5 所示。
交互作用图(顺序、协作)
• • • •
类Loan Book:OID Borrower:OID Date:Date
• newLoan(book:OID,b orrower:OID,date:Dat e) • 创建Loan对象 • getBook():Book • getBorrower():Borrow er
还书
: Librarian
交互作用图
(顺序图和协作图)
1 交互图概述
交互图(interaction diagram)是用来描述对象之间以及对 象与参与者之间的动态协作关系以及协作过程中行为 次序的图形文档. 交互图通常用于描述一个用例的行为, 显示该用例中所 涉及的对象及对象之间消息传递情况. 交互图包括: (1)顺序图(sequence diagram), 描述对象按照时间顺序的 消息交换; (2)协作图(collaboration diagram), 描述系统成分如何协同 工作.
序列性的消息能很好地说明单一的线性的序列,但是我们 通常需要展示条件和循环。有时候我们想要展示多个序列的 并行执行。在顺序图中用结构化控制操作符能展示这种高层 控制。
为了表示顺序图的边界,可以把顺序图用一个封闭的矩形 包围起来,并在矩形的左上角放一个小五边形。在这个小五 边形内先写上sd,再后面写出图的名字。对每个子顺序图加上 一个矩形区域作为外框,再在其左上角放一个小五边形,在 这个小五边形内写上用来表明控制操作符的类型的文字。
(3). 简单消 息
它只表示控制如何从一个对象传递给另一个对象,而没有描述通信的任何细节。 这种类型的消息主要用于通信细节未知或者无需考虑通信细节的场合。也就是说,主 要用于不知道消息是同步还是异步的场合,但通常情况下表示异步消息此外在高层分 析中,有时候没有必要指定一个消息是同步的还是异步的。如下面的示例所示。
UML顺序图和协作图
练习: 比较顺序图与协作图
在这个练习中,将通过对ATM机取款用例的行为 描述,比较顺序图与协作图。例如,客户Joe从ATM机 提取20美金的场景。
协作图的建模方法
协作图的建模有3个基本的步骤:
1)确定属于协作图的元素。 2)建模这些元素之间的结构关系。 3)建模实例层的协作图。
建模分数记录系统的协作图。具体用例是Teacher使用 Website登录并且查看学生的分数。
协作图的符号(续)
3.消息 消息是协作图中对象与对象之间通信的方式。消息在协 作图中显示为一个伴随链接或者关联角色的文本字符串,并 带有一个箭头来指示消息沿着关系传递的方向,如下图所示。
Message :Object1 :Object2
协作图的符号(续)
消息还可传递变量或者参数 下例说明了对象Teacher 如何把消息AssignGrade传递 给对象Student,它使用了参数 Class、Assignment和 Grade,如下图所示。
每个对象的生命线都是一条从对象向下的虚线。表 示对象的存在时间。
顺序图的符号(续)
激活 在生命线上的窄矩形条被称为激活 (activation).激活表示该对象正在执行某 个操作。激活矩形的长度表示出激活的持续 时间.
顺序图的符号(续)
• 消息 消息用来说明顺序图中不同活动对象之间的通信。它可在 一个对象需要取消不同对象的进程时或者需要向另一个对象提 供服务时,使用消息。 消息从活动对象生命线到接收对象生命线的箭头表示。箭 头上面标记要发送的消息,如下图所示。
第1个工作流
顺序图的建模方法(续)
顺序图的建模方法(续)
接下来以独立的顺序图建模从属工作流。此处只建模否定的 条件,如下图所示。
UML 序列图(顺序图)和协作图
UML图学习序列图(顺序图)和协作图分类:UML 2012-11-30 16:42 2528人阅读评论(19) 收藏举报在面向对象动态建模,用于建立行为的实体间行为交互的四种图:状态图(Stage Diagram),序列图(Sequence Diagram),协作图(Communication Diagram),活动图(Activity Diagram) ,其中,“顺序图”与“协作图”表述的是相似的消息。
序列图(Sequence Diagram)强调的消息时间顺序的交互图,描述类系统中类与类之间的交互,它将这些交互建模成消息互换,换句话说,顺序图描述了类与类之间之间相互交换以完成期望行为的消息。
顺序图的特点是清晰,一个设计很好地顺序图从左到右、从上到下可以很好地表示出系统数据的流向,为接下来的系统设计做好铺垫。
协作图(Collaboration Diagram /Communication Diagram,也叫合作图)是一种交互图(interaction diagram),强调的是发送和接收消息的对象之间的组织结构。
一个协作图显示了一系列的对象和在这些对象之间的联系以及对象间发送和接收的消息。
对象通常是命名或匿名的类的实例,也可以代表其他事物的实例,例如协作、组件和节点。
使用协作图来说明系统的动态情况。
1、序列图(顺序图)的知识点概要:点此看大图2、协作图知识点概要:点此看大图3:顺序图(1)先从图书馆借/还书角度了解顺序图从顺序图的流程中,清晰到了解程序的过程,十分清晰明了(2)从地铁购票的活动中来看顺序图根据机房收费系统来画的部分顺序图(3):一般用户角度查询信息。
(4):操作员注册新的学生账号(5)管理员的基本系统数据的的设定4、协作图(1)结合刚才的图书馆借/还书的过程。
根据序号可以发生的先后顺序(2)从地铁购票的角度来学习协作图(3)结合机房收费系统角度画的协作图一般用户查询信息:(4)操作员注册卡(5)管理员修改基本数据5、协作图与顺序图的区别和联系协作图和顺序图都表示出了对象间的交互作用,但是它们侧重点不同顺序图清楚地表示了交互作用中的时间顺序(强调时间),但没有明确表示对象间的关系。
第5章 面向对象分析与设计(3)——顺序图协作图
12
3.协作图概述
协作图的格式决定了它们更适合在分析活动中使用。 它们特别适合用来描述少量对象之间的简单交互。随着对 象和消息数量的增多,理解协作图将越来越困难。此外, 协作图很难显示补充的说明性信息,例如时间、判定点或 其他非结构化的信息,而在序列图中这些信息可以方便地 添加到注释中。 协作图具有以下用途: 通过描绘对象之间消息的移动情况来反映具体的方案。 显示对象及其交互关系的空间组织结构,而非交互的顺 序。
8
2.顺序图的组成
2.2 消息
消息定义的是对象之间某种形式的通信,它可以激 发某个操作、唤起信号或导致目标对象的创建或撤 销。 消息是两个对象之间的单路通信,从发送方到接收 方的控制信息流。 消息可以用于在对象间传递参数。 消息可以是信号,也可以是调用。 在 UML 中,消息使用箭头来表示,箭头的类型表示 了消息的类型。
17
3.协作图的组成
3.2 迭代
2)一个对象多次向另一个对象发送消息。
18
顺序图向协作图的转换
19
顺序图向协作图的转换
20
练习
定投约定的日期一到,系统首先检查客户设定的扣款 账户余额,确认余额是否足够支付交易款项,如果足够, 则扣交易款项,更新客户基金账户中基金的份额,交易成 功,并且把交易扣款失败次数归零。系统在扣款的时候, 如果累计失败三次,则停止扣款,并且更改交易情况为 “停止扣款”。
21
5.本章小结
1、顺序图概述 2、顺序图的组成 3、协作图概述 4、协作图的组成
22
Q/ A
?
23
帮助分析员对照检查每个用例中描述的用户需 求,是否已经落实到一些对象中去实现。提醒 分析员去补充遗漏的对象类或操作。 帮助分析员发现哪些对象是主动对象。 通过对一个特定的对象群体的动态方面建模, 深刻地理解对象之间的交互。
顺序图和协作图作用和建立方法
: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图的时候,它们非常有 用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
38
建立sequence图的步骤
1. 确定交互过程的上下文(context); 2. 识别参与交互过程的对象; 3. 为每个对象设置生命线,即确定哪些对象存在于整个交 互过程中,哪些对象在交互过程中被创建和撤销; 4. 从引发这个交互过程的初始消息开始,在生命线之间从 顶到下依次画出随后的各个消息; 5. 如果需要表示消息的嵌套,或/和表示消息发生时的时间 点,则采用FOC; 6. 如果需要说明时间约束,则在消息旁边加上约束说明; 7. 如果需要,可以为每个消息附上前置和后置条件。
简单消息 消息带返回值
[x < 0] 4: invert (x, color) 条件消息 3.1*: update ( ) 循环消息
A3,B4/ C2: copy(a,b)
线程间同步
32
在交互图中使用的一些概念
object
循环
条件
返回消息 创建对象
33
顺序图的结构化控制
• 序列性的消息能很好的说明单一的线性 的序列,但是通常需要展示条件和循环。 有时候要展示多个序列的并发执行。在 顺序图中用结构化控制操作符能展示这 种高层控制。 • 控制操作符表示为顺序图上的一个矩形 区域,其左上角有一个写在小五边形内 的文字标签,用来表明控制操作符的类 型。
4
交互图的用途
• 帮助分析员对照检查每个use case 中描述的 用户需求,是否已经落实到一些能够完成这 些功能的类中去实现。提醒分析员去补充遗 漏的类或服务。 • 用例模型驱动交互图的开发,交互图驱动类 模型的开发,从而构成了一条从需求到实现 的清晰路径。 • 和类图相互补充 – 类图对对象之间的消息(交互情况)表达不 够详细; – 交互图表示少数几个对象之间的交互。
16
• 对象与生命线结合在一起称为对象的生 命线,对象的生命线包含矩形的对象图 标以及图标下面的生命线
17
控制焦点(Focus of control)
• 控制焦点:顺序图中表示时间段的符号,它 是一个瘦高的矩形,表示对象执行一个动作 所经历的时间段,既可以直接执行,也可以 是通过下级过程执行。矩形的顶部表示动作 的开始,底部表示动作的结束(由一个返回 消息来标记)。图例:
• [predecessor] • 必须先发生的消息的列表
– 格式:sequence-number ‘,’…’/’
• [guard-condition]
– 警戒条件:条件满足时才能发送该消息 – 格式:‘[‘boolean-expression’]’
28
4.3 顺序图中的消息
• [sequence-expression]
(1) 请画出汽车自动上锁系统的类图。 (2) 请画汽车自动上锁系统的顺序图。
汽车自动上锁系统的类图
请画出汽车自动上锁系统的顺序图
例 饮料销售机系统
开始对饮料销售机建模:
• 前端的主要功能:
(1)接受顾客的选购和现钞. (2)显示信息. (3)从记录仪接收找回的零钱并交给顾客. (4)返还现钞. (5)从分配器接收饮料.
20
消息(message)
• 顺序图的主要内容是消息。把消息表示为从一条生 命线到另一条生命线的箭线,箭头指向接受者。 • 消息定义的是对象之间某种形式的通信,它可以激 发某个操作、唤起信号或导致目标对象的创建或撤 销。 • 消息是两个对象之间的单路通信,从发送方到接收 方的控制信息流。 • 消息可以用于在对象间传递参数。 • 在UML中,消息使用箭头来表示,箭头的类型表示 了消息的类型。
focus of control
18
控制焦点的嵌套
• 控制焦点可以通过将一个控制焦点放在它的 父控制焦点的右边来表示控制焦点的嵌套 (其嵌套深度可以任意)。嵌套的控制焦点 可以由循环、自身操作调用或从另一个对象 的回调所引起,它可以更精确地说明消息的 开始和结束位置。 • 图例:
19
说明: • activation(激活期)表示对象执行一个动 作的期间,也即对象激活的时间段。 • 控制焦点和激活期是同一个概念。
10
Object
• sequence图和collaboration图描述的是对象 之间的消息发送关系,而不是类之间的关系。 • 最顶上一排矩形框。在交互图中,参与交互 的对象既可以是具体的事物,又可以是原型 化的事物。 • 作为具体的事物,一个对象代表现实世界中 的某个东西。例如,aOrder作为类Order的一 个实例,可以代表一个特定的订单;而如果 作为一个原型化的事件,则aOrder可以代表 类Order的任何一实例。
39
分析级-用来概要描述交互场景
40
设计级
41
• 类PaymentController必须实现哪些方法
• 如图类Account必须实现哪些方法?
• 例1. 汽车自动上锁系统。 • 车主使用遥控钥匙,按下“锁车”按钮 ,则汽车自动上锁,闪动一下车灯并发 出一声蜂鸣,告诉车主车门已经上锁了 。
3
交互图说明:
• 交互图是用来描述对象之间的动态协作关系以 及协作过程中的行为次序,它常常用来描述一 个用例的行为,显示该用例中所涉及的对象和 这些对象之间的消息传递情况。 • 一般一个use case需要一个或多个顺序图或协 作图,除非特别简单的use case. • 顺序图和协作图从不同的角度表达了系统中的 交互和系统的行为,它们之间可以相互转化。 • 顺序图着重描述对象按照时间顺序的消息交换, 协作图着重描述系统成分如何协同工作。
26
• 超时(time-out)消息。消息发送者发出消 息给接收者并等待指定时间,如果接收 者无法在指定时间内接收消息,则发送 者放弃这个消息。 例:超时消息的表示符号。
27
顺序图中的消息
• 消息的语法格式
– [predecessor] [guard-condition] [sequenceexpression] [return-value :=] message-name ([argument-list])
第5章 交互图
东北大学信息科学与工程学院
E-Mail: yanglei@
杨雷
1/336
开发流程-动态建模
2
交互图(interaction diagram)
• 在对软件密集型(software-intensive)系统 建模时,如何对它的动态方面建模?怎样 才能可视化一个运行的系统? • 交互图(interaction diagram)是一种详细 表示对象之间以及对象与系统外部的参与 者(actor)之间动态联系的图形文档。 • 交互图有两种形式,即顺序图(sequence diagram) 和协作图(collaboration diagram) 。
13
创建对象的两种表示方法:
14
对象撤销
• 如果要撤销一个对象,只要在其生命线 终止点放置一个“X”符号即可,该点通 常是对删除或取消消息的回应。
15
lifeline (生命线)
• 生命线表示对象存在的时间,在顺序图 中生命线表示为从对象图标向下延伸的 一条虚线。 • 生命线是一条垂直的虚线,表示顺序图 中的对象在一段时间内的存在。每个对 象的底部中心的位置都带有生命线。 • 生命线是一个时间线,从顺序图的顶部 一直延伸到底部,所用的时间取决于交 互持续的时间。
8
顺序图例子
Form Object Open form Enter information Save Information Create Populate with information Save Data Object
: Actor
9
Sequence图中的组成元素
• 顺序图中的一些主要元素: – Object (对象,包括actor实例) – Lifeline (生命线) – Focus of control(控制焦点)和 activation(激活期) – Message(消息)
21
消息的类型
• 消息的类型:在UML 1.4以上版本的规范说明 中消息分调用消息,异步消息,返回消息三 种。
– 其它消息类型:如阻止(balking)消息,超时(timeout)消息等为UML核心的扩充。
22
• 调用消息(Procedure call)。 调用消息的发送者把控制传 例:调用消息的表示符号。 递给消息的接收者,然后停 止活动,等待消息接收者放 弃或返回控制。 • 调用消息也可以用来表示同 步的意义。
29
– 其中integer表示消息序号,name表示并发的控制线程, 例: 如果两个消息为3.1a,3.1b,则表示这两个消息在激 活期3.1内是并发的。 – recurrence表示消息是条件发送或循环发送,格式如下:
‘*’ [‘[’ iteration-clause ‘]’] 循环发送 ‘[’ condition-clause ‘]’ 条件发送 例:*[i := 1..n] [x > y] 说明: 1. 如果循环发送的消息是并发的,可用符号*||表示。 2. UML中并没有规定循环子句,条件子句的格式
– 消息顺序表达式。用句点“.”分隔,以冒号结束 “:”。 – 格式:sequence-term ‘,’…’:’
• 每个sequence-term的语法格式为: [ integer | name ] [ recurrence ]
– 消息的顺序号用整数表示。通常以消息1作为一个 消息序列中的第一个消息,消息1.1是在处理消息 1时的第一个需要处理的嵌套消息…, 通过编号描 述了消息的执行顺序号和嵌套层次。 – 例: 1, 1.1, 1.2, 1.2.1, 1.2.2
30
• [return-value]:将赋值为消息的返回值的
名字列表,如果消息没有返回值,则returnvalue部分被省略。
• [message-name]:消息名 • [argument-list]:消息的参数列表