實(shí)例解析UML序列圖使用
本文和大家重點(diǎn)討論一下UML序列圖,它顯示具體用例(或者是用例的一部分)的詳細(xì)流程。它幾乎是自描述的,并且顯示了流程中中不同對(duì)象之間的調(diào)用關(guān)系,同時(shí)還可以很詳細(xì)地顯示對(duì)不同對(duì)象的不同調(diào)用。
UML序列圖
UML序列圖顯示具體用例(或者是用例的一部分)的詳細(xì)流程。它幾乎是自描述的,并且顯示了流程中中不同對(duì)象之間的調(diào)用關(guān)系,同時(shí)還可以很詳細(xì)地顯示對(duì)不同對(duì)象的不同調(diào)用。
UML序列圖有兩個(gè)維度:垂直維度以發(fā)生的時(shí)間順序顯示消息/調(diào)用的序列;水平維度顯示消息被發(fā)送到的對(duì)象實(shí)例。
UML序列圖的繪制非常簡(jiǎn)單。橫跨圖的頂部,每個(gè)框(參見(jiàn)圖4)表示每個(gè)類的實(shí)例(對(duì)象)。在框中,類實(shí)例名稱和類名稱之間用空格/冒號(hào)/空格來(lái)分隔,例如,myReportGenerator:ReportGenerator。如果某個(gè)類實(shí)例向另一個(gè)類實(shí)例發(fā)送一條消息,則繪制一條具有指向接收類實(shí)例的開(kāi)箭頭的連線,并把消息/方法的名稱放在連線上面。對(duì)于某些特別重要的消息,您可以繪制一條具有指向發(fā)起類實(shí)例的開(kāi)箭頭的虛線,將返回值標(biāo)注在虛線上。就我而言,我總喜歡繪制出包括返回值的虛線,這些額外的信息可以使得UML序列圖更易于閱讀。
閱讀UML序列圖也非常簡(jiǎn)單。從左上角啟動(dòng)序列的"驅(qū)動(dòng)"類實(shí)例開(kāi)始,然后順著每條消息往下閱讀。記住:雖然圖4所示的例子UML序列圖顯示了每條被發(fā)送消息的返回消息,但這只是可選的。
圖4:一個(gè)示例UML序列圖
通過(guò)閱讀圖4中的示例UML序列圖,您可以明白如何創(chuàng)建一個(gè)CD銷售報(bào)告(CDSalesReport)。其中的aServlet對(duì)象表示驅(qū)動(dòng)類實(shí)例。aServlet向名為gen的ReportGenerator類實(shí)例發(fā)送一條消息。該消息被標(biāo)為generateCDSalesReport,表示ReportGenerator對(duì)象實(shí)現(xiàn)了這個(gè)消息處理程序。進(jìn)一步理解可發(fā)現(xiàn),generateCDSalesReport消息標(biāo)簽在括號(hào)中包括了一個(gè)cdId,表明aServlet隨該消息傳遞一個(gè)名為cdId的參數(shù)。當(dāng)gen實(shí)例接收到一條generateCDSalesReport消息時(shí),它會(huì)接著調(diào)用CDSalesReport類,并返回一個(gè)aCDReport的實(shí)例。然后gen實(shí)例對(duì)返回的aCDReport實(shí)例進(jìn)行調(diào)用,在每次消息調(diào)用時(shí)向它傳遞參數(shù)。在該序列的結(jié)尾,gen實(shí)例向它的調(diào)用者aServlet返回一個(gè)aCDReport。
請(qǐng)注意:圖4中的UML序列圖相對(duì)于典型的UML序列圖來(lái)說(shuō)太詳細(xì)了。然而,我認(rèn)為它才是足夠易于理解的,并且它顯示了如何表示嵌套的調(diào)用。對(duì)于初級(jí)開(kāi)發(fā)人員來(lái)說(shuō),有時(shí)把一個(gè)序列分解到這種詳細(xì)程度是很有必要的,這有助于他們理解相關(guān)的內(nèi)容。
【編輯推薦】
- 掌握六大技巧輕松實(shí)現(xiàn)UML序列圖繪制
- 養(yǎng)成良好的UML序列圖繪制習(xí)慣
- Java建模:UML序列圖
- 整潔的UML圖如何繪制?
- 利用UML序列圖設(shè)計(jì)Java應(yīng)用程序