UML交互图
程序员必备画图技能之——时序图
程序员必备画图技能之——时序图什么是时序图时序图(Sequence Diagram),⼜名序列图、循序图,是⼀种UML交互图。
它通过描述对象之间发送消息的时间顺序显⽰多个对象之间的动态协作。
使⽤场景时序图的使⽤场景⾮常⼴泛,⼏乎各⾏各业都可以使⽤。
当然,作为⼀个软件⼯作者,我这边主要列举和软件开发有关的场景。
1. 梳理业务流程⼀般的软件开发都是为了⽀撑某个具体的业务。
有时候业务的流程会⽐较复杂,涉及到多种⾓⾊,这时就可以使⽤时序图来梳理这个业务逻辑。
这样会使业务看起来⾮常清晰,代码写起来也是⽔到渠成的事情了。
2. 梳理开源软件作为⼀个合格的程序员,阅读源代码的能⼒⼀定要过关。
⼀般成熟框架的源代码调⽤深度都⽐较深,类之间的调⽤关系也⽐较复杂。
我喜欢⽤时序图来梳理框架中这些对象之间的关系。
⽐如再看Tomcat 启动流程的过程中,我就时序图梳理了各个组件之间的关系,看起来层次⾮常清楚,也便于记忆。
时序图的⾓⾊我们在画时序图时会涉及下⾯7种元素:⾓⾊(Actor)对象(Object)⽣命线(LifeLine)控制焦点(Activation)消息(Message)⾃关联消息组合⽚段。
其中前6种是⽐较常⽤和重要的元素,最后的组合⽚段元素不是很常⽤,但是⽐较复杂。
我们先介绍前6种元素,再单独介绍组合⽚段元素。
1. ⾓⾊(Actor)系统⾓⾊,可以是⼈或者其他系统和⼦系统。
以⼀个⼩⼈图标表⽰。
2. 对象(Object)对象位于时序图的顶部,以⼀个矩形表⽰。
对象的命名⽅式⼀般有三种:对象名和类名。
例如:华为⼿机:⼿机、loginServiceObject:LoginService;只显⽰类名,不显⽰对象,即为⼀个匿名类。
例如::⼿机、:LoginSservice。
只显⽰对象名,不显⽰类名。
例如:华为⼿机:、loginServiceObject:。
3. ⽣命线(LifeLine)时序图中每个对象和底部中⼼都有⼀条垂直的虚线,这就是对象的⽣命线(对象的时间线)。
UML科普文,一篇文章掌握14种UML图
UML科普⽂,⼀篇⽂章掌握14种UML图前⾔上⼀篇⽂章写了⼀篇建造者模式,其中有⼏个UML类图,有的读者反馈看不懂了,我们今天就来解决⼀哈。
什么是UML?UML是Unified Model Language的缩写,中⽂是统⼀建模语⾔,是由⼀整套图表组成的标准化建模语⾔。
为什么要⽤UML?通过使⽤UML使得在软件开发之前,对整个软件设计有更好的可读性,可理解性,从⽽降低开发风险。
同时,也能⽅便各个开发⼈员之间的交流。
UML提供了极富表达能⼒的建模语⾔,可以让软件开发过程中的不同⼈员分别得到⾃⼰感兴趣的信息。
Page-Jones 在《Fundamental Object-Oriented Design in UML》⼀书中总结了UML的主要⽬的,如下:1. 为⽤户提供现成的、有表现⼒的可视化建模语⾔,以便他们开发和交换有意义的模型。
2. 为核⼼概念提供可扩展性 (Extensibility) 和特殊化 (Specialization) 机制。
3. 独⽴于特定的编程语⾔和开发过程。
4. 为了解建模语⾔提供⼀个正式的基础。
5. ⿎励⾯向对象⼯具市场的发展。
6. ⽀持更⾼层次的开发概念,如协作,框架,模式和组件。
7. 整合最佳的⼯作⽅法 (Best Practices)。
UML图有哪些?UML图分为结构图和⾏为图。
结构图分为类图、轮廓图、组件图、组合结构图、对象图、部署图、包图。
⾏为图⼜分活动图、⽤例图、状态机图和交互图。
交互图⼜分为序列图、时序图、通讯图、交互概览图。
UML图概览什么是类图?【概念】类图是⼀切⾯向对象⽅法的核⼼建模⼯具。
类图描述了系统中对象的类型以及它们之间存在的各种静态关系。
【⽬的】⽤来表⽰类、接⼝以及它们之间的静态结构和关系。
在类图中,常见的有以下⼏种关系。
泛化(Generalization)【泛化关系】是⼀种继承关系,表⽰⼦类继承⽗类的所有特征和⾏为。
【箭头指向】带三⾓箭头的实线,箭头指向⽗类。
面向对象与UML 第五章 序列图和通信图
5.3 建立序列图
3. 添加消息
按发生的顺序在对象之间添加交互消息。
– 客户通过发送创建消息EntryDialogue打开登录对话 框
– 客户通过发送inputUserInfo消息向登录对话框中输 入用户信息
– 登录对话框通过发送sendUserInfo消息将用户信息发 往服务器
5.3 建立序列图
server:Server
database:DataBase
e n tryDi a l o g :En tryDi a l o g En tryDi a l o g ()
«create»
i n p u tUse rIn fo ()
sendUserInfo()
i n p u tUse rIn fo ()
5.3 建立序列图
1. 确定事件流
“用户登录”的异常流: 用户输入的信息与数据库中存储的信息不匹配,数据库 验证不通过,弹出错误信息。
5.3 建立序列图
2. 布置对象
基本流中的对象主要有客户(client)、数据库(database)、 服务器(server)、登录对话框(entryDialogue)、好友 列表(friendList)
– 服务器再把该用户信息发往数据库进行身份验证, 若合法,返回消息允许用户登录,同时服务器通过 向自身发送updateList消息更新在线用户列表
– 服务器通过创建消息FriendList创建该用户好友列表 – 通过消息getOfflineMessage向数据库请求其他好友向
该用户发送的离线
5.3 建立序列图
3. 添加消息
按发生的顺序在对象之间添加交互消息。
– 客户通过发送创建消息EntryDialogue打开登录对话框
UML九种建模图--顺序图
UML九种建模图--顺序图概述顺序图是⼀种交互图(interaction diagram).交互图展现了⼀种交互,它由⼀组对象或参与者以及它们之间可能发送的消息构成。
交互图专注于系统的动态视图。
顺序图是强调消息的时间次序的交互图。
组成顺序图主要有4个标记符:对象、⽣命线、消息和激活。
对象三种表⽰⽅法1.包括对象名和类名,2、只有类名3.只有对象名⽣命线⽣命线⽤于描述对象的存在周期,对象下⽅的虚线就是该对象的⽣命线。
激活控制焦点是指活动者或对象处于执⾏状态的时间段消息消息⽤于描述对象间交互的⽅式及内容。
消息分为四种:同步消息、异步消息、返回消息、⾃关联消息1.同步消息:⼀个对象向另⼀个对象发出同步消息后,将处于阻塞状态,⼀直等到另⼀个对象的回应表⽰⽅式:2.异步消息:⼀个对象向另⼀个对象发出异步消息后,这个对象可以进⾏其他的操作,不需要等到另⼀个对象的响应表⽰⽅式:3.返回消息:同步消息的返回消息表⽰⽅式:4.⾃关联消息:⽤来描述对象内部函数的互相调⽤表⽰⽅式:还有顺序图中对于流程控制的模块:复合⽚段复合⽚段有多种,在此主要介绍⼀下⼏种:条件判断、可选、循环、同步1.条件判断:⽤于描述代码中if…else…这种结构标记为“alt”例如:2.可选:是⼀种特殊的“条件判断”,它只是⼀个if,没有else if或else 可选的标记为:opt3.循环:是指代码中的for、while之类的语句块循环的标记为:loop例如:下图中[m,n]是指⾄少执⾏m次,最多执⾏n次4.同步:⽤于描述多线程的情况同步的标记是:par画顺序图的步骤:1. 确定交互的范围2. 确定参与交互的活动者与对象3. 确定活动者、对象的⽣存周期4. 确定交互中产⽣的消息5. 细化消息的内容。
UML交互图
UML交互图目录1、UML交互图概述 (1)2、使用交互图的场合 (1)3、UML交互图作用 (2)4、UML交互图如何绘制? (3)5、协作图 (3)6、序列图 (4)1、UML交互图概述UML交互图描述的是对象之间的动态合作关系以及合作过程中的行为次序。
UML交互图常常用来描述一个用例的行为,显示该用例中所涉及的对象以及这些对象之间的消息传递情况,即一个用例的实现过程。
UML交互图包括两种:序列图和协作图。
序列图:显示对象之间的关系,强调对象之间消息的时间顺序,显示对象之间的交互。
协作图:描述对象之间的交互关系2、使用交互图的场合我们现在来讨论交互图在实际情况中的应用。
要了解实际应用中,我们需要了解的基本性质序列图和协作图。
这两个图的主要目的,是相似的,因为它们是用来捕捉系统的动态行为:序列图是用来捕获从一个对象到另一个消息流的顺序;协作图用来描述参与相互作用中的对象的结构组织。
一个单一的图是不足以说明整个系统的动态环节,这样的一套图是用来捕获一个整体。
使用交互图,当我们想要了解的消息流和组织结构。
消息流装置控制流从一个对象到另一个序列和结构组织的装置,在一个系统中的元素的视觉组织。
以下是交互图的用法:2.1.按时间顺序的控制流建模。
2.2.为了模拟流结构组织控制。
2.3.对于正向工程。
2.4.逆向工程。
3、UML交互图作用UML交互图主要包括对象和消息两类元素,创建交互图的过程实际上就是向对象分配任务的过程,是可视化系统的交互行为。
由于可视化的交互是一个困难的任务,所以要使用不同类型的模型来捕获不同方面的相互作用,这也是序列图和时序图的作用。
总而言之,对交互图的描述如下:3.1.交互图捕捉一个系统的动态行为;3.2.交互图用来描述该系统中的消息流;3.3.交互图用来描述对象的结构组织;3.4.交互图是为了描述对象之间的互动。
4、UML交互图如何绘制?我们已经了解了交互图的作用就是捕捉系统的动态环节。
UML-09-交互图-协作图和时序图
3. 消息 ③返回消息( Return ) 返回消息 返回消息表示从消息接受对象返回信息。 返回消息表示从消息接受对象返回信息。 表示从消息接受对象返回信息
返回消息
3. 消息 ④阻止消息 阻止消息指消息发送者发出消息给接收者, 阻止消息指消息发送者发出消息给接收者,如果接 消息指消息发送者发出消息给接收者 收者无法立即接收这个消息,则发送者放弃这个消息。 收者无法立即接收这个消息,则发送者放弃这个消息。
其中: 其中: Simple和Asynchronous(异步)同义 Synchronous (同步)和Procedure Call同义 Return 不变 新增: 新增: 阻止(Balking) 阻止( )
接受者如果无法立即接收,则发送者放弃消息;
超时( 超时(Timeout): ):
如果接受者无法在指定时间内接收,则发送者放弃 消息。
6.1.1 交互图的概念
1. 交互图的概念 交互图(interaction): 用来描述对象之间、对象与参与 用来描述对象之间、 交互图 者之间的动态协作关系, 者之间的动态协作关系,以及协作过程中行为次序的图 形。 2.交互图的类型 2.交互图的类型 顺序图( 顺序图( Sequence diagram ) 协作图( 协作图( Collaboration diagram )
消息 对象
生命线
控制焦点
2. 顺序图样式和组成
●
① 对象的命名
:类名 :对象名
对象名: 对象名:类名
匿名对象
2. 顺序图样式和组成 ① 对象的命名
●
② 生命线 表示对象存在的时间,对象下面一条虚线表示。 表示对象存在的时间,对象下面一条虚线表示。
对象生命线
×
uml建模第七章 交互图
图7-13 ref操作符
7.1 顺序图——顺序图的深入
顺序图中使用其它的技术: 1、使用注释 2、使用约束 3、使用状态
7.1 顺序图——顺序图建模
1. 为每一个用例编写事件流,包括一个基本事件 流和若干可选事件流或异常流; 2. 识别事件流中参与交互的对象; 3. 为每个事件流绘制顺序图,包括为每个对象设 置生命线,即确定哪些对象存在于整个交互过 程中,哪些对象在交互过程中被创建和撤销; 4. 从引发这个交互过程的初始消息开始,在生命 线之间自顶向下依次画出随后的各个消息; 5. 如果需要,可以画上交互片段、交互引用和约 束等。
7.2 通信图
三、组成元素 1、对象
(2)主动对象(活动对象) 一组属性和一组方法的封装体,其中至少有一 个方法不需要接收消息就能主动执行(称作主 动方法)。
UML中
Rose中
7.2 通信图
三、组成元素 2、链
用来连接对象,消息显示在链的旁边,一个链 上可以有多个消息。 在顺序图中不使用链,只有协作图中才使用链 的概念。
图7-5 嵌套编号
Rose中的消息
7.1 顺序图——顺序图的深入
顺序图中,对象的行为有循环和分支两
种方式,为了表示这两种行为,引入了 交互片段、区域和操作符的概念。
7.1 顺序图——顺序图的深入
每个交互片段都有一个操作符,操作符
决定了交互片段的执行方式。
1、表示分支的操作符
alt:支持多条件
表7-2常用迭代表达式
迭代表达式 [i:=1..n] [I=1..10] [while(表达式)] [until(表达式)]
语义 迭代n次
I迭代10次 表达式为true时才进行迭代 迭代到表达识为true时,才停止迭代 在对象集合上迭代
UML-8交互作用图
图8.1 把技能加入资源的顺序图
Home
8.1 顺序图
8.1.1 顺序图的组成 8.1.2 对象的创建与销 毁 8.1.3 同步消息与异步消息 8.1.4 交互框架
Home
8.1.5 分支 8.1.6 循环
8.1.7 自调用与回调
8.1.1 顺序图的组成
顺序图是一个二维图形。在顺序图中水平向为对象 维,沿水平方向排列参与交互的对象类角色;竖向为 时间维,沿垂直向下方向按时间递增顺序列出各对象 类角色所发出和接收的消息。 一个顺序图由下列图形元素构成:对象类角色、生 命线、激活期和消息。 1.对象类角色 对象类角色(Class Role)表示在交互中对象可起的 作用。 对象类角色用矩形框图标表示。 在顺序图中对象类角色一般只给出名称,其命名规 则与在对象类图中相同。
Home
8.1.3 同步消息与异步消息
异步消息的接收者必须是一个主动对 象(Active object),即它是一个不需要 消息驱动就能执行其动作的对象。 一个异步消息可以做以下3件事情之一: (1)创建一个新线程。此时的异步消 息连接到一个激活期的顶部。 (2)创建一个新对象。 (3)与一个已经在运行的线程通信。
:打印服务 Print (file) alt Print (file) [Printer free] Store (file) :打印机 :打印队列
[Printer busy]
图8.10 分支示例
Home
8.1.6 循环
消息的循环是指一组消息被多次发出。 在顺序图中循环处理可以用交互框架表示,一组消息 包含在一个交互框架中,这些消息将循环重复发送。 在交互框架左上角的标题框中标明操作符“loop”。操 作符“loop”的语法定义为:loop [(<minint>[,<maxint>])]。 其中,<minint>为循环参数值的下界,<maxint>为循 环参数值的上界,均可为非负整数;<maxint>还可为 “*”,表示无限。 若操作符“loop”不带参数值,则为无限循环。 循环的继续或退出也可由一个出口条件控制。出口条 件可用条件表达式表示,其值是循环的次数。
交互模型-顺序图
1.顺序图
消息
为了可读性,序列图的第一个消息总是从顶端开始,并且一般位于图的 左边。然后继发的消息加入图中,稍微比前面的消息低些。 为了显示一个对象(例如,生命线)传递一个消息给另外一个对象,你 画一条线指向接收对象,包括一个实心箭头(如果是一个同步调用操作 )或一个棍形箭头(如果是一个异步讯号)。消息/方法名字放置在带 箭头的线上面。正在被传递给接收对象的消息,表示接收对象的类实现 的一个操作/方法。
1.顺序图
生命线
当画一个序列图的时候,放置生命线符号元件,横跨图的顶部
。生命线表示序列中,建模的角色或对象实例。 生命线画作一
个方格,一条虚线从上而下,通过底部边界的中心(图 3)。生
命线名字放置在方格里。
UML 的生命线命名标准按照如下
格式:
图 3: 用于一个实体名为freshman的生命线的Student类的一个例子
交互模型-顺序图
交互模型-顺序图
知识图谱
Agenda
• 交互与交互图 • 如何阅读交互图 • 如何绘制交互图 • 交互图应用说明 • 定时图 • 本章小结
Agenda
• 交互与交互图 • 如何阅读交互图 • 如何绘制交互图 • 交互图应用说明 • 定时图 • 本章小结
交互的概念
• 一次交互就是指在特定语境中,为了实现某一个目标,
1.顺序图
消息
图 4: 一个在对象之间传递消息的实例 返回消息是可选择的;一个返回消息画作一个带开放箭头的虚线,向后指 向来源的生命线,在这条虚线上面,你放置操作的返回值。
1.顺序图
消息
当序列图建模时,有时候,一个对象将会需要传递一个消息给 它本身。一个对象何时称它本身?一个纯化论者会争辩一个对 象应该永不传递一个消息给它本身。然而,为传递一个消息给 它本身的对象建模,在一些情境中可能是有用的。举例来说, 图 5 是图 4 的一个改良版本。 图 5 版本显示调用它的 determineAvailableReports 方法的系统对象。通过表示系统传递 消息“determineAvailableReports”给它本身,模型把注意力集中 到过程的事实上,而不是系统对象。
uml交互图(顺序图通信图鲁棒图定时图)
uml交互图(顺序图、通信图、鲁棒图、定时图)交互与交互图交互的概念一次交互就是指在特定语境中,为了实现某一个目标,而在一组对象之间进行交换的一组消息所表示的行为消息UML中的4种交互图顺序图:顺序图是一种强调消息时间顺序的交互图,为读者提供了控制流随着时间推移的清晰的可视化轨迹通信图:UML 2.0中的通信图实际上就是UML1中的协作图,它强调的是参加交互的对象的组织,为读者提供了在协作对象结构组织的语境中观察控制流的一个清晰的可视化轨迹定时图:采用了一种带数字刻度的时间轴来精确地描述消息的顺序交互概述图:是交互图和活动图的混合物如何阅读交互图阅读顺序图顺序图的主要元素对象与角色:最顶上一排矩形框。
在交互图中,参与交互的对象既可以是具体的事物,又可以是原型化的事物。
作为具体的事物,一个对象代表现实世界中的某个东西。
例如,aOrder作为类Order的一个实例,可以代表一个特定的订单;而如果作为一个原型化的事件,则aOrder可以代表类Order 的任何一个实例。
生命线与控制焦点:每个对象都有自己的生命线,对象生命线是一条垂直的虚线,用来表示一个对象在一段时间内存在消息:用来描述对象之间所进行的通信的,该信息带有对将要发生的活动的期望。
当传送一个消息时,它所引起的动作是用一个通过对计算过程的抽象而得到的可执行语句(就是方法头)。
消息分为五种:调用、返回、发送、创建和销毁调用:表示调用某个对象一个操作顺序编号(第几步的编号):整个消息的传递过程就形成了一个完整的序列,因此通过在每个消息的前面加上一个用冒号隔开的顺序号来表示其顺序。
除了顺序编号之外,还可以采用嵌套方案:读图小结第1步在dispatchForm(分发窗体)中,对于某个已支付的Order进行分发时,就会调用该订单(一个Order类的实例对象aOrder)的dispatch()方法。
1.1 dispatch()方法将逐个调用[for each orderitem]该Order对应的所有OrderItem对象的getPeddleryId()方法获取供应商ID 1.2(PeddleryId),1.1.1而OrderItem对象则是通过其所对应的Product对象来的getPeddleryId()方法来获取供应商ID。
交互模型-顺序图
UML中的4种交互图
• 顺序图:顺序图是一种强调消息时间顺序的交互图,为
读者提供了控制流随着时间推移的清晰的可视化轨迹
• 通信图:UML 2.0中的通信图实际上就是UML 1中的协
作图,它强调的是参加交互的对象的组织,为读者提供 了在协作对象结构组织的语境中观察控制流的一个清晰 的可视化轨迹
顺序图的主要元素
• 顺序编号:整个消息的传递过程就形成了一个完整的序列,因此通
过在每个消息的前面加上一个用冒号隔开的顺序号来表示其顺序。 除了顺序编号之外,还可以采用嵌套方案:
1.顺序图
框架符号 在 UML 2中,框架元件用于作为许多其他的图元件的 一个基础,作为图的图形化边界。
1.顺序图
除了提供一个图形化边框之外,用于图中的框架元件也有描述交互的重 要的功能。在序列图上一个序列接收和发送消息(交互),能通过连接 消息和框架元件边界,建立模型(如图 2 所见到)。
1.顺序图
消息
当序列图建模时,有时候,一个对象将会需要传递一个消息给 它本身。一个对象何时称它本身?一个纯化论者会争辩一个对 象应该永不传递一个消息给它本身。然而,为传递一个消息给 它本身的对象建模,在一些情境中可能是有用的。举例来说, 图 5 是图 4 的一个改良版本。 图 5 版本显示调用它的 determineAvailableReports 方法的系统对象。通过表示系统传递 消息“determineAvailableReports”给它本身,模型把注意力集中 到过程的事实上,而不是系统对象。 为了要画一个调用本身的对象,如你平时所作的,画一条消息 ,但是不是连接它到另外的一个对象,而是你把消息连接回对 象本身。
1.顺序图
交互图
顺序图表示
对象/参与者
对象维
生命线 消息 时间维 控制焦点
19
顺序图的表示
对象 • 顺序图中对象的符号和对象图中对象所用的符号 一样。 • 将对象置于顺序图的顶部意味着在交互开始的时 候对象就已经存在了 • 如果对象的位置不在顶部,那么表示对象是在交 互的过程中被创建的
20
顺序图的表示
• 对象的撤销 • 如果要撤销一个对象,只要在其生命线终止点放 置一个“X”符号即可,该点通常是对删除或取 消消息的回应。
同步消息 返回消息 异步消息 简单消息
• UML1.3前的消息还有:
–简单消息 simple
• Rose扩充的消息
–阻止消息 balking –超时消息 time-out
26
顺序图的表示
同步消息:消息的发送者把控制传递给消息的接收者, 等待接收者返回或放弃控制.
调用消息必有一个与之配对的返回消息, 但是可以不 用画出.
将订单生成送货单
顺序图
• (2)嵌套编号: • UML标准中定义了“嵌套编 号方案”。嵌套编号方案表示 了方法间的包含关系。 • 由于顺序图本身已经充分表现 出消息执行的顺序,因此在 UML模型中并没有要求对消 息进行编号。只是要求在通信 图中,对消息进行了编号。但 在Rose等建模工具中,为了 能够自动实现顺序图与通信图 的转换,在顺序图中也默认采 取“嵌套编号方案。如1.1, 1.2,1.3
21
顺序图的表示
对象的左右排列位置
对象的左右顺序并不重要,但是为了图面的清晰整 洁起见,通常应遵循以下两个原则: (1)把交互频繁的对象尽可能地靠拢 (2)把初始化整个交互活动的对象(有时是一个 参与者)放置在最左边
Байду номын сангаас
UML协作图
两种图的语义是等价的,可以从一种形式的图转换 成另一种形式的图,而不丢失任何信息。
9
比较顺序图与协作图 例:客户Joe从ATM机提取20美金的场景。
10
11
实例——储户在ATM机上存钱操作的协作图 ( visio 2007演示 )
1、确定系统中的类
7: 验 证 PIN 15:打印收条
12:接收钱
2:读卡
13:验钱数 14:帐户加钱
: 读卡机
4: 打 开 帐 户 16:退卡
: 帐户
14
2
协作图示例:
3
协作图包含了3个元素:
① 对象(Object) ② 链(Link) ③ 消息(Message)
4
1. 对象
在协作图中可以使用3种标记类型的对象。
5
2. 链
协作图中链的符号和对象图中链所用的符号是 一样的,即一条连接两个类角色的实线表示。
链接用来在协作图中关联对象,链接的目的是 让消息在不同系统对象之间传递。没有链接, 两个系统对象之间无法彼此交互。
储户
读卡机
ATM屏幕
帐户
存钱机
12
2、确定类之间关系
储户
ATM屏幕
存钱机
读卡机
帐户
13
3、对象实例之间协作关系
: 储户
6:输入PIN 9: 选 择 存 钱 事 务
11: 输 入 金 额
: ATM屏幕
5: 提 示 输 入 PIN 8:提示选择事务
10:提示金额
: 存钱机
1:插 入 卡
3: 屏 幕 初 始 化
6
7
3.消息
消息是协作图中对象与对象之间通信的方式。消息在协 作图中显示为一个伴随链接或者关联角色的文本字符串,并 带有一个箭头来指示消息沿着关系传递的方向。
交互图
7.1.3 表示循环和分支
• 操作符ingore也包含一个子片段和一个消息类型列表。列表中的消息 类型可以出现在子片段中,但交互会忽略它们。它的含义与consider 刚好相反。
• 4.break • 操作符break和循环语句的berak有些类似,通常用break定义一个含有
监护条件的子片段。如果监护条件为“真”则执行子片段,而且不执 行子片段后面的其他交互;如果监护条件为“假”,那么就按正常流 程执行. • 在图7-10中,当系统要用户登录时。如果单击“取消”按钮,那么就 将取消登录。并且不再执行后续地交互;否则就将等待用户输入登录 信息,系统对输入的信息进行相应地应答.
• (3).当Order的实例对象aOrder得到返回的PeddleryId后,根据该值判断 是否已经有相对应的DeliverOrder对象,如果没有就创建它(调用 create(PeddleryId)),然后再将对应的Product添加到这个DeliverOrder 对象中。否则就直接添加到相应的DeliverOrder对象中
7.1.2 顺序图的表示
• 在图7-5中,我们把属于同一个对象发送和接受的消息放 在同一层进行编号.如对象dispatchForm的发送和接受消 息放在第一层编号,它们是:1、2;把对象aOrder发送和 接受的消息放在第二层编号,它们是1.1、1.2、1.3、1.4; 匿名对象:OrderItem的发送和接受消息放在第三层编号, 它们是:1.1.1、1.1.2
LOGO
《UML 统一建模》
第7章 交互图
目录
7.1 顺序图 7.2 通信图 7 . 3 绘制交互图
7.4 顺序图与通信图的关系 7.5 定时图
第7章 交互图
• 描述系统中,对象之间通过消息进行通讯的图就是交互图。 交互图包含4种类型,它们是顺序图、通讯图、定时图、 交互概述图。
UML类图交互图协作图及示例
对象
消息
生命线
激活
武当山旅游门户网站( ) 分类信息
顺序图的组成
1、对象
顺序图中的对象可以是系统的参与者或者任何有效的系统对象。对 象的表示形式也和对象图中的对象的表示方式一样,使用包围名称的矩 形框来标记,所显示的对象及其类的名称带有下划线,二者用冒号隔开, 使用“对象名 :类名”的形式,对象的下部有一条被成为“生命线” 的垂直虚线。
消息的语法格式:
[警戒条件][消息序号][返回值:=]消息名([参数列 表])
例如:
2:display(x,y)
简单消息
1.2.1:p:=find(sprt(x,color) 条件消息
3.1 *update()
循环消息
零售业务顺序图 武当山旅游门户网站( ) 分类信息
武当山旅游门户网站( ) 分类信息
2、生命线
生命线(Lifeline)是一条垂直的虚线,用来表示序列图中的对象 在一段时间内的存在。
每个对象的底部中心的位置都带有生命线。生命线是一个时间线, 从序列图的顶部一直延伸到底部,所用时间取决于交互持续的时间,也 就是说生命线表现了对象存在的时段。
武当山旅游门户网站( ) 分类信息
注意
描述一个用例中的几个对象协同工作的 行为,应该使用交互图;描述跨越多个 用例的单个对象的行为,应当使用状态 图;如果想描述跨越多个用例的对象之 间的行为则应该使用活动图。
武当山旅游门户网站( ) 分类信息
顺序图
顺序图是按时间顺序反映对象之间传递 的消息。顺序图的顶部放置相关的对象, 沿对象向下的虚线表示对象的生命线, 两个对象生命线之间的横线表示对象之 间传递消息,消息线的箭头形状表示消 息的类型。对象也可以向自己发送消息。 消息线上标注消息名,也可以加上参数 并标注一些控制信息。
UML4 交互图
把技能”A/D“加入资源”王平“的剧本(实例顺序图) 17
买饮料用例:一个理想的买饮料场景(有饮料并钱数正确),四个对象类角色: 顾客:买饮料;前端:饮料售货机与顾客之间的接口;钱币记录仪:负责收集顾客投的 钱币;分配器:负责取饮料递给前端。四个对象类角色之间的交互序列: (1)某顾客向机器前端投币口投入正确的钱币。(2)顾客选择有存货的饮料品种。 (3)钱币被传送到记录仪。(4)记录仪控制分配器将一罐饮料投递到销售机的前端。
四、交互图(Interaction Diagram)
交互图表示对象之间的交互,是描述一组对象如何合作 完成某个行为的模型化工具。
交互图主要用于对Use Case中的控制流的建模。一般情 况下,一个交互图表达单个Use Case的行为,它表示出 该Use Case中的若干实例对象和对象之间所传递的消息。 交互图有效地帮助人们观察和理解系统内部的协作关系 和过程行为。
源对象
目标对象
Synchronous Message
阻止消息:源对象发消息给 目标对象,如果目标对象无 法立即接收消息,则源对象 放弃这个消息。
源对象
Balking Message
目标对象
9
4.1.1 顺序图的组成[4]
超时消息:源对象发出消息给 目标对象并等待指定的时间, 如果目标对象无法在指点的时 内接收消息,则源对象放弃这 个消息。
5
主要内容
1. 顺序图的组成 2. 运用顺序图 3. 实例图与一般图 4. 对象的创建与销毁
6
4.1.1 顺序图的组成[1]
顺序图由下列图形元素构成:对象、生命线、激活期和
消息。
(1)对象:一般只给出名称,其命名规则与在对象图中相同。对象
图标一般位于顺序图的顶部,布局以能够使图形尽量简洁为主。
UML-8交互作用图解读
顺序图是一个二维图形。在顺序图中水平向为对象 维,沿水平方向排列参与交互的对象类角色;竖向为 时间维,沿垂直向下方向按时间递增顺序列出各对象 类角色所发出和接收的消息。 一个顺序图由下列图形元素构成:对象类角色、生 命线、激活期和消息。 1.对象类角色 对象类角色(Class Role)表示在交互中对象可起的 作用。 对象类角色用矩形框图标表示。 在顺序图中对象类角色一般只给出名称,其命名规 则与在对象类图中相同。
图8.4 对数据库的JDBC接口的访问
8.1.3 同步消息与异步消息
火龙果 整理
同步消息(Synchronous massage)代表一个通过操 作调用的嵌套的控制流,该操作调用要求操作同步。 同步消息的发送者把控制传递给消息的接收者,然 后暂停活动,等待消息接收者放弃或返回控制。 同步消息的接收者执行所请求的操作,如果需要的 话,可以把控制传递给另一个对象角色,请求做某个 操作,并且当该操作完成后把控制返回给原来的同步 消息的发送者。 同步消息的接收者也可以直接返回或发送信息给原 来的消息的发送者。
8.1.1 顺序图的组成
火龙果 整理
4.消息 消息(Message)表示对象之间的通信,对象之间的交互通过互 发消息来实现,消息将触发接受对象中的特定操作。 。 在顺序图中消息用对象角色之间的一条水平箭线表示。消息箭线 从源对象指向目标对象,其上标有消息内容标签。 消息内容标签的格式为: 序号 [保安条件] *[循环] 返回表:= 操作名(参数表) 序号为消息在整个交互中的顺序号。 保安条件(Guard Condition)是一个布尔条件表达式。只有当其 保安条件被满足时才能发送该消息。保安条件可以缺省,表示该消 息是无条件发送的。 循环说明规定该消息发送的重复次数。 操作的参数表是一个以逗号分隔的实在参数表,它被传递给接收 该消息的对象类角色中的一个操作(方法)。
类图交互作用图-PPT
1..n
1..n
1..n
双向关联
0..n
Course -name : String -courseID : String -textBook : Book
0..n
1、 类图
1、2 类图得划分
类图得划分
在软件开发得不同阶段,类图描述了不同层次得抽 象。以需求阶段、设计阶段、实现阶段将类图划分为 三个层次:
0..1
direct deposits checks via
单向关联
0..1
<<接口>>
IBankSystem(From External System Interface)
+deposit(in aPayCheck : PayCheck(from Payroll Artifacts), in intoBank : BankInformation(from Payroll Artifacts))
+addTeacher(in teacher : Teacher) : int +removeTeacher(in teacher : Teacher) : int +getNumofTeachers() : int
1 +dean 1
1 1..n
Teacher
-name : String -teacherID : String -salary : float -address : String -title : String
聚合 1..n 1..n
Student -name : String -studentID : String -homeAddress : String -enrollDate : Date
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
类图如下
student + + + + + + + + name address ID age sex : : : : : std::string std::string int int char + + + + + + + + schedule semester : int commit () selectcourse () changecourse () delete () submit () updata () save () pass () : : : : : : : : void void void void void void void void 0..1 0..*
活动者或对象
一般活动者和对象按照从左到右的顺序排列, 主要活动者排在最左边;
活动者或对象
对象的命名方式有三种:
包括对象名和类名 类名(匿名对象) 对象名(不关心类)
生命线
每个对象都有自己的生命线,是一条垂直的虚线,用 来表示一个对象在一段时间内存在。 如对象生命期结束,则用e () : getID () : getphone () : selectcourse () : givegoals () :
要求
绘制学生修改课程顺序图
控制焦点( focus of control )/激活期
对象执行某个动作的时期
消息
对象间交互信息的方式,消息分为五种:
对象创建、同步调用、返回、异步消息、交叉异步消息、对 象销毁
顺序图元素
间消息来表示, 对象间的通信通过在对象的生命线之 间消息来表示,消息的箭头类型指明 消息的类型。 消息的类型。 同步消息=调用消息(Synchronous Message) 消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接 收者放弃或者返回控制。用来表示同步的意义。 异步消息(Asynchronous Message) 消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动, 不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作 的。 返回消息(Return Message) 返回消息表示从过程调用返回
交互图概述
Sequence Diagram
面向时间描述对象交互的视图
Communication Diagram
对象间消息的结构化视图
顺序图
按照时间顺序显示对象之间交互的图;
组成
活动者(actor) 对象(object) 生命线(lifeline) 控制焦点( focus of control )/激活期 消息(message) 交互片断(Interaction Frame)
交互图
交互图概述
Interaction diagram,是描述对象之间的关系 和对象之间的信息传递的图; 强调对象交互的图
顺序图(Sequence Diagram) 通信图(Communication Diagram)
专门的图
时间图(Timing Diagram) 交互纵览图(Interaction Overview Diagram)
交互片断
consider
表示只允许出现列表中的消息
交互片断
Break
通常break用来定义一个含有监护条件的子片断。 如果监护条件为“真”则执行子片断,而且不执行包 “ ” 含子片断的图中 其它交互;如果 监护条件为“假”, “ ” 那么执行将正常 地继续进行
22
交互片断
Critical
表示该子片断是“临界区域”,在临界区域中生命线 “ ” 上的事件序列不能够和其它区域中的任何其他事件 交错。通常用来表示一个原子性的连续操作,例如 事务性操作
练习
3、管理员通过课程管理器打印所有课程信息
作业
问题: 软件学院打算开发一个学生选课系统。 新的系统允许学生利用局域网上的PC机来注册本学期的课程,并可以查看自 己已学的所有课程的所有成绩。新的系统允许教师决定要教哪些课程,并通过管理员 更新数据库,教师在学期末登记自己教授的课程的成绩。 学院已有课程目录(course catalog)数据库部分,课程目录数据库中保存了所有 的课程信息新的学生注册系统将读取课程目录数据库中的课程信息,但不会修改数据 库中的课程信息。管理员通过其它系统来维护课程信息 在每个学期初,学生可以获取这个学期所开设的所有课程的目录,在课程目录 中包含每门课的详细信息,如professor(讲课教师,因为后面约定老师可以有教授、 副教授和讲师3种类型), department, prerequisite等。 每个学生在一个学期,根据自己所在系的培养计划,必修课必须选,选修课自 愿,但一学期不可超过8门课程,不少于3门课程。(第8周周二到周五可以退课,但 必须保证本学期课程不少于3门,退课需交纳50/门的费用,由计费系统扣费,扣费成 功后,该门课程从学生的选课计划中删除,否则,退课不成功) 每门课的学生人数最多为200人,最少为30人,如果选修课学 生人数少于30人,该门课将被取消,必修课无最低人数限制。 在每个学期,有一个选课期,在这个时间段内, 学生可以改变他们的选课计划 (Schedule),注册系统允许学生在这段时间内可以增加或删除所选课程,选课最后一 天只能选课,不可退课,在学期结束的时候,学生可以通过系统查询成 绩,由于学生 成绩属于敏感信息,因此系统要有 安全措施来防止非授权的存取。(学生查询成绩 前,需要先评教)。 教师可以读取系统来获取他们所教的课程的信息,可以了解哪些学生选了他们 的课,也可以登记该门课程的学生成绩。 教师分为讲师、副教授、教授。 此系统涉及到得参与者有:①学生;②教师;③管理员;④课程目录数据库;⑤计费系统。
确定交互的范围; 识别参与交互的对象和活动者; 设置对象生命线的开始和结束; 设置消息; 细化消息;
分析级
可以用来概要描述交互的场景(考虑分析)
设计级
练习
1、用户打印文件,计算机向打印服务器发送打 印命令,打印机如果空闲,则直接打印,否则 把打印文件存储在打印队列中。
32
练习
练习
2、管理员通过课程管理器打印课程UML的信 息;
getteacher () : void addschedule () : void getcshedule () : void deleteschedule () : void getID () : int getname () : std::string getage () : int getsex () : char 0..1
消息
自调用(Self Call)
UML 标记
消息
格式:
交互片断
Alt (条件)
表示多条件的分支结构(选择结构) 虚线分隔区域,每一个区域设置一个监护条件,代 表一个分支
交互片断
Opt (可选)
表示满足条件则执行分支结构
交互片断
loop (循环)
表示该片断执行多次
交互片断
assert
用来表示内容所描述的行为是执行过程中那个时刻 唯一的有效行为。如果 执行到这个片断的前面, 则说明该片断就一定会 发生。它通常和ignore 或consider一起使用, 以断言某种特定种 类的消息行为
交互片断
Par
用来表示“并行”的,也就是用来表示两个或多个并 “ ” 发执行的子片断,并行子片断中单个元素的执行次 序可以以任何可能的顺序相互操作
交互片断
Ref
在一个交互图中,我们可以引用其它的交互图,其 表示的方法是用一个矩形,加上ref操作符,并写明 引用的交互图名称即可
时间约束
26
建立顺序图步骤
teacher + + + + + name ID kinds phone : : : : std::string int std::string int std::string int int void int
0..* course Cname CID Cnum Cteached Cgoals Ctime : : : : : : std::string int int std::string int int 0..*