解析Java与UML交互图有何关联

本文和大家重点讨论一下Java与UML交互图,UML交互图以图形的形式表示出方法调用过程,它有两种形式:序列图(SequenceDiagram)和协作图(CollaborationDiagram)。

Java与UML交互图

引用:http://www.qqread.com/soft-engineering/w962383110.html
本文讨论的是一种UML图——交互图(InteractionDiagram)。交互图描述的是一组对象之间的交互过程,或者说,这里我们实际上要回答这样一个问题:“方法调用过程在UML中怎样表示?”

UML交互图

本文将通过一个非常简单的交易系统来说明UML交互图。这个系统包含六个Java类。从前面几篇文章中,我们已经知道UML类图是分析Java程序结构的有效方法,图一显示了这个交易和支付系统的类图。为了更清楚地说明各个类的职能和角色,图一利用了前面介绍过的彩色类原型表示法。

解析Java与UML交互图有何关联

图一一个简单交易系统的UML类图

如果我们跟踪任意一个Java程序的执行过程,就会发现,这个过程包含了一个或者多个对类和对象的方法调用。我们通过调用对象的方法来寻求特定问题的答案或执行一个特定的动作。很多时候,被调用的方法还会调用其他方法——或者是同一对象的方法,或者是同一类的其他对象的方法,或者是其他类的对象的方法。类似地,这些被调用的方法又会继续调用其他方法,直至问题得到了明确的答案或动作全部执行完毕(或者出现异常,这时问题将没有答案或动作不能完成)。

UML交互图以图形的形式表示出方法调用过程,它有两种形式:序列图(SequenceDiagram)和协作图(CollaborationDiagram)。

序列图

要达到某个特定的目标,必然要执行一系列的方法调用。Java与UML交互图中UML序列图的典型用途就是显示出方法调用过程。图二显示了一个交易事务中计算累计金额的序列图,调用从Sale类的calcTotal()方法开始,相关的代码片断在序列图之后给出。

术语说明:UML把操作(Operation)定义为方法的特征(Signature)。“方法”(Method)这一术语被保留给实现操作的代码。但在Java环境中,“方法”这一术语的应用范围更广泛一些。在UML序列图中,调用一个操作就叫做发送一个消息(Message)。序列图实际上阐述了操作的具体实现,所以下面我们会较多地用到“方法”这个术语(偶尔也会用到“消息”这个术语)。

解析Java与UML交互图有何关联


图二计算交易总金额的序列图

为了便于把握序列图的总体情况,图一只显示了方法的名称。详细的序列图可以显示出方法的参数和返回值。在序列图中,对象以常规的UML符号显示,即使用与对象所属的类一样的形状或符号(默认是矩形),再注明对象的名称,加上一个冒号,再加上相应的类名称。然后再为整个名字加上下划线(例如,图二中的aProduct:Product)。可以省略对象的名字(例如图二中的:Sale),也可以省略类的名字(例如图二的Sender),但两者都省略显然是不允许的。如果省略了类的名字,冒号必须保留。

时间的流逝方向是从上到下的垂直方向。每一个对象有一条顺着页面垂直向下的生命线(Lifeline),紧接着表示对象的矩形。方法调用的表示方式是,画一根从发出调用的对象的生命线指向被调用对象生命线的箭头。只要对象的任意方法处于执行状态,对象的生命线加宽。加宽之后的生命线称为“活动条”(ActivationBar),活动条可以嵌套,表示在前一方法的执行过程中,又有同一对象的另一个方法被调用,图二的getQuantity()方法示范了活动条嵌套的一个例子。

方法的返回值可以通过虚线开叉箭头的形式表示,但这是可选的,例如图二中从:Sale指向Sender的箭头。

如果要在一个对象的集合上进行迭代操作,则在方法的名字前面加上一个星号(再在方括号里面说明循环条件,可选)。在图二中,Sale类对LineItem类对象的调用给出了迭代操作的一个例子。
就象UML类图一样,原本需要查看多个源代码文件才能了解的信息,通过一个UML序列图就可以表示出来。对已有的代码实施反向工程获得对应的序列图,可以帮助不熟悉代码的开发者快速了解程序的工作流程。

协作图

UML交互图的另一种形式是协作图(CollaborationDiagram)。Java与UML交互图中协作图和序列图在语义上相同,但协作图排列对象的方式比较自由,完全由绘图者的喜好决定。在协作图中,交互动作的次序由消息的编号决定。一些人偏爱这种绘图方式,许多功能比较完善的UML工具允许用户将一个图在协作图符号和序列图符号之间来回转换。一些开发者建议,用协作图来显示组件之间的交互过程,用序列图来显示组件内部各个类的交互过程。四的序列图一样。

解析Java与UML交互图有何关联

图五 与图二等价的协作图

解析Java与UML交互图有何关联

相关推荐