SoftEng 版 (精华区)
发信人: alai (alai), 信区: SoftEng
标 题: 标准建模语言UML的动态建模机制(一)
发信站: 紫 丁 香 (Sat Apr 8 04:51:27 2000), 转信
标准建模语言UML的动态建模机制 作者 王云葛科
1. 消息
在面向对象技术中,对象间的交互是通过对象间消息的传递来完成的。在UML的四个动
态模型中均用到消息这个概念。通常,当一个对象调用另一个对象中的操作时,即完成了一
次消息传递。当操作执行后,控制便返回到调用者。对象通过相互间的通信(消息传递)进行
合作,并在其生命周期中根据通信的结果不断改变自身的状态。
在UML中,消息的图形表示是用带有箭头的线段将消息的发送者和接收者联系起来,箭头
的类型表示消息的类型,
UML定义的消息类型有三种:
简单消息(Simple Message) 表示简单的控制流。用于描述控制如何在对象间进行传递,而
不考虑通信的细节。
同步消息(Synchronous Message) 表示嵌套的控制流。操作的调用是一种典型的同步消息
。调用者发出消息后必须等待消息返回,只有当处理消息的操作执行完毕后,调用者才可继
续执行自己的操作。
异步消息(Asynchronous Message) 表示异步控制流。当调用者发出消息后不用等待消息的
返回即可继续执行自己的操作。异步消息主要用于描述实时系统中的并发行为。
2. 状态图
状态图(State Diagram)用来描述一个特定对象的所有可能状态及其引起状态转移的事件。
大多数面向对象技术都用状态图表示单个对象在其生命周期中的行为。一个状态图包括一
系列的状态以及状态之间的转移。
(1) 状态
所有对象都具有状态,状态是对象执行了一系列活动的结果。当某个事件发生后,对象
的状态将发生变化。状态图中定义的状态有:初态、终态、中间状态、复合状态。其中,初
态是状态图的起始点,而终态则是状态图的终点。一个状态图只能有一个初态,而终态则可
以有多个。
中间状态包括两个区域:名字域和内部转移域,
一个状态可以进一步地细化为多个子状态,我们将可以进一步细化的状态称作复合状态
。子状态之间有"或关系"和"与关系"两种关系。或关系说明在某一时刻仅可到达一个子状
态。例如,一个处于行驶状态的汽车,在"行驶"这个复合状态中有向前和向后两个不同的子
状态,在某一时刻 汽车要么向前,要么向后。与关系说明复合状态中在某一时刻可同时到达
多个子状态(称为并发子状态)。具有并发子状态的状态图称为并发状态图。
(2) 转移
状态图中状态之间带箭头的连线被称为转移。状态的变迁通常是由事件触发的,此时应
在转移上标出触发转移的事件表达式。如果转移上未标明事件,则表示在源状态的内部活动
执行完毕后自动触发转移。
3. 顺序图
顺序图(Sequence Diagram)用来描述对象之间动态的交互关系,着重体现对象间消息传
递的时间顺序。顺序图存在两个轴:水平轴表示不同的对象,垂直轴表示时间。顺序图中的
对象用一个带有垂直虚线的矩形框表示,并标有对象名和类名。垂直虚线是对象的生命线,
用于表示在某段时间内对象是存在的。对象间的通信通过在对象的生命线间画消息来表示
。消息的箭头指明消息的类型。
顺序图中的消息可以是信号(Signal)、操作调用或类似于C++中的RPC(RemoteProce
dure Calls)和Java中的RMI(Remote Method Invocation)。当收到消息时,接收对象立即开
始执行活动,即对象被激活了。通过在对象生命线上显示一个细长矩形框来表示激活。
消息可以用消息名及参数来标识。消息也可带有顺序号,但较少使用。消息还可带有条
件表达式,表示分支或决定是否发送消息。如果用于表示分支,则每个分支是相互排斥的,即
在某一时刻仅可发送分支中的一个消息。
在顺序图的左边可以有说明信息,用于说明消息发送的时刻、描述动作的执行情况以及
约束信息等。一个典型的例子就是用于说明一个消息是重复发送的。另外,可以定义两个消
息间的时间限制。
一个对象可以通过发送消息来创建另一个对象,当一个对象被删除或自我删除时,该对
象用"X"标识。
另外,在很多算法中,递归是一种很重要的技术。当一个操作直接或间接调用自身时,即
发生了递归。产生递归的消息总是同步消息,返回消息应是一个简单消息。
4. 合作图
合作图(Collaboration Diagram)用于描述相互合作的对象间的交互关系和链接关系。
虽然顺序图和合作图都用来描述对象间的交互关系,但侧重点不一样。顺序图着重体现交互
的时间顺序,合作图则着重体现交互对象间的静态链接关系。
合作图中对象的外观与顺序图中的一样。如果一个对象在消息的交互中被创建,则可在
对象名称之后标以{new}。类似地,如果一个对象在交互期间被删除,则可在对象名称之后标
以{destroy}。对象间的链接关系类似于类图中的联系(但无多重性标志)。通过在对象间的
链接上标志带有消息串 的消息(简单、异步或同步消息)来表达对象间的消息传递。
(1) 链接 链接用于表示对象间的各种关系,包括组成关系的链接(Composition Li nk)、
聚集关系的链接(Aggregation Link)、限定关系的链接(Qualified Link)以及导航链接
(Navigation Link)。各种链接关系与类图中的定义相同,在链接的端点位置可以显示对象
的角色名和模板信息。
(2) 消息流 在合作图的链接线上,可以用带有消息串的消息来描述对象间的交互。消息的
箭头指明消息的流动方向。消息串说明要发送的消息、消息的参数、消息的返回值以及消
息的序列号等信息(未完待续)。
--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.118.224.232]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:7.592毫秒