软件建模第十篇:交互与交互图

2008-04-09 04:04:14来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


描述系统的边界:首先得出用例图,每一个用例都对应系统一系列动作。序列最初是用文本(形式的或非形式的)的方式描述,例如:图4.1这样的描述精确性较差,不标准。在UML里,直观的,标准的和面向对象的方式是:交互和交互图,活动图(Activity diagram),状态机图(State machine diagram)。——描述软件系统的动态行为。


一无所有 回复于:2002-11-21 14:46:55 交互图分为两种:序列图,协同图。它们在语义上是等价的,意味着可以互相转换。序列图强调的是为实现此行为系统在时序方面的特性;协同图强调系统在结构方面的特性。
在考察一个系统的对象的交互时,通常从序列图开始,然后将序列图转换为协同图,以分析系统在结构方面应该具备的特点。
用软件实现图4.1 指定的动态行为。首先考虑系统外部和系统打交道的对象。已经在图4.1中标识。系统作用者:“用户”和“显示窗口”,将这两个外部对象描绘在交互图上(图4.2),之后,十分自然地,也是“面向对象”地考虑在系统中应该如何设置担负不同职责的软件“角色”。它们共同完成这一任务。这如同当人们需要互相协同来完成某一工作时,需要进行分工一样。这样的“角色”,在UML中,被称为对象。

一无所有 回复于:2002-11-21 14:50:26
(图4.2)

一无所有 回复于:2002-11-21 14:52:33 [这个贴子最后由一无所有在 2002/11/21 02:54pm 编辑]

具有相同的结构和行为的所有对象,被抽象为类。这是UML中典型的“类”/“实例”两分法。在UML中,对象和类使用相同的图符(矩形)来标识,为了区分对象和类,在对象的名字下面用下划线以示区别。系统作用者是类的变体(stereotype)。在交互图里,当变体以对象出现时,将保持此变体的图符。
在前面的用例中,用户和系统的交互,可以分为三个连续执行的动作:1、用户在位图区域内按下鼠标左键;2、保持左键按下拖动鼠标;3、释放鼠标左键。这三个动作构成了系统作用者和系统的联系,每一动作都相当于向系统发出了一个命令,系统必须在内部执行相应的操作,以正确响应这命令。这命令,在UML里被称为消息(message)。消息在对象间传递,用于启动目标对象内部的某些操作。在考虑系统内部对象的设置时,出于系统“外壳”与系统内核的区分,专设一个对象用于接收用户传来的鼠标消息,这就是“接收鼠标消息”这一对象的用途。这对象收到操作系统传来鼠标消息后,把它传给为“浏览位图”这个工具专设的对象“处理鼠标消息”,它把由操作系统传来的无特定语义的鼠标消息,解释为“浏览位图”赋予它们的语义,并发送消息给bmpviewer的系统内核里的对象(系统数据),进行具体的执行。

一无所有 回复于:2002-11-21 14:57:45 在UML里,对象指的是某一种抽象的坚实存在,它是封装了状态和行为的具有明确边界和身份的实体。具有相同的结构和行为的对象, 在UML里被称为类。因此,对象应该和某一类相对应。UML里,对象使用与其对应的类一样的图符。为了使对象的图符和类的图符相区别,图符中对象的名字下面加有下划线(图4.3)。对象的名字在对象的名字后面标上此对象的实现类的名字。对象名和类名之间用冒号分开。对象名可以缺失,只写此对象对应的实现类的名字,表示它是此类的一个对象。只标记类而不标记对象名的对象称为匿名对象(anonymous object)。标记名字的对象称为记名对象(named object)。



一无所有 回复于:2002-11-21 15:03:04 消息:对象间的互相合作与交流表现为一个对象以某种方式启动另一个对象的活动。这种交流在UML里被定义为消息。消息是对对象间的一种信息的通讯的描述,此信息期望在通讯完成之后,某一活动会随之发生。消息相当于向目标对象发送了一条命令,此命令启动了目标对象的一个动作。动作一般通过函数调用(call)启动。但也可以通过其它方式。
消息所能采取的形式:
调用(call):启动一个对象里的操作。操作是对象的类所能提供的服务的实现。调用消息一般是顺序执行的。
返回(return):操作向调用者返回一个值。
发送(sand):向一个对象发送一个信号。发送消息是异步消息,意味者发送消息的对象在发送了消息给目标对象后,不论目标对象是否接受此消息,它都继续进行下一消息的发送。
创建(create):此消息的发送导致目标对象被创建。
销毁(destroy):此消息的发送导致目标对象被销毁。
消息的表示,在UML里,消息用箭头表示,此箭头从发送消息的对象指向接收消息的对象。在消息的各种形式中,创建和销毁消息用消息的变体来表示,返回消息用带虚线的箭头表示。
发送消息又称为异步消息,用半箭头表示。
调用消息又称为简单(simple)消息, 用整箭头表示。(图4.4)

一无所有 回复于:2002-11-21 15:03:51 [这个贴子最后由一无所有在 2002/11/21 03:04pm 编辑]

消息的发送形式

一无所有 回复于:2002-11-21 15:09:35 图4.5 消息、消息名和消息顺序号 (单调顺序号)
消息的表示,消息可以有名字,它列在消息的箭头的直线上
如果对象的实现类已经确定,则此名字可以标记为实现类的某一操作的定义。例如,C/C 语言里的函数定义等,消息的发送是有顺序的,此顺序由它在序列图垂直方向上的位置决定,垂直方向靠近序列图的顶端的消息先执行,靠近序列图底部的消息后执行。因此每一消息都有一顺序号…。消息的顺序号可前缀于消息的名字前面,它们之间用冒号分隔(图4.5)。顺序号分为两种:单调顺序号(flat sequence)单调顺序号严格按照消息的发送顺序排列,如:1,2,3,…,等等(图4.5)。

一无所有 回复于:2002-11-21 15:10:53 图4.6过程顺序号
过程顺序号(procedual sequence)是嵌入式的,当一个消息启动了另一个消息序列时, 此消息序列内的各消息就可以重新开始编号。 如:消息2发送后,启动了其后的一系列消息,则这些消息就可以编号为2.1, 2.2, 2.3, …,等等(图4.6)。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:[讨论]大家来讨论一下开发流程问题

下一篇:[原创]CVS服务器与WinCVS的配置与使用