小窝

UML-之序列图

发布时间:6年前作者:shine热度: 2189 ℃评论数:

       序列图(Sequence Diagram)显示具体用例(或者是用例的一部分)的详细流程。它几乎是自描述的,并且显示了流程中不同对象之间的调用关系,同时还可以很详细地显示对不同对象的不同调用,序列图(Sequence Diagram)的主要用途是把用例表达的需求,转化为进一步、更加正式层次的精细表达。用例常常被细化为一个或者更多的序列图。同时序列图(Sequence Diagram)更有效地描述如何分配各个类的职责以及各类具有相应职责的原因。

        序列图(Sequence Diagram)有两个维度:垂直维度以发生的时间顺序显示消息/调用的序列;水平维度显示消息被发送到的对象实例。由对象(Object)、生命线(Lifeline)、激活(Activation)、消息(Messages)、分支与从属流等元素构成的。

        序列图的绘制非常简单。横跨图的顶部,每个框(参见下图)表示每个类的实例(对象)。在框中,类实例名称和类名称之间用空格/冒号/空格来分隔,例 如,myReportGenerator : ReportGenerator。如果某个类实例向另一个类实例发送一条消息,则绘制一条具有指向接收类实例的开箭头的连线,并把消息/方法的名称放在连 线上面。对于某些特别重要的消息,您可以绘制一条具有指向发起类实例的开箭头的虚线,将返回值标注在虚线上。就我而言,我总喜欢绘制出包括返回值的虚线, 这些额外的信息可以使得序列图更易于阅读。
         阅读序列图也非常简单。从左上角启动序列的"驱动"类实例开始,然后顺着每条消息往下阅读。记住:虽然下图所示的例子序列图显示了每条被发送消息的返回消息,但这只是可选的。

4.png

 

        通过阅读上图中的示例序列图,您可以明白如何创建一个CD销售报告(CD Sales Report)。其中的aServlet对象表示驱动类实例。aServlet向名为gen的ReportGenerator类实例发送一条消息。该消息 被标为generateCDSalesReport,表示ReportGenerator对象实现了这个消息处理程序。进一步理解可发 现,generateCDSalesReport消息标签在括号中包括了一个cdId,表明aServlet随该消息传递一个名为cdId的参数。当 gen实例接收到一条generateCDSalesReport消息时,它会接着调用CDSalesReport类,并返回一个aCDReport的实 例。然后gen实例对返回的aCDReport实例进行调用,在每次消息调用时向它传递参数。在该序列的结尾,gen实例向它的调用者aServlet返 回一个aCDReport。

请注意:图中的序列图相对于典型的序列图来说太详细了。然而,我认为它才是足够易于理解的,并且它显示了如何表示嵌套的调用。对于初级开发人员有时把一个序列分解到这种详细程度是很有必要的,这有助于他们理解相关的内容。 

热门评论

手机扫码访问