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