火龙果●整理 uml.org.cn 顺序图 1.概述 顺序图(Sequence Diagram)是交互图的一种,它按照交互发生的时间顺序,利用对象 的“生命线”和消息描述对象之间的交互。通常用来描述一个用例的行为,完成对系统的动 态行为建模。顺序图主要目的是定义事件序列,产生一些希望的输出,其重点不是消息本身, 而是消息产生的顺序。一个典型的顺序图如图1所示, sd Delete User Accoun Administrator 1.0 select Delete user 1 ref 1.6 Close Account 图1.顺序图 2.基本元素 顺序图的基本元素有生命线、消息、活动者、对象、组合片断。 2.1生命线(Lifeline) 一条生命线代表着顺序图中的一个参与者,表示建模的角色或对象实例。在UML中, 上海交通大学软件学院饶若楠,“面向对象分析与设计”课程资料,请勿外传
上海交通大学软件学院 饶若楠, “面向对象分析与设计”课程资料 ,请勿外传 顺序图 1. 概述 顺序图(Sequence Diagram)是交互图的一种,它按照交互发生的时间顺序,利用对象 的“生命线”和消息描述对象之间的交互。通常用来描述一个用例的行为,完成对系统的动 态行为建模。顺序图主要目的是定义事件序列,产生一些希望的输出,其重点不是消息本身, 而是消息产生的顺序。一个典型的顺序图如图 1 所示, 图 1. 顺序图 2. 基本元素 顺序图的基本元素有生命线、消息、活动者、对象、组合片断。 2.1 生命线(Lifeline) 一条生命线代表着顺序图中的一个参与者,表示建模的角色或对象实例。在 UML 中
火龙果●整理 uml.org.cn 生命线画作一个方格,一条虚线从上而下,通过底部边界的中心,生命线对象的名字放置在 方格里,如图2所示, sd Lifelines Self Lifeline Instance :Class 图2.生命线(1) 通常,顺序图属于某个用例时,顺序图中会包含有参与者的生命线。边界类、控制类、 实体类都可以拥有生命线,如图3所示, sd More Lifelines Actor Boundary Control Entity 图3.生命线(2) 2.2消息(Messages) 消息是对象之间的一种通信,它可以传递信息并期望相关的动作被执行。顺序图的第一 个消息总是从顶端开始,并且一般位于图的左边。然后继发的消息加入图中,稍微比前面的 消息低些。在UML中,一个对象传递一个消息给另一个对象,画一条线指向接收对象,包 括一个实心箭头(表示同步调用操作)或一个棍形箭头(表示一个异步信号)。消息或方法 名字放置在带箭头的线上面。 如图4所示,第一个消息是一个同步消息,隐式返回。第二个消息表示异步,第三个消 息即是异步消息的返回的消息。 上海交通大学软件学院饶若楠,“面向对象分析与设计”课程资料,请勿外传
上海交通大学软件学院 饶若楠, “面向对象分析与设计”课程资料 ,请勿外传 生命线画作一个方格,一条虚线从上而下,通过底部边界的中心,生命线对象的名字放置在 方格里,如图 2 所示, 图 2. 生命线(1) 通常,顺序图属于某个用例时,顺序图中会包含有参与者的生命线。边界类、控制类、 实体类都可以拥有生命线,如图 3 所示, 图 3. 生命线(2) 2.2 消息(Messages) 消息是对象之间的一种通信,它可以传递信息并期望相关的动作被执行。顺序图的第一 个消息总是从顶端开始,并且一般位于图的左边。然后继发的消息加入图中,稍微比前面的 消息低些。在 UML 中,一个对象传递一个消息给另一个对象,画一条线指向接收对象,包 括一个实心箭头(表示同步调用操作)或一个棍形箭头(表示一个异步信号)。消息或方法 名字放置在带箭头的线上面。 如图 4 所示,第一个消息是一个同步消息,隐式返回。第二个消息表示异步,第三个消 息即是异步消息的返回的消息
火龙果●整理 uml.org.cn sd Messages Source Target return:=message(parameter) message(parameter) message(return) 图4.消息 生命线上的瘦矩形表示消息执行发生或一个控制焦点的激活,表明对象在某一时间点开 始执行活动。在图4中,有三个执行发生。 调用本身的消息可用于表示一个操作的递归调用,或者同一对象中一个方法对另一个方 法的调用,如图5所示, sd Reoursion Source selfmessage 图5.调用自身消息 2.3约束(Constraints) 当为对象的交互建模时,有时候,必须满足一个条件,消息才会传递给对象。约束在各 个不同的UML图中,用于控制流。UML1.x及UML2.0两者的约束有所区别:UML2.0 通过一个叫组合片断(Combined Fragments)的符号表示必要的逻辑;而在UMLl.x中, 一个约束只可能被分配到一个单一消息,为了在一个序列图上画一个约束,要把约束元件放 在约束的消息线上,消息名字之前。在UML中,约束的符号很简单,用一个“D”表示。 图6显示序列图的一个片段,消息addStudent方法上有一个约束。通过这个消息上的约束, 如果应收帐系统返回一个零点的逾期平衡,addStudent消息才会被传递。 上海交通大学软件学院饶若楠,“面向对象分析与设计”课程资料,请勿外传
上海交通大学软件学院 饶若楠, “面向对象分析与设计”课程资料 ,请勿外传 图 4. 消息 生命线上的瘦矩形表示消息执行发生或一个控制焦点的激活,表明对象在某一时间点开 始执行活动。在图 4 中,有三个执行发生。 调用本身的消息可用于表示一个操作的递归调用,或者同一对象中一个方法对另一个方 法的调用,如图 5 所示, 图 5. 调用自身消息 2.3 约束(Constraints) 当为对象的交互建模时,有时候,必须满足一个条件,消息才会传递给对象。约束在各 个不同的 UML 图中,用于控制流。UML 1.x 及 UML 2.0 两者的约束有所区别:UML 2.0 通过一个叫组合片断(Combined Fragments)的符号表示必要的逻辑;而在 UML 1.x 中, 一个约束只可能被分配到一个单一消息,为了在一个序列图上画一个约束,要把约束元件放 在约束的消息线上,消息名字之前。在 UML 中,约束的符号很简单,用一个“[]”表示。 图 6 显示序列图的一个片段,消息 addStudent 方法上有一个约束。通过这个消息上的约束, 如果应收帐系统返回一个零点的逾期平衡,addStudent 消息才会被传递
果 火龙果●整理 uml.org.cn register Registeroffice ar AccountsReceivable drama:Class getPastDueBalance studentld pastDueBalance [pastDueBalance=0]addStudent (studentld 图6.约束 2.4时间约束(Duration and Time Constraints) 在实时系统的建模或者有时间域限制的业务处理过程中,必须考虑活动的时间长度,这 时可以对消息设置时间约束。如图7所示,在消息的后面加入时间约束限制。 sd Time Source Targ世 call [>10ms) call {>10ms) reply5m. reply [>5ms} 图7.时间约束 2.5组合片断(Combined Fragments) 复合片段是一个抽象符号,用来表示许多普遍的交互单元。使用复合片段机制可以为顺 序图增加一定程度的处理逻辑,这些处理逻辑在复合片段下面。一个复合片段是一个或者多 个封装在一个框架中并且一定的命名环境中执行的时序。UML2.0规范指明了组合片断的 11种交互类型。如下: 上海交通大学软件学院饶若楠,“面向对象分析与设计”课程资料,请勿外传
上海交通大学软件学院 饶若楠, “面向对象分析与设计”课程资料 ,请勿外传 图 6. 约束 2.4 时间约束(Duration and Time Constraints) 在实时系统的建模或者有时间域限制的业务处理过程中,必须考虑活动的时间长度,这 时可以对消息设置时间约束。如图 7 所示,在消息的后面加入时间约束限制。 图 7. 时间约束 2.5 组合片断(Combined Fragments) 复合片段是一个抽象符号,用来表示许多普遍的交互单元。使用复合片段机制可以为顺 序图增加一定程度的处理逻辑,这些处理逻辑在复合片段下面。一个复合片段是一个或者多 个封装在一个框架中并且一定的命名环境中执行的时序。UML 2.0 规范指明了组合片断的 11 种交互类型。如下:
果 火龙果●整理 uml.org.cn ●变体(Alternative Fragment),记作“alt”,用于描述if.then...else的逻辑结构,指 明在两个或更多的消息序列之间的、互斥的选择,如图8所示, bank Barks account i checkingAccount balance Cam3atnt】 roturnchodk thochock 图8.变体 ●选项(Option Fragment),记作“opt”,用于描述switch结构,给予一个特定条件, 将会发生或者不发生,如图9所示, atr:Registeroffic线 盖t4 ccount Recevab 生am2C getPastDueBalance (studenid addstudent studentld getcostofclass ( c9gs0o chargeForclass ( 图9.选项 ●中断(Break Fragment),记作“break'”。当一个中断组合片断的消息运行时,封闭 的交互作用的其他消息将不会执行。跳转很像C+或Java的编程语言中的break 关键字。中断最常用来做模型异常处理,可以是变体或循环的一部分,发生中断后, 变体或循环被退出,如图10所示, 上海交通大学软件学院饶若楠,“面向对象分析与设计”课程资料,请勿外传
上海交通大学软件学院 饶若楠, “面向对象分析与设计”课程资料 ,请勿外传 变体(Alternative Fragment),记作“alt”,用于描述 if…then…else 的逻辑结构,指 明在两个或更多的消息序列之间的、互斥的选择,如图 8 所示, 图 8. 变体 选项(Option Fragment),记作“opt”,用于描述 switch 结构,给予一个特定条件, 将会发生或者不发生,如图 9 所示, 图 9. 选项 中断(Break Fragment),记作“break”。当一个中断组合片断的消息运行时,封闭 的交互作用的其他消息将不会执行。跳转很像 C++ 或 Java 的编程语言中的 break 关键字。中断最常用来做模型异常处理,可以是变体或循环的一部分,发生中断后, 变体或循环被退出,如图 10 所示