版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-101上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-102w软件动态行为软件动态行为w交互与交互图交互与交互图w顺序图顺序图w顺序图的组织顺序图的组织w协同图协同图w建模指南建模指南上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-103w用交互描述软件的动态行为用交互描述软件的动态行为 用 例 :浏 览 位 图 用 户 位 图 浏 览 显 示 窗 口 动 作 描 述 : 用 户 在 位 图 区 域 内 按 下 鼠 标 左 键 拖 动 , 则图 像 随 鼠 标 移 动
2、, 直 到 用 户 释 放 左 键 为止 . 上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-104w描述系统的边界:首先得出用例图,每一个用例都对应描述系统的边界:首先得出用例图,每一个用例都对应系统一系列动作,序列最初是用文本(形式的或非形式系统一系列动作,序列最初是用文本(形式的或非形式的)的方式描述,这样的描述精确性较差,不标准的)的方式描述,这样的描述精确性较差,不标准w在在UML里,直观的、标准的和面向对象的方式是:里,直观的、标准的和面向对象的方式是:交互和交互图交互和交互图活动图活动图(Activity diagram)状态机图(状态机图(State
3、machine diagram) 描述软件系统的动态行为描述软件系统的动态行为(行为视图)行为视图)上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-106w软件系统中的任务是通过对象之间的合作来完成的软件系统中的任务是通过对象之间的合作来完成的w对象之间的合作是通过对象之间的消息的传递实现的。对象之间的合作是通过对象之间的消息的传递实现的。对象之间的合作在对象之间的合作在UML里被称为交互,交互是为达某一里被称为交互,交互是为达某一目的而在一组对象之间进行消息交换的行为目的而在一组对象之间进行消息交换的行为w
4、交互可以对软件系统为实现某一任务而必须实施的动态交互可以对软件系统为实现某一任务而必须实施的动态行为进行建模。行为进行建模。w交互的所包含的交互的所包含的UML建模元素包括:建模元素包括:对象对象消息消息w它们必须通过某种载体表现出来,在它们必须通过某种载体表现出来,在UML中,此载体就中,此载体就是交互图是交互图 上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-107w交互图描述了一个交互交互图描述了一个交互, 其中包括了其中包括了一系列的对象一系列的对象及其及其关关系系以及通过这些关系在以及通过这些关系在对象之间传递的消息对象之间传递的消息。w交互图可分为两类:交
5、互图可分为两类: 顺序图顺序图 协同图协同图w它们在它们在语义上是等价语义上是等价的,这意味顺序图和协同图内部包的,这意味顺序图和协同图内部包含的信息是相同的,因此两图可以互相推导。如果通过含的信息是相同的,因此两图可以互相推导。如果通过工具,它们可以互相自动转换,交互图可以为软件系统工具,它们可以互相自动转换,交互图可以为软件系统的下列构成的对象的动态行为进行建模:的下列构成的对象的动态行为进行建模:类类接口接口部件部件节点节点上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-108w交互图中的这些对象(实例)可以处于一个或多交互图中的这些对象(实例)可以处于一个或多
6、个场景中,以实现相应的用例所规定的任务个场景中,以实现相应的用例所规定的任务w通过用交互图进行建模,可以对这些对象涉及的通过用交互图进行建模,可以对这些对象涉及的各对象的动态特性进行:各对象的动态特性进行:n视化视化n说明说明n建造建造n建档建档上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-109w在考察一个系统的对象的交互时,通常从顺序图在考察一个系统的对象的交互时,通常从顺序图开始,然后将顺序图转换为协同图,以分析系统开始,然后将顺序图转换为协同图,以分析系统在结构方面应该具备的特点在结构方面应该具备的特点w用软件实现前图指定的动态行为,首先考虑系统用软件实现前
7、图指定的动态行为,首先考虑系统外部和系统打交道的对象,已经在图中标识:外部和系统打交道的对象,已经在图中标识:活动者:活动者:“用户用户”和和“显示窗口显示窗口”将这两个外部对象描绘在交互图上将这两个外部对象描绘在交互图上之后,十分自然地,也是之后,十分自然地,也是“面向对象面向对象”地考虑在系统中应该如地考虑在系统中应该如何设置担负不同职责的软件何设置担负不同职责的软件“角色角色”,它们共同完成这一任务,它们共同完成这一任务,这如同当人们需要互相协同来完成某一工作时,需要进行分工这如同当人们需要互相协同来完成某一工作时,需要进行分工一样。这样的一样。这样的“角色角色”,在,在UML中,被称为
8、对象中,被称为对象 上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1010 : 显 示 窗 口 接 收 鼠 标 消 息 系 统 数 据 处 理 鼠 标 消 息 : 用 户 U s e r P re s s L B D o w n P a s s L B D o w n M e s s a g e Is C u rs o r in s id e im a g e S e t S e le c te d F la g U s e r M o v e r m o u s e w h ile L B D O W N P a s s th e m e s s a g e Is
9、 S e le c te d flo a g s e t? U P d a te d a ta c a lc u la te n e w d a ta U p d a te D is p la y 上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1011w具有相同的结构和行为的所有对象,被抽象为类,具有相同的结构和行为的所有对象,被抽象为类,这是这是UML中典型的中典型的“类类/实例实例”两分法两分法w在在UML中,对象和类使用相同的图符中,对象和类使用相同的图符(矩形矩形)来来标识,为了区分对象和类,在标识,为了区分对象和类,在对象的名字对象的名字下面用下面用下划线
10、下划线以示区别。以示区别。w活动者是类的变体(活动者是类的变体(stereotype),在交互图),在交互图里,当变体以对象出现时,将保持此变体的图里,当变体以对象出现时,将保持此变体的图符符 。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1012w在前面的用例中,用户和系统的交互,可以分为在前面的用例中,用户和系统的交互,可以分为三个连续执行的动作三个连续执行的动作1、用户在位图区域内按下鼠标左键;、用户在位图区域内按下鼠标左键;2、保持左键按下拖动鼠标;、保持左键按下拖动鼠标;3、释放鼠标左键。、释放鼠标左键。w这三个动作构成了活动者和系统的联系,每一动这三个
11、动作构成了活动者和系统的联系,每一动作都相当于向系统发出了一个命令,系统必须在作都相当于向系统发出了一个命令,系统必须在内部执行相应的操作,以正确响应这命令内部执行相应的操作,以正确响应这命令w这命令,在这命令,在UML里被称为里被称为消息(消息(message) 上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1013w消息在对象间传递,用于启动目标对象内部的某些操作消息在对象间传递,用于启动目标对象内部的某些操作w在考虑系统内部对象的设置时,出于系统在考虑系统内部对象的设置时,出于系统“外壳外壳”与系与系统内核的区分,专设一个对象用于接收用户传来的鼠标统内核的区分
12、,专设一个对象用于接收用户传来的鼠标消息,这就是消息,这就是“接收鼠标消息接收鼠标消息”这一对象的用途这一对象的用途w该对象收到操作系统传来鼠标消息后,把它传给为该对象收到操作系统传来鼠标消息后,把它传给为“浏浏览位图览位图”这个工具专设的对象这个工具专设的对象“处理鼠标消息处理鼠标消息”,它把,它把由操作系统传来的无特定语义的鼠标消息,解释为由操作系统传来的无特定语义的鼠标消息,解释为“浏浏览位图览位图”赋予它们的语义,并发送消息给赋予它们的语义,并发送消息给bmpviewer的的系统内核里的对象(系统数据),进行具体的执行系统内核里的对象(系统数据),进行具体的执行上海交通大学计算机科学与
13、工程系上海交通大学计算机科学与工程系2022-4-1014 : 显 示 窗 口 接 收 鼠 标 消 息 系 统 数 据 处 理 鼠 标 消 息 : 用 户 U s e r P re s s L B D o w n P a s s L B D o w n M e s s a g e Is C u rs o r in s id e im a g e S e t S e le c te d F la g U s e r M o v e r m o u s e w h ile L B D O W N P a s s th e m e s s a g e Is S e le c te d flo a g
14、 s e t? U P d a te d a ta c a lc u la te n e w d a ta U p d a te D is p la y 上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1016w顺序图的定义:顺序图的定义:顺序图是交互图的一种,它强调的是消息发顺序图是交互图的一种,它强调的是消息发送的时间的先后顺序送的时间的先后顺序w顺序图的构成顺序图的构成参加交互的各对象在顺序图的顶端沿水平方参加交互的各对象在顺序图的顶端沿水平方向排列,对象之间传递的消息用箭头表示,向排列,对象之间传递的
15、消息用箭头表示,水平放置,沿垂直方向排列水平放置,沿垂直方向排列在垂直方向上越靠近顺序图顶端的消息越先在垂直方向上越靠近顺序图顶端的消息越先发送,从而给出了消息被执行的先后顺序的发送,从而给出了消息被执行的先后顺序的明确而直观的表示明确而直观的表示 上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1017w每个对象的底部中心都绘有一个垂直虚线,当一每个对象的底部中心都绘有一个垂直虚线,当一个对象向另一个对象发送消息时,消息始于发送个对象向另一个对象发送消息时,消息始于发送对象底部的虚线,终止于接受对象底部的虚线,对象底部的虚线,终止于接受对象底部的虚线, 这条虚线被称
16、为这条虚线被称为对象生存线对象生存线(object lifeline)w对象生存线代表一个对象在一个时间段内的存在对象生存线代表一个对象在一个时间段内的存在w如果在顺序图上某一对象收到了创建消息或销毁如果在顺序图上某一对象收到了创建消息或销毁消息,则此对象的生存期始于它收到创建消息的消息,则此对象的生存期始于它收到创建消息的时刻,终止于收到销毁消息的时刻时刻,终止于收到销毁消息的时刻 上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1018w在在UML里,由消息引发的动作的执行过程被描里,由消息引发的动作的执行过程被描述为述为控制焦点控制焦点w控制焦点代表一个对象直接
17、地或通过一个子过程控制焦点代表一个对象直接地或通过一个子过程间接地执行一个动作的那段时间间接地执行一个动作的那段时间w绘制:它由位于对象生存线上的一个绘制:它由位于对象生存线上的一个窄长方形窄长方形代代表,控制焦点长方形的顶端代表动作的开始时刻,表,控制焦点长方形的顶端代表动作的开始时刻,底端代表动作的结束时刻。底端代表动作的结束时刻。w控制焦点可以理解为是控制焦点可以理解为是C语言中一对花括弧语言中一对花括弧(“”)内的内容)内的内容上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1019w动作的执行过程可以引起其它消息的发送,从而动作的执行过程可以引起其它消息的发
18、送,从而对应子动作的执行,就产生了控制焦点的嵌套对应子动作的执行,就产生了控制焦点的嵌套w控制焦点的嵌套的表示:控制焦点的嵌套的表示:n另一个控制焦点向右叠放在父控制焦点上,子控制焦另一个控制焦点向右叠放在父控制焦点上,子控制焦点中消息发送的顺序号可以用过程顺序号表示点中消息发送的顺序号可以用过程顺序号表示 n对象生存线和控制焦点,是顺序图所特有的,它不在对象生存线和控制焦点,是顺序图所特有的,它不在协同图里出现协同图里出现 上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1020 : View c : C ontroller : C atche 1. clickA
19、t(p) 1.1. I=findA t(p) 1.2. putR ecentP ick(I) 控 制 焦 点 对 象 生 存 线 控 制 焦 点 的 嵌 套 上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1021w在在UML里,里,对象对象指的是某一种抽象的坚实存在,它是封装了状态和指的是某一种抽象的坚实存在,它是封装了状态和行为的具有明确边界和身份的实体行为的具有明确边界和身份的实体w具有相同的结构和行为的对象,具有相同的结构和行为的对象, 在在UML里被称为里被称为类类,因此,对象应,因此,对象应该和某一类相对应该和某一类相对应wUML里,对象使用与其对应的类一
20、样的图符,为了使对象的图符和里,对象使用与其对应的类一样的图符,为了使对象的图符和类的图符相区别,图符中对象的名字下面加有下划线类的图符相区别,图符中对象的名字下面加有下划线w 对象的名字对象的名字在对象的名字后面标上此对象的实现类的名字,对象名和类名在对象的名字后面标上此对象的实现类的名字,对象名和类名之间用冒号分开之间用冒号分开对象名可以缺失,只写此对象对应的实现类的名字,对象名可以缺失,只写此对象对应的实现类的名字, 表示它是表示它是此类的一个对象此类的一个对象标记类而不标记对象名的对象称为标记类而不标记对象名的对象称为匿名对象匿名对象(anonymous object);标记名字的对象
21、称为);标记名字的对象称为记名对象记名对象(named object)。)。 上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1022 对象(记名对象) 对象名 : 类匿名对象 : 类上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1023w对象类角色的矩形框图一般位于顺序图的顶部,对象类角色的矩形框图一般位于顺序图的顶部,它们的排列顺序一般不重要,但是为了图面的清它们的排列顺序一般不重要,但是为了图面的清晰,应把晰,应把交互频繁的对象交互频繁的对象尽可能的靠拢,把尽可能的靠拢,把初始初始化化整个交互的对象放置在最左边整个交互的对象放置在最左
22、边w如果一个对象改变了它的属性值、状态或角色,如果一个对象改变了它的属性值、状态或角色,则需在生命线上该对象的改变点处放置该对象的则需在生命线上该对象的改变点处放置该对象的一个一个图标副本图标副本,并标出有关的变更,并标出有关的变更上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1024w对象间的互相合作与交流表现为一个对象以某种对象间的互相合作与交流表现为一个对象以某种方式启动另一个对象的活动,这种交流在方式启动另一个对象的活动,这种交流在UML里被定义为里被定义为消息消息w消息是对对象间的一种信息的通讯的描述,此信消息是对对象间的一种信息的通讯的描述,此信息期望在
23、通讯完成之后,某一活动会随之发生息期望在通讯完成之后,某一活动会随之发生w消息相当于向目标对象发送了一条命令,此命令消息相当于向目标对象发送了一条命令,此命令启动了目标对象的一个动作,动作一般通过函数启动了目标对象的一个动作,动作一般通过函数调用调用(call)启动,但也可以通过其它方式)启动,但也可以通过其它方式 上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1025w消息所能采取的形式:消息所能采取的形式:调用(调用(call):启动一个对象里的操作。操作是对象:启动一个对象里的操作。操作是对象的类所能提供的服务的实现。调用消息一般是顺序执的类所能提供的服务的实
24、现。调用消息一般是顺序执行的行的返回返回(return):操作向调用者返回一个值:操作向调用者返回一个值发送发送(send):向一个对象发送一个信号。发送消息是:向一个对象发送一个信号。发送消息是异步异步消息,意味着发送消息的对象在发送了消息给目消息,意味着发送消息的对象在发送了消息给目标对象后,不论目标对象是否接受此消息,它都继续标对象后,不论目标对象是否接受此消息,它都继续进行下一消息的发送进行下一消息的发送创建创建(create):此消息的发送导致目标对象被创建:此消息的发送导致目标对象被创建销毁销毁(destroy):此消息的发送导致目标对象被销毁:此消息的发送导致目标对象被销毁 上海
25、交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1026 对象 1 对象 2 : class CallMe(String) 调用 创建 销毁 返回发送 上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1027w消息的表示消息的表示 n在在UML里,消息用箭头表示,此箭头从发送消息的对里,消息用箭头表示,此箭头从发送消息的对象指向接收消息的对象象指向接收消息的对象n在消息的各种形式中,创建和销毁消息,用消息的变在消息的各种形式中,创建和销毁消息,用消息的变体来表示体来表示n返回返回消息,用带虚线的箭头表示消息,用带虚线的箭头表示n发送发送消息,发送
26、消息又称为异步消息,消息,发送消息又称为异步消息, 用半箭头表示用半箭头表示n调用调用消息,调用消息又称为简单(消息,调用消息又称为简单(simple)消息,用)消息,用整箭头表示。整箭头表示。 上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1028消息可以有名字,它列在消息的箭头的直线消息可以有名字,它列在消息的箭头的直线上上如果对象的实现类已经确定,则此名字可以如果对象的实现类已经确定,则此名字可以标记为实现类的某一操作的定义,例如,标记为实现类的某一操作的定义,例如,C/C+语言里的函数定义等语言里的函数定义等上海交通大学计算机科学与工程系上海交通大学计算机科
27、学与工程系2022-4-1029w消息的发送是有顺序的,此顺序由它在顺序图垂直方向上的位置决消息的发送是有顺序的,此顺序由它在顺序图垂直方向上的位置决定,垂直方向靠近顺序图的顶端的消息先执行,靠近顺序图底部的定,垂直方向靠近顺序图的顶端的消息先执行,靠近顺序图底部的消息后执行,因此每一消息都有一消息后执行,因此每一消息都有一顺序号顺序号w消息的顺序号,此顺序号可前缀于消息的名字前面,它们之间用冒消息的顺序号,此顺序号可前缀于消息的名字前面,它们之间用冒号分隔,顺序号分为两种号分隔,顺序号分为两种:单调顺序号单调顺序号(flat sequence):单调顺序号严格按照消息的发送顺单调顺序号严格按
28、照消息的发送顺序排列,如序排列,如:1,2,3,等等等等过程顺序号过程顺序号(procedual sequence):过程顺序号是嵌入式的,当过程顺序号是嵌入式的,当一个消息启动了另一个消息序列时一个消息启动了另一个消息序列时, 此消息序列内的各消息就可此消息序列内的各消息就可以重新开始编号。以重新开始编号。 如:消息如:消息2发送后发送后,启动了其后的一系列消息启动了其后的一系列消息,则这些消息就可以编号为则这些消息就可以编号为2.1, 2.2, 2.3, ,等等,等等。 上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1030C : CALLER : Teleph
29、one : Exchange1: liftHandset( )2: assertCall( ) : Viewc : Controller : Catche1. clickAt(p)1.1. I=findAt(p)1.2. putRecentPick(I)单调顺序过程顺序上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1031w消息内容标签格式:消息内容标签格式:n序号序号 守护条件守护条件*循环循环 返回表返回表:=操作名操作名(参数表参数表)wGuard Condition括在方括号中,含有一个布括在方括号中,含有一个布尔条件表达式。只有当其守护条件被满足时才能尔条
30、件表达式。只有当其守护条件被满足时才能发送该消息。该条件可以省略,表示无条件发送发送该消息。该条件可以省略,表示无条件发送w“*”后跟一个括在方括号中的数字,表示该消后跟一个括在方括号中的数字,表示该消息发送的重复次数,如果没有数字,表示次数未息发送的重复次数,如果没有数字,表示次数未定定上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1032上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1033w对系统的行为建模,顺序图可以采用两个抽象层对系统的行为建模,顺序图可以采用两个抽象层次:次:n说明层(说明层(Specification lev
31、el)n实例层(实例层(Instance Level)上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1034说明层实例层上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1035w如果对象在交互中创建,则该对象的生命线从收如果对象在交互中创建,则该对象的生命线从收到标有构造型到标有构造型的创建消息之时开的创建消息之时开始始w一个对象可以在交互中销毁,如果一个对象是在一个对象可以在交互中销毁,如果一个对象是在交互中销毁的,则该对象的生命线就从收到一个交互中销毁的,则该对象的生命线就从收到一个标有构造型标有构造型destroy的摧毁消息之时终止。
32、的摧毁消息之时终止。对象销毁的标志是在其生命线的端部标上一个对象销毁的标志是在其生命线的端部标上一个“”上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1036上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1037w同步消息:同步消息:n发送者把控制传递给消息的接收者,然后暂停活动,发送者把控制传递给消息的接收者,然后暂停活动,等待消息接收者放弃或返回控制等待消息接收者放弃或返回控制n同步消息的接收者必须是一个被动对象,它是一个需同步消息的接收者必须是一个被动对象,它是一个需要通过消息的驱动才能执行动作的对象要通过消息的驱动才能执行动作的对
33、象n同步消息用一条带全箭头的箭线表示。一般一个同步同步消息用一条带全箭头的箭线表示。一般一个同步消息必有一个配对的返回消息,在顺序图中消息必有一个配对的返回消息,在顺序图中返回消息返回消息可以省略可以省略上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1038上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1039w异步消息:异步消息:n发送者通过消息把信号传递给消息的接收者,然后继发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回信息或控制。异步续自己的活动,不等待接受者返回信息或控制。异步消息的接收者执行所请求的
34、操作,操作完成后可以发消息的接收者执行所请求的操作,操作完成后可以发回信息给异布消息的发送者回信息给异布消息的发送者n两者并发工作两者并发工作n接受者是一个主动对象接受者是一个主动对象上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1040w从一个对象的同一个时间点发出多个消息的情况,从一个对象的同一个时间点发出多个消息的情况,每一个消息都有保安条件。依据这些保安条件是每一个消息都有保安条件。依据这些保安条件是否互斥,分支结构可以分为条件分支或并发分支否互斥,分支结构可以分为条件分支或并发分支w水平箭头表示消息瞬时发生水平箭头表示消息瞬时发生w消息箭头斜向下,表示需要
35、一定的传输时间,称消息箭头斜向下,表示需要一定的传输时间,称为非瞬时消息,可以在消息上赋上传输时间,也为非瞬时消息,可以在消息上赋上传输时间,也可以在消息的发出点和接收点分别标出消息发出可以在消息的发出点和接收点分别标出消息发出的时间和消息接收的时间的时间和消息接收的时间上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1041w一组消息被多次发出一组消息被多次发出w在顺序图中循环可以用一组消息包含在一个大矩在顺序图中循环可以用一组消息包含在一个大矩形框中表示,这些消息将循环重复发送,循环的形框中表示,这些消息将循环重复发送,循环的继续或退出由一个出口条件控制继续或退出
36、由一个出口条件控制上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1042上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1043w自调用:对象调用自己自调用:对象调用自己w当一个对象发送一个异步消息调用另一个对象时,当一个对象发送一个异步消息调用另一个对象时,注册一个它关心的特定事件类型或请求完成某项注册一个它关心的特定事件类型或请求完成某项操作,然后继续自己的其它从动作,此时发送对操作,然后继续自己的其它从动作,此时发送对象和接收对象并行工作。当指定的事件类型发生象和接收对象并行工作。当指定的事件类型发生或所要求的操作已完成时,消息接收对
37、象立即发或所要求的操作已完成时,消息接收对象立即发送一个异步消息给原调用者。它与返回不同送一个异步消息给原调用者。它与返回不同上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1044w动作动作(Action):当一个对象收到了消息后,此对象把消:当一个对象收到了消息后,此对象把消息当做执行某种动作的命令息当做执行某种动作的命令w动作是一系列的可执行的元计算(动作是一系列的可执行的元计算(atomic computation)的执行,这些元计算的执行可导致系统)的执行,这些元计算的执行可导致系统状态的变化或某一值的返回状态的变化或某一值的返回w函数的执行就是动作的典型的
38、例子函数的执行就是动作的典型的例子w动作有明确的开始时刻和终止时刻动作有明确的开始时刻和终止时刻w在动作的执行过程中,会导致其它一系列的消息的顺序在动作的执行过程中,会导致其它一系列的消息的顺序发送发送w 一个典型的例子是一个典型的例子是: 函数调用其它函数函数调用其它函数上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1046w一个一个Use Case可以有多个顺序图,通过一个或可以有多个顺序图,通过一个或多个顺序图可以显示驱动用例的对象交互多个顺序图可以显示驱动用例的对象交互w一般对主事件流有一个顺序图,
39、对独立的子流分一般对主事件流有一个顺序图,对独立的子流分别设置一个顺序图。一般的组织方法是对主事件别设置一个顺序图。一般的组织方法是对主事件流设置一个顺序图,而对用例中的每一个独立的流设置一个顺序图,而对用例中的每一个独立的子流设置一个顺序图子流设置一个顺序图上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1047w在顺序图中可以采用以下方式使用在顺序图中可以采用以下方式使用对象对象: 既可表示类又可表示对象,因此,生命线可以表示类或者对象既可表示类又可表示对象,因此,生命线可以表示类或者对象的行为,但是一般而言,生命线表示该类的所有对象的行为,但是一般而言,生命线表
40、示该类的所有对象对象的类可以不描述。一般,你可以针对对象来建立顺序图,对象的类可以不描述。一般,你可以针对对象来建立顺序图,然后再针对它们的类进行描述然后再针对它们的类进行描述对象也可不命名,但是如果你想区分相同类的不同对象,那么对象也可不命名,但是如果你想区分相同类的不同对象,那么必须命名必须命名同一类可以有不同的生命线代表一个类的不同的对象,但是,同一类可以有不同的生命线代表一个类的不同的对象,但是,你必须给以这些对象不同的名字你必须给以这些对象不同的名字代表类的生命线能够与代表类对象的生命线可以并存代表类的生命线能够与代表类对象的生命线可以并存上海交通大学计算机科学与工程系上海交通大学计
41、算机科学与工程系2022-4-1048w活动者活动者一般,活动者的实例由顺序图中第一条(最一般,活动者的实例由顺序图中第一条(最左)的生命线来表示,以作为交互的调用者左)的生命线来表示,以作为交互的调用者如果在相同的图中有几个活动者的实例,尽如果在相同的图中有几个活动者的实例,尽量将它们放在最左边,或者最右边量将它们放在最左边,或者最右边上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1049w消息消息消息可以暂时不指派,意味着它的名字可以消息可以暂时不指派,意味着它的名字可以是一个零时的名字来描述消息的总体含义,是一个零时的名字来描述消息的总体含义,而不是对接收对象
42、的操作的名字,我们可以而不是对接收对象的操作的名字,我们可以在以后将消息命名为对消息目标对象的操作在以后将消息命名为对消息目标对象的操作上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1050w脚本(脚本(Scripts)脚本可以是顺序图中的事件流的文本描述脚本可以是顺序图中的事件流的文本描述脚本放在生命线的左侧,也可以把脚本依附脚本放在生命线的左侧,也可以把脚本依附在消息上在消息上上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1051w事件流或者部分事件流的集中控制意味着少数对事件流或者部分事件流的集中控制意味着少数对象控制了与其它对象间
43、的消息发送流象控制了与其它对象间的消息发送流w这些控制对象确定了用例中其它对象被激活的次这些控制对象确定了用例中其它对象被激活的次序序w其它对象之间的交互很少或者不存在其它对象之间的交互很少或者不存在上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1052w在回收机系统中,用例在回收机系统中,用例Print Daily Report跟踪跟踪回收的对象的数目和类型,并记录在收据上。回收的对象的数目和类型,并记录在收据上。报报告产生控制对象告产生控制对象决定了累计结果产生和记录的顺决定了累计结果产生和记录的顺序序板条箱Centralized Control 有何优缺点?有
44、何优缺点?上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1053w这是集中控制行为的例子。控制结构是集中式的,因为这是集中控制行为的例子。控制结构是集中式的,因为事件流中不同子事件阶段是彼此独立的事件流中不同子事件阶段是彼此独立的w该方法的主要优点是每一个对象必须跟踪下一个对象的该方法的主要优点是每一个对象必须跟踪下一个对象的状态状态w为了改变子事件阶段的次序,只需要对控制对象进行修为了改变子事件阶段的次序,只需要对控制对象进行修改改w我们也可以容易地添加另外一个子事件阶段,例如如果我们也可以容易地添加另外一个子事件阶段,例如如果添加了新的回收物品类型。另外一个优点
45、是你可以在其添加了新的回收物品类型。另外一个优点是你可以在其它用例中重用子事件阶段,因为行为的次序并没有放入它用例中重用子事件阶段,因为行为的次序并没有放入到对象内部到对象内部上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1054w分布式控制的情形是各个参与的对象之间直接与分布式控制的情形是各个参与的对象之间直接与其它对象进行通信,而不是通过一个或多个控制其它对象进行通信,而不是通过一个或多个控制对象。对象。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1055w在用例在用例Send Letter中,某人通过邮局发送一封信到其中,某人通过
46、邮局发送一封信到其它国家。该信件首先发送给收信人的国家,在该国家中,它国家。该信件首先发送给收信人的国家,在该国家中,信件发送到特定的城市,在该城市中,将信件发送给收信件发送到特定的城市,在该城市中,将信件发送给收信人的家里信人的家里上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1056w用例的行为是一个分布式的事件流。各个子事件用例的行为是一个分布式的事件流。各个子事件阶段混合在一起。信件的发送者说阶段混合在一起。信件的发送者说“把信件发给把信件发给某人某人”,他不需要知道信件是如何发送给另外一,他不需要知道信件是如何发送给另外一个国家或者城市的细节(如果某人把信
47、件寄给同个国家或者城市的细节(如果某人把信件寄给同一国家,并不是所有的操作都会发生)一国家,并不是所有的操作都会发生)上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1057w采用的控制的类型取决于具体的应用。通常,在采用的控制的类型取决于具体的应用。通常,在开发中我们需要将各个任务指派给各个对象开发中我们需要将各个任务指派给各个对象w集中式控制的事件流的顺序图的形状是集中式控制的事件流的顺序图的形状是 “叉型叉型”的,而控制结果如果是分布式的,那么顺序图是的,而控制结果如果是分布式的,那么顺序图是阶梯型阶梯型上海交通大学计算机科学与工程系上海交通大学计算机科学与工程
48、系2022-4-1058上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1059w在下面的情形中,采用分布式结构比较合适:在下面的情形中,采用分布式结构比较合适:子事件阶段紧密耦合子事件阶段紧密耦合: 构成构成part-of或者或者consists-of层次层次, 例如例如Country - State - City; 构成一个信息层次构成一个信息层次, 例如例如CEO - Division Manager - Section Manager; 代表一个固定的时序进度代表一个固定的时序进度 (子事件阶段总是以相同的顺序执子事件阶段总是以相同的顺序执行行), 例如例如A
49、dvertisement - Order - Invoice -Delivery - Payment构成一个概念继承层次构成一个概念继承层次, 例如例如Animal - Mammal - Cat. 封装,对功能进行抽象,有助于用户想使用整个功能,因为在封装,对功能进行抽象,有助于用户想使用整个功能,因为在分布结构中,功能的掌握是很困难的分布结构中,功能的掌握是很困难的 上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1060w下面的情形采用集中结构下面的情形采用集中结构: 如果子事件阶段的执行次序可能发生改变如果子事件阶段的执行次序可能发生改变如果希望插入新的子事件阶
50、段如果希望插入新的子事件阶段如果希望将部分功能作为单独的部分进行重如果希望将部分功能作为单独的部分进行重用用上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1062w协同图是交互图的另一种表现形式协同图是交互图的另一种表现形式w它在语义上和交互图是等价的它在语义上和交互图是等价的 连 接 : V iewc : C on t ro lle r : C a tc h e1 . c lic k A t(p)1 . 1. I= fin dA t(p )1 . 2 . p u tR e c e n tP ic k (I
51、)消息上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1063w协同图强调的是参加一个交互的协同图强调的是参加一个交互的各对象的组织各对象的组织。w协同图的构成:协同图的构成:对象对象对象由带有下划线的对象名字和它的类名表示,中间用冒号分开对象由带有下划线的对象名字和它的类名表示,中间用冒号分开(objectname : classname)在协同图中可以有下列方式使用对象在协同图中可以有下列方式使用对象: 对象的类没有指定,一般我们在协同图中首先指定一个对象,然后是对象的类没有指定,一般我们在协同图中首先指定一个对象,然后是它们的类它们的类. 对象可以不被命名,如果
52、你想区分相同类的不同对象,你必须命名对象可以不被命名,如果你想区分相同类的不同对象,你必须命名如果类总是参与协同,类本身可以作为协同图的成员如果类总是参与协同,类本身可以作为协同图的成员活动者活动者一般,协同图中的活动者实例是交互的调用者。如果在图中有几个活动者一般,协同图中的活动者实例是交互的调用者。如果在图中有几个活动者实例,把它们放在图的周边实例,把它们放在图的周边连接连接及在此连接上传递的及在此连接上传递的消息消息上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1064w连接连接(link)的定义:在的定义:在UML里,连接里,连接(link)被定义为对象之间
53、的语被定义为对象之间的语义联系。义联系。连接是类之间的关联关系实例连接是类之间的关联关系实例在顺序图中,两个对象之间有消息传递意味这它们之间在语义在顺序图中,两个对象之间有消息传递意味这它们之间在语义上存在着联系,所以它们的对象之间存在着连接关系上存在着联系,所以它们的对象之间存在着连接关系反之,只要对象之间存在着连接关系,就可以在它们之间发送反之,只要对象之间存在着连接关系,就可以在它们之间发送消息消息w连接的表示连接的表示在协同图上,连接用对象之间相连的直线来表示在协同图上,连接用对象之间相连的直线来表示连接可以有名字,它标在表示连接的直线上连接可以有名字,它标在表示连接的直线上如果有消息
54、借助此连接关系传递,把消息的图符沿直线方向绘如果有消息借助此连接关系传递,把消息的图符沿直线方向绘制,消息的箭头指向接受消息的对象制,消息的箭头指向接受消息的对象由于仅从图符的绘制上无法在协同图上读出消息发送的顺序,由于仅从图符的绘制上无法在协同图上读出消息发送的顺序,所以通常在消息上保留对应的顺序图的消息顺序号所以通常在消息上保留对应的顺序图的消息顺序号 上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1065w连接的连接的通路通路(path)w连接表明两个对象之间有语义连接,也意味着两对象之连接表明两个对象之间有语义连接,也意味着两对象之间是可以互相访问的,但具体
55、是通过什么方式使两个对间是可以互相访问的,但具体是通过什么方式使两个对象成为互相可见象成为互相可见?w两对象之间的连接可以有多种形式。例如两对象之间的连接可以有多种形式。例如:通过类的成员变量使对象可见通过类的成员变量使对象可见使两对象位于程序的全局使它们互相可见。使两对象位于程序的全局使它们互相可见。使两对象位于局部作用域使它们互相可见。使两对象位于局部作用域使它们互相可见。wUML为连接关系指定了四种特定的变体来描述对象连接为连接关系指定了四种特定的变体来描述对象连接的方式,这四种变体统一称为通路(的方式,这四种变体统一称为通路(path)w通路用于分别指定位于连接两端的对象的可见方式通路
56、用于分别指定位于连接两端的对象的可见方式上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1066w这四种变体是(这四种变体是( 通路的四种形式):通路的四种形式):1Field: 对象能被另一个对象看见,是由于此对象是另一个对对象能被另一个对象看见,是由于此对象是另一个对象的一部分。例如,如果一个对象是另一个对象的成员变量,象的一部分。例如,如果一个对象是另一个对象的成员变量,那么另一个对象肯定可以访问此对象。那么另一个对象肯定可以访问此对象。Filed路径有时又被称为路径有时又被称为自引用(自引用(self)路径)路径2. Parameter(参数):对象能被另一个
57、对象看见,(参数):对象能被另一个对象看见, 是因为是因为此对象是另一对象的某一操作的参数此对象是另一对象的某一操作的参数3Local(局部):此对象能被另一对象看见,是因为此对象(局部):此对象能被另一对象看见,是因为此对象存在于另一对象的局部作用域中。例如:某一对象是另一对象存在于另一对象的局部作用域中。例如:某一对象是另一对象的某个函数的局部变量,就可以用此路径描述的某个函数的局部变量,就可以用此路径描述4Global(全局):此对象能被另一对象看见,是因为此对象(全局):此对象能被另一对象看见,是因为此对象存在于全局作用域中存在于全局作用域中w与消息顺序号不同,通路和连接只能在协同图里
58、描绘与消息顺序号不同,通路和连接只能在协同图里描绘上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1067 : Viewc : Controller : Catche1.1. I=findAt(p)G1. clickAt(p)L1.2. putRecentPick(I)上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1068w由于协同图的格式,它们更适合于分析活动由于协同图的格式,它们更适合于分析活动w协同图更适合于少数对象之间的简单交互。当对象和消协同图更适合于少数对象之间的简单交互。当对象和消息的数目增加后,图形就变得更难读了。息的数目增
59、加后,图形就变得更难读了。w除此之外,该图也很难表示另外的描述信息,例如时序除此之外,该图也很难表示另外的描述信息,例如时序信息,决策点,或者其它非结构化的信息,这些比较容信息,决策点,或者其它非结构化的信息,这些比较容易作为标注加到顺序图中易作为标注加到顺序图中上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1069w我们可以对用例的事件流的我们可以对用例的事件流的不同变种不同变种画一个协同画一个协同图图上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-4-1071w交互图是连接系统边界和系统内部的重要桥梁交互图是连接系统边界和系统内部的重要桥梁w当一个待建造的系统的当一个待建造的系统的需求分析需求分析由由用例图用例图描述清描述清楚之后,交互图决定了楚之后,交互图决定了系统的动态行为系统的动态行为,以及为,以及为实现此动态行为系统应具备的实现此动态行为系统应具备的合理的结构合理的结构w在绘制交互图时,先描绘相应的顺序图,根据已在绘制交互图时,先描绘相应的顺序图,根据已有的用例图绘制顺序图时有的用例图绘制顺序图时, 应考虑:应考虑:软件系统的边界软件系统的边界系统活动者和系统的交互系统活动者和系统的交互系统为实现此交互内部
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论