免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 18976 | 回复: 19

软件建模第十篇:交互与交互图 [复制链接]

论坛徽章:
0
发表于 2002-11-21 14:44 |显示全部楼层
描述系统的边界:首先得出用例图,每一个用例都对应系统一系列动作。序列最初是用文本(形式的或非形式的)的方式描述,例如:图4.1这样的描述精确性较差,不标准。在UML里,直观的,标准的和面向对象的方式是:交互和交互图,活动图(Activity diagram),状态机图(State machine diagram)。——描述软件系统的动态行为。

论坛徽章:
0
发表于 2002-11-21 14:46 |显示全部楼层

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

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

论坛徽章:
0
发表于 2002-11-21 14:50 |显示全部楼层

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


(图4.2)

论坛徽章:
0
发表于 2002-11-21 14:52 |显示全部楼层

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

[这个贴子最后由一无所有在 2002/11/21 02:54pm 编辑]

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

论坛徽章:
0
发表于 2002-11-21 14:57 |显示全部楼层

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

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

论坛徽章:
0
发表于 2002-11-21 15:03 |显示全部楼层

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

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

论坛徽章:
0
发表于 2002-11-21 15:03 |显示全部楼层

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

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

消息的发送形式

论坛徽章:
0
发表于 2002-11-21 15:09 |显示全部楼层

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

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

论坛徽章:
0
发表于 2002-11-21 15:10 |显示全部楼层

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

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

论坛徽章:
0
发表于 2002-11-21 15:14 |显示全部楼层

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

交互:软件系统中的任务是通过对象之间的合作来完成的。对象之间的合作是通过对象之间的消息的传递实现的。对象之间的合作在UML里被称为交互。交互是为达某一目的而在一组对象之间进行消息交换的的行为。交互可以对软件系统为实现某一任务而必须实施的动态行为进行建模。交互的所包含的UML建模元素包括:对象,消息。它们必须通过某种载体表现出来。在UML中,此载体就是交互图。
   交互图描述了一个交互, 其中包括了一系列的对象及其关系以及通过这些关系在对象之间传递的消息。交互图可分为两类:序列图、协同图。它们在语义上是等价的。这意味序列图和协同图内部包含的信息是相同的,因此两图可以互相推导。如果通过工具,它们可以互相自动转换,交互图可以为软件系统的下列构成的对象的动态行为进行建模:类、接口、部件、节点。交互图中的这些对象(实例)可以处于一个或多个场景中以实现相应的用例所规定的任务,通过用交互图进行建模,可以对这些对象涉及的各对象的动态特性进行l视化、说明、建造、建档。
  序列图是交互图的一种,它强调的是消息发送的时间的先后顺序。序列图的构成:参加交互的各对象在序列图的顶端沿水平方向排列,对象之间传递的消息,用箭头表示,水平放置,沿垂直方向排列。在垂直方向上越靠近序列图顶端的消息越先发送,从而给出了消息被执行的先后顺序的明确而直观的表示。每个对象的底部中心都绘由一个垂直虚线。当一个对象向另一个对象发送消息时,消息始于发送对象底部的虚线。终止于接受对象底部的虚线。这条虚线被称为对象生存线(object lifeline)。对象生存线代表一个对象在一个时间段内的存在,如果在序列图上某一对象收到了创建消息或销毁消息,则此对象的生存期始于它收到创建消息的时刻,终止于收到销毁消息的时刻。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP