第6章顺序图和协作图课件.ppt
内容提要,顺序图协作图,交互的概念,一次交互就是指在特定语境中,为了实现某一个目标,而在一组对象之间进行交换的一组消息所表示的行为,如何创建交互图,用例图仅仅描述了系统的功能,以及功能的执行流程。它并没有从实现的层面来描述系统。而要对用例进行实现描述,则需要描述相互影响的对象的集合,这些对象用来支持用例所要求的功能。并且,给出系统用例的实现描述,是从外部视图转到内部结构的第一步。在UML中,用例的实现用交互图来描述,它通过显示对象之间的关系和对象之间处理的消息来对系统的动态特性建模。交互图包括序列图和协作图两种。,如何创建交互图,交互图用来一步一步地描述用例地实现流程,包括流中需要什么对象,对象之间发送什么,什么角色启动流、消息按什么顺序发送等。交互图通过从用例建模中得到的用例文档说明、词汇表和用例图来创建。,顺序图,概念顺序图是强调消息时间顺序的交互图。顺序图描述了对象之间传送消息的时间顺序,用来表示用例中的行为顺序。顺序图将交互关系表示为一个二维图。其中,纵轴是时间轴,时间沿竖线向下延伸。横轴代表了在协作中各独立的对象。,顺序图,概念,顺序图,顺序图包含了4个元素:对象(Object)生命线(Lifeline)消息(Message)激活(Activation),顺序图,对象(Object)顺序图中对象的符号和对象图中对象所用的符号一样。将对象置于顺序图的顶部意味着在交互开始的时候对象就已经存在了,如果对象的位置不在顶部,那么表示对象是在交互的过程中被创建的。,顺序图,生命线(Lifeline)生命线是一条垂直的虚线,表示顺序图中的对象在一段时间内的存在。每个对象的底部中心的位置都带有生命线。生命线是一个时间线,从顺序图的顶部一直延伸到底部,所用的时间取决于交互持续的时间。对象与生命线结合在一起称为对象的生命线,对象的生命线包含矩形的对象图标以及图标下面的生命线。,顺序图,消息(Message)消息定义的是对象之间某种形式的通信,它可以激发某个操作、唤起信号或导致目标对象的创建或撤销。消息是两个对象之间的单路通信,从发送方到接收方的控制信息流。消息可以用于在对象间传递参数。消息可以是信号,也可以是调用。在UML中,消息使用箭头来表示,箭头的类型表示了消息的类型。,顺序图,消息(Message),顺序图,激活(Activation)激活表示该对象被占用以完成某个任务,去激活指的则是对象处于空闲状态、在等待消息。在UML中,为了表示对象是激活的,可以将该对象的生命线拓宽成为矩形。其中的矩形称为激活条或控制期,对象就是在激活条的顶部被激活的,对象在完成自己的工作后被去激活。,顺序图,对象的创建和撤销如果对象位于顺序图的顶部,说明在交互开始之前该对象已经存在了。如果对象是在交互的过程中创建的,那么它应当位于图的中间部分。对象在创建消息发生之后才能存在,对象的生命线也是在创建消息之后才存在的。创建对象的两种表示方法:,顺序图,对象的创建和撤销如果要撤销一个对象,只要在其生命线终止点放置一个“X”符号即可,该点通常是对删除或取消消息的回应。,顺序图,顺序图建模技术确定需要建模的工作流从左到右布置对象添加消息和条件以便创建每一个工作流绘制总图以便连接各个分图,顺序图,范例1,顺序图,范例1确定将要建模的工作流教师成功地检查学生分数教师试图检查学生分数,但学生不在系统中教师试图检查学生分数,但该学生分数不在系统中,顺序图,范例1布置对象,顺序图,范例1添加消息和条件(流程1),顺序图,范例1添加消息和条件(流程2),顺序图,范例1添加消息和条件(流程3),顺序图,范例2,顺序图,范例3系统管理员添加书籍的顺序图,顺序图,范例3图书管理员处理借书的顺序图(不包括预留书籍的情况),顺序图,范例3系统管理员删除书目的顺序图,顺序图,范例3借阅者预留书籍的顺序图,顺序图,范例4分析Select Course用例中的对象、角色之间交互的消息。主要有以下交互:(1)学生通过界面发送选课命令。(2)界面向控制对象请求课程信息。(3)控制对象向数据库发送查询数据消息。(4)控制对象暂存数据库的查询结果。(5)界面对象从控制对象中取得所有的课程信息。(6)在界面上显示所有的课程信息。,顺序图,范例4分析Select Course用例中的对象、角色之间交互的消息。主要有以下交互:(7)界面对象发送命令要求控制对象删除课程信息。(8)学生选择课程。(9)界面对象要求学生输入学号。(10)界面对象向控制对象发送信息,查询该生是否可以选择选定的课程。(11)控制对象从数据库中查询关联信息。(12)控制对象判断是否可以选课。(13)如果可以选课,则向数据库中添加关联信息。(14)向界面对象返回信息。,顺序图,范例4,协作图,概念协作图描述的是和对象结构相关的信息。协作图的用途是表示一个类操作的实现。协作图对交互中有意义的对象和对象之间的链建模。在UML中,协作图用几何排列来表示交互作用中的对象和链,附在链的箭头代表消息,消息的发生顺序用消息箭头处的编号来说明。,协作图,概念,协作图,协作图包含了3个元素:对象(Object)链(Link)消息(Message),协作图,对象(Object)协作图与顺序图中的对象的概念是一样,只不过在协作图中,无法表示对象的创建和撤销,所以对于对象在图中的位置没有限制。,协作图,链(Link)协作图中链的符号和对象图中链所用的符号是一样的,即一条连接两个类角色的实线。为了说明一个对象如何与另一个对象连接,可以在链的末路上附上一个路径构造型。,协作图,消息(Message)协作图中的消息类型与顺序图中的相同,只不过为了说明交互过程中消息的时间顺序,需要给消息添加顺序号。顺序号是消息的一个数字前缀,是一个整数,由1开始递增,每个消息都必须由唯一的顺序号。可以通过点表示法代表控制的嵌套关系。嵌套可以具有任意深度。与顺序图相比,协作图可以显示更为复杂的分支。,协作图,分类器角色:是一种协作角色,是协作图中用于某个对象的槽。它由仅显示名称空间的类矩形符号表示。名称空间包含以下字符串:类角色名称:分类器名称 必要时,还可以包括封闭包的完整路径,还可以显示类的构造型、创建/破坏标记和多重性指示器。在协作图上下文中,分类器角色通常指对象。,协作图,多对象:表示某个关联角色的“多个”端点上的一组对象角色。协作中使用多对象来显示将整个对象集合作为一个单元(而不是其中的单个对象)来处理的操作。,协作图,关联角色:是一种协作角色,用来说明协作图中两个分类器角色之间的关系。它由两个类角色元素之间的路径表示,并且可以包括带下划线的相应关联的名称。在协作图上下文中,关联角色通常指链接。,协作图,顺序图与协作图的互换顺序图与协作图都表示对象之间的交互作用,只是它们的侧重点有所不同:顺序图描述了交互过程中的时间顺序,但没有明确地表达对象之间的关系。协作图描述了对象之间的关系,但时间顺序必须从顺序号获得。两种图的语义是等价的,可以从一种形式的图转换成另一种形式的图,而不丢失任何信息。,协作图,协作图建模技术设置交互的语境。通过识别对象在交互中扮演的角色,设置交互的场景。对每个对象设置初始特性。描述对象之间可能有信息沿着它传递的链。从引起交互的消息开始,适当地设置其顺序号,然后将随后的每个消息附到适当的链上。如果需要说明时间或空间约束,可以用时间标记修饰这个消息,并附上合适的时间和空间约束。如果需要更形式化地说明这个控制流,可以为每个消息附上前置和后置条件。,协作图,绘制协作图的步骤创建协作图协作图工具栏按钮简介添加对象添加消息添加数据流,协作图,范例1系统管理员添加书籍的协作图,协作图,范例1图书管理员处理借书的协作图,协作图,范例1图书管理员处理还书的协作图,协作图,范例1系统管理员删除书籍的协作图,协作图,范例1借阅者预留书籍的协作图,协作图,范例2Select Course用例对象之间的交互包括:学生通过界面发送选课命令;界面向控制对象请求课程信息;控制对象向数据库发送查询数据消息;控制对象暂存数据库的查询结果;界面对象从控制对象中取得所有的课程信息;在界面上显示所有的课程信息;界面对象发送命令要求控制对象删除课程信息;,协作图,范例2Select Course用例对象之间的交互包括:学生选择课程;界面对象要求学生输入学号;界面对象向控制对象发送信息,查询该生是否可以选择选定的课程;控制对象从数据库中查询关联信息;控制对象判断是否可以选课;如果可以选课,则向数据库中添加关联信息;向界面对象返回信息。,协作图,范例2,计时图(Timing Diagram)是交互图的一种,能够展示交互过程中的真实时间信息,描述对象状态变化时的时间点和维持特定状态的时间段,及其时间约束。计时图是UML 2.0中的新增图形,主要用于表示在交互过程中不同对象状态改变之间的定时约束。计时图有多种形式。在图6.32中给出了计时图的一种示例,它是用于表示对象“:User”的生命线的计时图。,Home,计时图,例:计时图的示例,如图6.32所示。,Home,计时图,图6.32 计时图示例,UML的交互图可以有效地帮助人们观察和分析系统的交互行为。一个交互是一个行为说明,它由一个协同中的一组对象之间的通信序列所组成,以规定一个特定的目的,如一个操作的实现。交互图表达系统中的对象的交互行为。交互的上下文可以是整个系统、一个子系统、一个操作、一个对象类、一个Use Case或一个协同。尤其是,当希望了解一个Use Case所涉及的若干个对象的行为时,可以使用交互图。顺序图和通信图都是交互图,它们既是等价的,又是有区别的。,Home,交互图的应用,顺序图表示了时间消息序列,便于分析交互的时序,但没有表示静态对象关系。顺序图可以有效地帮助人们观察系统的顺序行为。通信图着重表示一个协同中的对象之间的联系和消息。通信图用于描述一个操作或一个分类符的实现,常用于帮助设计过程。在对系统建立行为模型时,最典型的做法是用顺序图按时间顺序对控制流建模,用通信图按对象组织对控制流建模。,Home,交互图的应用,用顺序图按时间顺序对控制流建模,步骤如下:(1)确定交互的上下文。(2)找出参与交互的对象类角色,把它们横向排列在顺序图的顶部。(3)对每一个对象设置一条垂直向下的生命线。(4)从初始化交互的消息开始,自顶向下在对象的生命线之间安置消息。(5)在生命线上绘出对象的激活期,以及对象创建或销毁的构造型和标记。(6)根据消息之间的关系,确定循环结构及其循环参数和出口条件。对于一个复杂的控制流,完全用一张顺序图来跟踪其时间顺序是十分困难的,此时可以把控制流进行分解,用多张顺序图来表示。,Home,交互图的应用,通信图表示一个协同中的对象之间的联系,以及互相传递的消息,适合于按对象组织的控制流建立模型。用通信图按对象组织对控制流建模,步骤如下:(1)确定交互的上下文。(2)找出参与交互的对象类角色,把它们作为图形的节点安置在通信图中。(3)设置对象的初始性质。(4)说明对象之间的链接。(5)从初始化交互的消息开始,在链接上安置相应的消息,给出消息的序号。(6)处理一些特殊情况,如循环、自调用、回调、多对象等。,Home,交互图的应用,在对控制流建模过程中的一个重要的问题是识别主动对象和被动对象。主动对象(Active Object)是一个拥有进程或线程的对象,它能初始化控制活动。主动对象一旦被创建,无须由其他对象发来的消息的触发即能自行执行动作。被动对象(Passive Object)是需要由其他对象发来的消息的触发才执行动作的对象。主动对象提供主动的服务。在一个系统中,主动对象不止一个,它们在系统中是独立并发运行的。主动对象类(Active Class)是主动对象的抽象,主动对象是主动对象类的实例。,Home,交互图的应用,精品课件!,精品课件!,主动对象类的图标与一般的对象类相同,只不过矩形图框的外框用粗线条,或者在类名下附加一个约束“active”,说明它的性质是主动类。如图6.33所示。在主动对象类的图标中可以增加一个分隔框说明它接收的信号。在UML中,每一个独立的单控制流模型化为一个主动对象。对多控制流(多线程)的建模可以采用通信图,其中包含多个代表独立控制流的主动对象或主动对象类。,Home,交互图的应用,图6.33 主动对象类图标示例,