目录
1、序列图概述
2、序列图调用方式
3、创建消息与销毁消息
4、几项建议
1、序列图概述
在PIM-4中,系统分析员可以用序列图来表达,系统内部一群对象合力完成某一个系统用例时,执行期间的交互情形。之后,序列图可能通过设计师之手,进行调整,并且成为程序员最关切的设计图之二(另一张是类图)。程序员通常会按照序列图的内容,编写出方法的源代码雏形。
此外,PIM-1的系统用例叙述和PIM-3的类图,对PIM-4的序列图,有不可或缺的贡献。从PIM-1的系统用例叙述中,系统分析员可以分析出系统流程。而在PIM-3的类图中,系统分析员定义出系统内部的静态结构。随后,到了PIM-4的序列图时,则结合了系统用例及静态结构两者
序列图内有数个对象(Object),执行者对象启动系统用例时,对象会遵照箭头方向传送消息(Message)给另一个对象,也因此而引发了接收消息之对象的某一项操作。随后,接收对象在执行操作的期间,可能需要其他对象的协助,所以也传送消息给其他对象,并且引发该接收对象的操作。整个对象之间,传送一连串消息并引发操作的过程,形成一群对象的交互模样
序列图的主要组成元素包括:对象、调用消息(Call Message)、执行规格(Execution Specification)和生命线(LifeLine)
2、序列图调用方式
1)调用消息和对象:
2)除了传送调用消息给其他对象之外,对象也可以传送调用消息给自己,以便引发执行自己的操作,这样的调用消息又称为”自我调用“(Self Call Message)
3)调用消息是一种同步消息(Synchronous Messages),序列图提供另一种”异步消息“(Asynchronous Message)。发送对象在发送异步消息后,不等接受对象执行完毕,就自顾自地往下执行,不等待。同步消息与异步消息的图标差异在于箭头处,前者为带实心箭头的实线,后者为带开放箭头的实线。
3、创建消息与销毁消息
创建消息(Creation Message)的图标是一条带开放箭头的虚线,指向创建的对象,意味着对象是在发出创建消息之际,才刚诞生,在此之前,此对象是不存在的。
销毁消息(Destruction Message)的图标则是在消息箭头端打上大叉叉,而且生命终止与大叉叉处。因为对象在收到销毁消息之后,就被销毁了,不存在了,所以生命线也就终止了。
4、几项建议
在建构PIM-4的序列图时,系统分析员可以参考下列几项建议:
1)主要流程与其他流程分置于不同的序列图中。千万别再一张序列图里表达多条流程,避免造成图面过于复杂,难以阅读。
2)扮演启动者的执行者对象放置于序列图最左方;扮演支持者的执行者对象放置于序列图的最右方。消息方向尽量由左指向右,符合横式书写与阅读的习惯。
3)自有消息可以引发接受对象自身的公开操作或者私有操作,但是,一般消息只能引发公开操作,不能引发私有操作。
4)对象之间优先通过静态关系传递消息,否则可于操作中建立暂时性的关系,以便传递消息
通过上图类之间的关联关系,类所产生之对象之间可以传递消息。请看下图9-8的估算现值,基金账户对象可以传递消息给申购交易对象,而申购交易对象也可以传递消息给基金对象,之间都是通过关联关系所产生的链接来传递消息。图中的大方框成为“循环片段(Loop Fragment),系统分析员可以用它来围住需要执行循环(Loop)的消息。
下图9-9是另外一种估算现值的方法,基金账户对象传递消息给申购交易对象与基金对象。
不过基金账户与基金两个类之间没有关联关系,所以他们所生成的对象之间可于执行操作期间建立暂时性的链接,以便传递信息。在类图中,可以使用带箭头虚线的”依赖“(Dependency),表达基金账户对象将”使用“基金对象。
5)显示消息序号,有助于撰写说明。
6)两个对象之间具有组合关系时,其他对象仅能看到Whole对象,不能直接使用Part对象。
7)传递对象,而非属性,维持对象的封装性。基金对象想申购交易对象查询最新净值。此时申购交易对象并非传回一项”最新净值“的数据参数,而是传回基金对象的地址(out:基金),让申购交易对象自己调用基金对象的操作,取得最新净值的数据。如下图:
8)对象封装了属性,以及操作的方法,仅对外透露公开操作。因此,系统分析员要特别注意,在分析规划对象的方法时,如果需要与其他对象交互,甚至是使用到对象本身的属性或操作时,切记严守下列三项条件:
- 不得直接提及对象的属性
- 也不得假设对象的执行方法
- 仅能够使用对象的操作