《【教学课件】第4章顺序图和协作图.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第4章顺序图和协作图.ppt(85页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 顺序图和协作图顺序图和协作图统一建模语言Unified Modeling Language 顺序图顺序图顺序图的定义顺序图的定义顺序图的符号顺序图的符号顺序图的消息顺序图的消息顺序图的其他技术顺序图的其他技术帧化顺序图帧化顺序图顺序图的建模方法顺序图的建模方法协作图协作图协作图的定义协作图的定义协作图的符号协作图的符号协作图的消息协作图的消息协作图的建模方法协作图的建模方法第四章第四章 顺序图和协作图顺序图和协作图 在标识出系统的类图之后,仅给出了实现用例的组成在标识出系统的类图之后,仅给出了实现用例的组成结构,这时还需要描述这些类的对象是如何交互来实现用例结构,这时还需要描述这
2、些类的对象是如何交互来实现用例功能的。即不但需要把用例图模型转化为类图模型,还要将功能的。即不但需要把用例图模型转化为类图模型,还要将它转化为交互图模型。它转化为交互图模型。顺序图的定义顺序图的定义 交互图表示类(对象)如何交互来实现系统行为。交互交互图表示类(对象)如何交互来实现系统行为。交互图具有顺序图和协作图两种形式。图具有顺序图和协作图两种形式。顺序图的定义顺序图的定义(续续)1.1.顺序图顺序图 它描述对象按时间顺序的消息交换过程,它体现它描述对象按时间顺序的消息交换过程,它体现出系出系统用例的行为。统用例的行为。2.2.协作图协作图 它描述对象间的组织协作关系,它也可体现出系它描述
3、对象间的组织协作关系,它也可体现出系统用统用例的行为。例的行为。顺序图顺序图顺序图的定义顺序图的定义顺序图的符号顺序图的符号顺序图的消息顺序图的消息顺序图的其他技术顺序图的其他技术帧化顺序图帧化顺序图顺序图的建模方法顺序图的建模方法协作图协作图协作图的定义协作图的定义协作图的符号协作图的符号协作图的消息协作图的消息协作图的建模方法协作图的建模方法第四章第四章 顺序图和协作图顺序图和协作图顺序图的符号顺序图的符号(续续)顺序图有顺序图有四个主要的标四个主要的标记符:记符:活动对象活动对象 生命线生命线 激活激活 消息消息顺序图的符号顺序图的符号(续续)活动对象活动对象 活动对象可以是系统的参与者
4、或者任何有效的系活动对象可以是系统的参与者或者任何有效的系统对象。对象是类的实例,它使用包围名称的矩形统对象。对象是类的实例,它使用包围名称的矩形框来标记。名称带下划线,顺序图中对象的标记符框来标记。名称带下划线,顺序图中对象的标记符如下图所示。如下图所示。顺序图的符号顺序图的符号(续续)生命线生命线 顺序图中垂直方向代表时间维,时间流顺序图中垂直方向代表时间维,时间流逝的方向为自顶向下。靠近顶部的消息发生逝的方向为自顶向下。靠近顶部的消息发生的时间要比靠近底部的消息早。的时间要比靠近底部的消息早。因此,顺序图是因此,顺序图是两维两维的。自左至右的维的。自左至右的维数代表对象的布局,自顶向下的
5、维数代表时数代表对象的布局,自顶向下的维数代表时间的流逝。间的流逝。每个对象的每个对象的生命线生命线都是一条从对象向下都是一条从对象向下的虚线。表示对象的存在时间。的虚线。表示对象的存在时间。顺序图的符号顺序图的符号(续续)激活激活 在生命线上的窄矩形条被称为在生命线上的窄矩形条被称为激活激活(activation).activation).激活表示该对激活表示该对象正在执行某个操作。激活矩形的象正在执行某个操作。激活矩形的长度表示出激活的持续时间长度表示出激活的持续时间 顺序图顺序图顺序图的定义顺序图的定义顺序图的符号顺序图的符号顺序图的消息顺序图的消息顺序图的其他技术顺序图的其他技术帧化顺
6、序图帧化顺序图顺序图的建模方法顺序图的建模方法协作图协作图协作图的定义协作图的定义协作图的符号协作图的符号协作图的消息协作图的消息协作图的建模方法协作图的建模方法第四章 顺序图和协作图顺序图的符号顺序图的符号(续续)消息消息 消息用来说明顺序图中不同活动对象之间的通信。消息用来说明顺序图中不同活动对象之间的通信。它可在一个对象需要取消不同对象的进程时或者需要向它可在一个对象需要取消不同对象的进程时或者需要向另一个对象提供服务时,使用消息。另一个对象提供服务时,使用消息。消息从活动对象生命线到接收对象生命线的箭头表消息从活动对象生命线到接收对象生命线的箭头表示。箭头上面标记要发送的消息,如下图所
7、示。示。箭头上面标记要发送的消息,如下图所示。顺序图的符号顺序图的符号(续续)消息的限定消息的限定 消息可以包含条件以便限消息可以包含条件以便限制它们只在满足条件时才能发制它们只在满足条件时才能发送。条件显示在消息名称上面送。条件显示在消息名称上面的方括号中。的方括号中。右图示例演示了如何建立右图示例演示了如何建立一个顺序图来显示登录尝试。一个顺序图来显示登录尝试。如果登录失败,会在放弃登录如果登录失败,会在放弃登录之前重试一次,如下图所示。之前重试一次,如下图所示。顺序图的符号顺序图的符号(续续)在在UMLUML中,总共有中,总共有4 4种消息,如下图所示。种消息,如下图所示。消息的种类消息
8、的种类顺序图的符号顺序图的符号(续续)(1)(1)同步消息同步消息 同步消息同步消息(synchronous messagesynchronous message)代表一个操)代表一个操作调用的控制流。同步消息的发送者把控制传递给作调用的控制流。同步消息的发送者把控制传递给消息的接收者,然后暂停活动,消息的接收者,然后暂停活动,等待等待消息接收者的消息接收者的应答,收到应答后才继续自己的操作。应答,收到应答后才继续自己的操作。顺序图的符号顺序图的符号(续续)同步消息同步消息顺序图的符号顺序图的符号(续续)(2)(2)异步消息异步消息 异步消息异步消息(Asynchronous messageA
9、synchronous message)用于控制流)用于控制流在完成前不需要中断的情况。在完成前不需要中断的情况。异步异步消息的发送者把控消息的发送者把控制传递给消息的接收者制传递给消息的接收者,然后继续自己的活动,然后继续自己的活动,不需等不需等待待接收者返回信息或控制。接收者返回信息或控制。下面示例演示了如何在登录文件的情况下使用异下面示例演示了如何在登录文件的情况下使用异步消息。步消息。顺序图的符号顺序图的符号(续续)异步消息异步消息顺序图的符号顺序图的符号(续续)(3)(3)简单消息简单消息 如果所有的消息都是同步或者异步消息,那么如果所有的消息都是同步或者异步消息,那么为什么还要简单
10、消息呢?因为有时候我们不关心消为什么还要简单消息呢?因为有时候我们不关心消息是同步还是异步,此外在高层分析中,有时候没息是同步还是异步,此外在高层分析中,有时候没有必要指定一个消息是同步的还是异步的。如下面有必要指定一个消息是同步的还是异步的。如下面的示例所示。的示例所示。顺序图的符号顺序图的符号(续续)简单消息简单消息顺序图的符号顺序图的符号(续续)(4)(4)返回消息返回消息 返回消息返回消息(return messagereturn message)表示从过程调用)表示从过程调用返回返回.如果是从过程调用返回如果是从过程调用返回,则返回消息是隐含的则返回消息是隐含的,所以返回消息可以不用
11、画出来所以返回消息可以不用画出来.对于非过程调用对于非过程调用,如如果有返回消息果有返回消息,必须明确表示出来必须明确表示出来.顺序图的符号顺序图的符号(续续)返回消息返回消息 顺序图顺序图顺序图的定义顺序图的定义顺序图的符号顺序图的符号顺序图的消息顺序图的消息顺序图的其他技术顺序图的其他技术帧化顺序图帧化顺序图顺序图的建模方法顺序图的建模方法协作图协作图协作图的定义协作图的定义协作图的符号协作图的符号协作图的消息协作图的消息协作图的建模方法协作图的建模方法第四章第四章 顺序图和协作图顺序图和协作图1.创建对象创建对象 创建对象的标记符如下图中的示例所示。有一个创建对象的标记符如下图中的示例所
12、示。有一个主要步骤用来把主要步骤用来把“create”消息发送给对象实例。消息发送给对象实例。对象创建之后就会具有生命线,就像顺序图中的任何对象创建之后就会具有生命线,就像顺序图中的任何其他对象一样。现在可以像顺序图中的其他对象那样其他对象一样。现在可以像顺序图中的其他对象那样来使用该对象发送和接收消息。在处理新创建的对象,来使用该对象发送和接收消息。在处理新创建的对象,或者处理顺序图中的任何其他对象时,都可以发送或者处理顺序图中的任何其他对象时,都可以发送“destroys”消息来删除对象。消息来删除对象。若要想说明某个对若要想说明某个对象被销毁,需要在被销毁对象的生命线上放一个象被销毁,需
13、要在被销毁对象的生命线上放一个X字字符。符。顺序图的其他技术顺序图的其他技术顺序图的其他技术顺序图的其他技术创建对象创建对象顺序图的其他技术顺序图的其他技术2.2.分支和从属流分支和从属流 有两种方式来修改顺序图的控制流:使用分支和有两种方式来修改顺序图的控制流:使用分支和使用从属流。这两种方式很相似,各自的标记符略微使用从属流。这两种方式很相似,各自的标记符略微不同。控制流的改变是由于不同的条件导致控制流走不同。控制流的改变是由于不同的条件导致控制流走向不同的道路。向不同的道路。顺序图的其他技术顺序图的其他技术分支分支允许控制流走向不同的对象,如下图所示。允许控制流走向不同的对象,如下图所示
14、。顺序图的其他技术顺序图的其他技术 注意消息的开始位置是相同的,分支消息的结束注意消息的开始位置是相同的,分支消息的结束“高度高度”也是相等的。这说明在下一步中,也是相等的。这说明在下一步中,其中之一其中之一将会执行,如下图将会执行,如下图所示。所示。顺序图的其他技术顺序图的其他技术 从属流从属流还允许控制流根据条件改变,但是只允许控制流改变为还允许控制流根据条件改变,但是只允许控制流改变为相相同对象的另一条生命线分支同对象的另一条生命线分支,如下图所示。,如下图所示。顺序图的其他技术顺序图的其他技术 在下面的示例中,在下面的示例中,EditorEditor在用户删除文件或者保存文件时向在用户
15、删除文件或者保存文件时向FilesystemFilesystem发送一条消息。显然,发送一条消息。显然,FilesystemFilesystem将会执行两种完全将会执行两种完全不同的活动,并且每一个工作流都需要独立的生命线,如下图不同的活动,并且每一个工作流都需要独立的生命线,如下图 所示所示。顺序图的其他技术顺序图的其他技术练习:阅读一个顺序图练习:阅读一个顺序图 阅读下图所示的顺序图,该图说明了开发者编译应用程序阅读下图所示的顺序图,该图说明了开发者编译应用程序的步骤。在阅读顺序图时,请指出我们到目前为止已经学习过的步骤。在阅读顺序图时,请指出我们到目前为止已经学习过的标记符组件。的标记符
16、组件。练习步骤练习步骤 1 1)指出顺序图中的参与者和对象。)指出顺序图中的参与者和对象。2 2)指出出错处理发生的位置。)指出出错处理发生的位置。3 3)按照控制流的顺序指出各个消息。)按照控制流的顺序指出各个消息。顺序图顺序图顺序图的定义顺序图的定义顺序图的符号顺序图的符号顺序图的消息顺序图的消息顺序图的其他技术顺序图的其他技术帧化顺序图帧化顺序图顺序图的建模方法顺序图的建模方法协作图协作图协作图的定义协作图的定义协作图的符号协作图的符号协作图的消息协作图的消息协作图的建模方法协作图的建模方法第四章第四章 顺序图和协作图顺序图和协作图 帧是帧是UML2.0UML2.0对顺序图新增内容之一对
17、顺序图新增内容之一,一旦被包含在一旦被包含在一个帧里一个帧里,UML,UML图就可以放在另外的帧或图里图就可以放在另外的帧或图里,从而实现从而实现UMLUML图的重用图的重用.帧化一个顺序图的方法帧化一个顺序图的方法:用一个边框包围它并在左用一个边框包围它并在左上角添加一个间隔区。这个间隔区包含了识别该顺序上角添加一个间隔区。这个间隔区包含了识别该顺序图的信息。图的信息。帧化顺序图帧化顺序图 间隔区其中的一小段信息是操作符,就是描述了间隔区其中的一小段信息是操作符,就是描述了帧中的图的类型的表达式。对于一个顺序图,操作符帧中的图的类型的表达式。对于一个顺序图,操作符是是sd sd(sequen
18、ce diagram)(sequence diagram)。图。图9.179.17展示了按照展示了按照UML2.0UML2.0风格帧化的一般顺序图。除了操作符,间隔区还包含风格帧化的一般顺序图。除了操作符,间隔区还包含了图所描述的交互的名字。了图所描述的交互的名字。帧化顺序图帧化顺序图帧化顺序图帧化顺序图交互事件交互事件 如果为一个用例的多个场景创建实例顺序图,你会注如果为一个用例的多个场景创建实例顺序图,你会注意到图和图之间的相当一部分内容是重复的。帧化的方法使意到图和图之间的相当一部分内容是重复的。帧化的方法使用户能够在一张顺序图中快速容易地用户能够在一张顺序图中快速容易地复用复用另一张顺
19、序图的部另一张顺序图的部分内容。分内容。方法是先在一部分图的周围绘制一个帧,标记出帧的隔方法是先在一部分图的周围绘制一个帧,标记出帧的隔离区,然后只要把带有标记的帧离区,然后只要把带有标记的帧(不需要绘制消息和生命线不需要绘制消息和生命线)插入到一个新图中就可以复用了。这个特定的帧化的部分叫插入到一个新图中就可以复用了。这个特定的帧化的部分叫做做交互事件交互事件(interaction occurrence)(interaction occurrence),它的操作符是,它的操作符是refref。帧化顺序图帧化顺序图 下图展示了对最理想情况的场景的帧化。帧化下图展示了对最理想情况的场景的帧化。
20、帧化的部分是处理饮料分发的交互事件。后图展示了如的部分是处理饮料分发的交互事件。后图展示了如何在何在“需要找零钱需要找零钱”的场景中复用这个交互事件。的场景中复用这个交互事件。帧化顺序图帧化顺序图交互片段的组合交互片段的组合 交互事件是交互片断交互事件是交互片断(interaction fragment)(interaction fragment)的一种特殊的一种特殊情况。交互片断是情况。交互片断是UML2.0UML2.0中对一个顺序图的某一段的更一般称中对一个顺序图的某一段的更一般称呼。可以用多种方式来组合交互片断。操作符表示了不同的组呼。可以用多种方式来组合交互片断。操作符表示了不同的组合
21、类型。为了表示这种组合,将整个片断帧化,再用一条虚线合类型。为了表示这种组合,将整个片断帧化,再用一条虚线表示邻接交互片断的边界。表示邻接交互片断的边界。广泛使用的组合类型有两种,这两种类型的操作分别被标广泛使用的组合类型有两种,这两种类型的操作分别被标注为注为altalt和和parpar操作符。操作符。在在altalt组合中,每个片段都是一种可选情况,组合中,每个片段都是一种可选情况,只能在一定的只能在一定的条件下执行条件下执行。保护条件指明了哪一个片断将会执行。下图展示。保护条件指明了哪一个片断将会执行。下图展示一般顺序图中这种类型的组合。一般顺序图中这种类型的组合。帧化顺序图帧化顺序图
22、在在par组合中组合中,组合片段并列工作而不会互相交互组合片段并列工作而不会互相交互.例如例如,假设饮料销售机工作效率很高假设饮料销售机工作效率很高:它能够同时返回它能够同时返回顾客的零钱和传送顾客的选购信息顾客的零钱和传送顾客的选购信息.这就需要几件事情这就需要几件事情同时发生同时发生.顺序图顺序图顺序图的定义顺序图的定义顺序图的符号顺序图的符号顺序图的消息顺序图的消息顺序图的其他技术顺序图的其他技术帧化顺序图帧化顺序图顺序图的建模方法顺序图的建模方法协作图协作图协作图的定义协作图的定义协作图的符号协作图的符号协作图的消息协作图的消息协作图的建模方法协作图的建模方法第四章第四章 顺序图和协作
23、图顺序图和协作图顺序图的建模方法顺序图的建模方法 创建顺序图包含创建顺序图包含4 4项任务:项任务:1 1)确定需要建模的工作流。)确定需要建模的工作流。2 2)从左到右布置对象。)从左到右布置对象。3 3)添加消息和条件以便创建每一个工作流。)添加消息和条件以便创建每一个工作流。4 4)绘制总图以便连接各个分图。)绘制总图以便连接各个分图。顺序图的建模方法(续)顺序图的建模方法(续)1 1)确定工作流)确定工作流 建模顺序图的第一步是确定将要建模的工作流。对于这个练建模顺序图的第一步是确定将要建模的工作流。对于这个练习,我们将要建模习,我们将要建模Grading systemGrading
24、system的的View GradesView Grades用例。为此,用例。为此,需要至少标识出需要至少标识出3 3个个要建模的工作流:要建模的工作流:教师成功地检查学生分数教师成功地检查学生分数 教师试图检查某个学生分数教师试图检查某个学生分数,但该学生在系统中但该学生在系统中不存在。不存在。教师试图检查某个学生分数教师试图检查某个学生分数,但该学生分数在系但该学生分数在系统中不存统中不存在。在。顺序图的建模方法(续)顺序图的建模方法(续)2)2)布置对象布置对象 建模顺序图的下一步是从左到右布置所有的参与者和对象,建模顺序图的下一步是从左到右布置所有的参与者和对象,包含要添加消息的对象生
25、命线,如下图所示。包含要添加消息的对象生命线,如下图所示。顺序图的建模方法(续)顺序图的建模方法(续)3)3)添加消息和条件添加消息和条件 接下来,对每一个工作流作为独立的顺序图建模。接下来,对每一个工作流作为独立的顺序图建模。从从基本的工作流基本的工作流开始,它是没有出错条件,并且需要开始,它是没有出错条件,并且需要最少决策的工作流。最少决策的工作流。注意选择适当的消息类型(异步、注意选择适当的消息类型(异步、同步、简单和返回)。在本例中,基本工作流是同步、简单和返回)。在本例中,基本工作流是教师教师成功地检查某个学生的分数成功地检查某个学生的分数,如下图所示。,如下图所示。第第1个工作流个
26、工作流顺序图的建模方法(续)顺序图的建模方法(续)顺序图的建模方法(续)接下来以独立的顺序图建模从属工作流。此处只建模接下来以独立的顺序图建模从属工作流。此处只建模否定的否定的条条件,如下图所示。件,如下图所示。第第2个工作流个工作流顺序图的建模方法(续)顺序图的建模方法(续)注意使用条件来指示在什么时候发送什么消息,如下图所示。注意使用条件来指示在什么时候发送什么消息,如下图所示。第第3个工作流个工作流顺序图的建模方法(续)顺序图的建模方法(续)4)4)绘制总图绘制总图 建模顺序图的最后一步是把建模顺序图的最后一步是把所有独立的所有独立的工作流连工作流连接为一个总图,如下图所示。接为一个总图
27、,如下图所示。在此阶段,如果觉得前面的消息和交互对于当前在此阶段,如果觉得前面的消息和交互对于当前的顺序图过于详细,可以让它们更加泛化一些,但是的顺序图过于详细,可以让它们更加泛化一些,但是在软件建模的下一个阶段,就会觉得初始的各个顺序在软件建模的下一个阶段,就会觉得初始的各个顺序图越详细越好。图越详细越好。顺序图顺序图顺序图的定义顺序图的定义顺序图的符号顺序图的符号顺序图的消息顺序图的消息顺序图的其他技术顺序图的其他技术帧化顺序图帧化顺序图顺序图的建模方法顺序图的建模方法协作图协作图协作图的定义协作图的定义协作图的符号协作图的符号协作图的消息协作图的消息协作图的建模方法协作图的建模方法第四章
28、第四章 顺序图和协作图顺序图和协作图 协作图的定义协作图的定义 协作图协作图描述对象之间的关联及其它们彼此之间描述对象之间的关联及其它们彼此之间的消息通信。要想使由类构成的系统具有功能,这的消息通信。要想使由类构成的系统具有功能,这些类的实例(对象)需要彼此通信和交互。些类的实例(对象)需要彼此通信和交互。协作图协作图除了展示出对象之间的关联,还显示出对象之间的除了展示出对象之间的关联,还显示出对象之间的消息传递。消息传递。协作图的定义协作图的定义(续续)协作图和协作图和顺序图的区别顺序图的区别 顺序图顺序图和协作图都可以表示对象间的交互关系,但它们和协作图都可以表示对象间的交互关系,但它们的
29、侧重点不同。的侧重点不同。顺序图强调的是顺序图强调的是交互的时间顺序交互的时间顺序,协作图强协作图强调的是调的是交互的语境和参与交互的对象的整体组织交互的语境和参与交互的对象的整体组织。还可以从。还可以从另一个角度来看两种图的定义:顺序图按照时间顺序布图,另一个角度来看两种图的定义:顺序图按照时间顺序布图,而协作图按照空间组织布图。而协作图按照空间组织布图。顺序图顺序图顺序图的定义顺序图的定义顺序图的符号顺序图的符号顺序图的消息顺序图的消息顺序图的其他技术顺序图的其他技术帧化顺序图帧化顺序图顺序图的建模方法顺序图的建模方法协作图协作图协作图的定义协作图的定义协作图的符号协作图的符号协作图的消息
30、协作图的消息协作图的建模方法协作图的建模方法第四章第四章 顺序图和协作图顺序图和协作图 协作图的符号协作图的符号 协作图描述对象之间的关联结构以及它们之间的交互,以协作图描述对象之间的关联结构以及它们之间的交互,以便展示用例的功能行为。协作图中包括的建模元素有对象(包便展示用例的功能行为。协作图中包括的建模元素有对象(包括参与者实例、多对象、主动对象等)、消息、链等。其标记括参与者实例、多对象、主动对象等)、消息、链等。其标记如下图所示。如下图所示。对象对象消息消息链链对象对象消息消息链链协作图的符号(续)协作图的符号(续)多对象多对象 在协作图中,多对象指的是由多个对象组成的在协作图中,多对
31、象指的是由多个对象组成的对象集合,一般这些对象是对象集合,一般这些对象是属于同一类属于同一类的。当需要的。当需要把消息同时发送给多个对象而不是单个对象时,就把消息同时发送给多个对象而不是单个对象时,就要用多对象这个概念。多对象用多个方框的重叠表要用多对象这个概念。多对象用多个方框的重叠表示。示。1.对象对象 对象这个概念前面已经多次提到,这里主要强对象这个概念前面已经多次提到,这里主要强调调多对象多对象和和主动对象主动对象。协作图的符号(续)协作图的符号(续)多对象的例子多对象的例子 一个对象可能会向同一类的多个对象同时发送一个消息,一个对象可能会向同一类的多个对象同时发送一个消息,例如例如,
32、老师会让多个学生同时交作业。在多对象前面可以加上老师会让多个学生同时交作业。在多对象前面可以加上用用方括号方括号括起来的括起来的条件条件,前面加一个,前面加一个星号星号,用来说明消息发送,用来说明消息发送给多个对象,如下图所示。给多个对象,如下图所示。协作图的符号(续)协作图的符号(续)主动对象主动对象 主动对象是一组属性和一组方法的封装体,其中主动对象是一组属性和一组方法的封装体,其中至少有一个方法至少有一个方法不需要接受消息就能主动执行不需要接受消息就能主动执行(称(称做主动方法)。也就是说,主动对象可以在不接受做主动方法)。也就是说,主动对象可以在不接受外部消息的情况下自己开始一个控制流
33、。外部消息的情况下自己开始一个控制流。在协作图在协作图中,主动对象的表示法除了中,主动对象的表示法除了矩形框边界要加黑加重矩形框边界要加黑加重外,其他方面与一般对象的表示法相同。外,其他方面与一般对象的表示法相同。协作图的符号(续)协作图的符号(续)2.链链 链链用来在协作图中关联对象。它们代表一个来用来在协作图中关联对象。它们代表一个来自类图的关联的实例。自类图的关联的实例。在协作图中,消息显示在链的旁边,一个链上在协作图中,消息显示在链的旁边,一个链上可以有多个消息。在链上可以加一些修饰,如角色可以有多个消息。在链上可以加一些修饰,如角色名、导航(表示链是双向还是单向)、链两端的对名、导航
34、(表示链是双向还是单向)、链两端的对象是否有聚集关系等,但由于链是连接对象的,所象是否有聚集关系等,但由于链是连接对象的,所以链的两端没有多重性标记。以链的两端没有多重性标记。顺序图顺序图顺序图的定义顺序图的定义顺序图的符号顺序图的符号顺序图的消息顺序图的消息顺序图的其他技术顺序图的其他技术帧化顺序图帧化顺序图顺序图的建模方法顺序图的建模方法协作图协作图协作图的定义协作图的定义协作图的符号协作图的符号协作图的消息协作图的消息协作图的建模方法协作图的建模方法第四章第四章 顺序图和协作图顺序图和协作图协作图的符号(续)协作图的符号(续)3.消息消息 消息消息是协作图中对象与对象之间通信的方式。消是
35、协作图中对象与对象之间通信的方式。消息在协作图中显示为一个伴随链接或者关联角色的文息在协作图中显示为一个伴随链接或者关联角色的文本字符串,并带有一个箭头来指示消息沿着关系传递本字符串,并带有一个箭头来指示消息沿着关系传递的方向,如下图所示。的方向,如下图所示。协作图的符号(续)协作图的符号(续)消息还可传递变量或者参数消息还可传递变量或者参数下例说明了对象下例说明了对象Teacher 如何把消息如何把消息AssignGrade传递给对象传递给对象Student,它使用了参数,它使用了参数 Class、Assignment和和Grade,如下图所示。,如下图所示。协作图的符号(续)协作图的符号(
36、续)消息的返回结果消息的返回结果 消息可能是要求某个对象进行计算并返回结果的值消息可能是要求某个对象进行计算并返回结果的值.UML.UML提提供了返回值的表示法。返回值的名字在最左,后跟赋值号供了返回值的表示法。返回值的名字在最左,后跟赋值号 “:”,接着是操作名和操作的参数。对计算商品价格这个,接着是操作名和操作的参数。对计算商品价格这个例子,可以表示成:例子,可以表示成:totalPrice:compute(itemPrice,salesTax)返回值返回值协作图的符号(续)协作图的符号(续)3.1消息的种类消息的种类 协作图中有协作图中有3种类型的消息,它们与前面介绍顺种类型的消息,它们
37、与前面介绍顺序图时的消息类型相同:序图时的消息类型相同:同步消息同步消息 用于对象同步通信,即对象通信在继续用于对象同步通信,即对象通信在继续 下一步之前必须完成前一步。下一步之前必须完成前一步。异步消息异步消息 用于对象异步通信。用于对象异步通信。简单消息简单消息 指示消息类型是同步或异步对于模型不指示消息类型是同步或异步对于模型不 重要。重要。协作图的符号(续)协作图的符号(续)3.2 消息的序列化消息的序列化 要想序列化消息,只需在消息前添加序列要想序列化消息,只需在消息前添加序列ID号。最简单的方法就是把消息按照要执行的顺序号。最简单的方法就是把消息按照要执行的顺序排序,如下图所示。排
38、序,如下图所示。协作图的符号(续)协作图的符号(续)协作图的符号(续)协作图的符号(续)上图不仅显示了上图不仅显示了3个从个从Class对象到对象到Filesystem对对象的消息,而且还对它们进行了编号。这里使用了修象的消息,而且还对它们进行了编号。这里使用了修订编号。在这个协作图中的顺序编号是订编号。在这个协作图中的顺序编号是1,1.1,1.2,1.3,2。1 Teacher对象把对象把LoadClass(Name)消息发送至消息发送至Class对象。对象。1.1 Class对象把对象把 LoadStudents()消息发送至消息发送至 Filesystem对象。对象。1.2 Class对
39、象把对象把LoadClassInfo()消息发送至消息发送至Filesystem对象。对象。1.3 Class对象把对象把LoadRoom()消息发送至消息发送至Filesystem对象。对象。2 Teacher对象把对象把 Addstudent(Name)消息发送到消息发送到 Student对象。对象。练习练习:比较顺序图与协作图比较顺序图与协作图 在这个练习中,将通过对在这个练习中,将通过对ATMATM机取款用例的行为机取款用例的行为描述,比较顺序图与协作图。例如,客户描述,比较顺序图与协作图。例如,客户JoeJoe从从ATMATM机机提取提取2020美金的场景。美金的场景。顺序图顺序图顺
40、序图的定义顺序图的定义顺序图的符号顺序图的符号顺序图的消息顺序图的消息顺序图的其他技术顺序图的其他技术帧化顺序图帧化顺序图顺序图的建模方法顺序图的建模方法协作图协作图协作图的定义协作图的定义协作图的符号协作图的符号协作图的消息协作图的消息协作图的建模方法协作图的建模方法第四章第四章 顺序图和协作图顺序图和协作图协作图的建模方法协作图的建模方法 协作图的建模有协作图的建模有3个基本的步骤:个基本的步骤:1)确定属于协作图的元素。)确定属于协作图的元素。2)建模这些元素之间的结构关系。)建模这些元素之间的结构关系。3)建模实例层的协作图。)建模实例层的协作图。建模分数记录系统的协作图。具体用例是建
41、模分数记录系统的协作图。具体用例是Teacher使用使用 Website登录并且查看学生的分数。登录并且查看学生的分数。协作图的建模方法协作图的建模方法1.1.确定协作图的元素确定协作图的元素 首先,确定协作图中将会包含的元素或者类。从首先,确定协作图中将会包含的元素或者类。从已经描述的用例中可以确定需要已经描述的用例中可以确定需要TeacherTeacher、StudentStudent和和GradeGrade类,其他类是否需要不太清楚。类,其他类是否需要不太清楚。对于分数记录系统,我们需要一个对于分数记录系统,我们需要一个WebsiteWebsite类来类来提供进行交互的场所。还需要一个提
42、供进行交互的场所。还需要一个Database Database 类来提类来提供为学生检索信息的功能。最后,还需要一个供为学生检索信息的功能。最后,还需要一个SecuritySecurity类提供让类提供让TeacherTeacher登录系统的手段,如下图登录系统的手段,如下图所示。所示。协作图的建模方法协作图的建模方法分数记录系统中的类分数记录系统中的类Teacher 类如何与类如何与Student类交互?类交互?Student类从哪里获取其数据?类从哪里获取其数据?Teacher类如何登录系统?通过这些类如何登录系统?通过这些问题和其他问题,我们就会认识到需问题和其他问题,我们就会认识到需要
43、更多的类才能完成目标。要更多的类才能完成目标。:Teacher:Student:Grade:Security:Database:Website协作图的建模方法协作图的建模方法2 2建模类之间关系建模类之间关系 下一步就是确定这些类之间的关系。在这一步下一步就是确定这些类之间的关系。在这一步中,着手建模早期阶段的协作图,在类角色之间添中,着手建模早期阶段的协作图,在类角色之间添加链接和关联角色,如下图所示。加链接和关联角色,如下图所示。协作图的建模方法协作图的建模方法协作图的建模方法协作图的建模方法3.3.建模实例层协作图建模实例层协作图 最后一步就是在实例层建模协作图。这意味着需最后一步就是在实例层建模协作图。这意味着需要把类角色修改为对象实例,并且指定执行用例的消要把类角色修改为对象实例,并且指定执行用例的消息序列。这一步需要用到描述对象之间链接的消息标息序列。这一步需要用到描述对象之间链接的消息标记符,包括控制点、迭代、创建实例,以及特定消息记符,包括控制点、迭代、创建实例,以及特定消息类型的规范。类型的规范。协作图的建模方法协作图的建模方法练习:建模储户在ATM机上存钱操作的协作图。1、确定系统中的类协作图的建模方法2、确定类之间关系3、对象实例之间协作关系
限制150内