在圖3中,我們同時看到了繼承關系和兩個關聯關系。CDSalesReport類繼承自Report類。一個CDSalesReport類與一個CD類關聯,但是CD類并不知道關于CDSalesReport類的任何信息。CD類和Band類都彼此知道對方,兩個類彼此都可以與一個或者多個對方類相關聯。
一個類圖可以整合其他許多概念,這將在本系列文章的后續文章中介紹。
序列圖顯示具體用例(或者是用例的一部分)的詳細流程。它幾乎是自描述的,并且顯示了流程中中不同對象之間的調用關系,同時還可以很詳細地顯示對不同對象的不同調用。
序列圖有兩個維度:垂直維度以發生的時間順序顯示消息/調用的序列;水平維度顯示消息被發送到的對象實例。
序列圖的繪制非常簡單。橫跨圖的頂部,每個框(參見圖4)表示每個類的實例(對象)。在框中,類實例名稱和類名稱之間用空格/冒號/空格來分隔,例如,myReportGenerator : ReportGenerator。如果某個類實例向另一個類實例發送一條消息,則繪制一條具有指向接收類實例的開箭頭的連線,并把消息/方法的名稱放在連線上面。對于某些特別重要的消息,您可以繪制一條具有指向發起類實例的開箭頭的虛線,將返回值標注在虛線上。就我而言,我總喜歡繪制出包括返回值的虛線,這些額外的信息可以使得序列圖更易于閱讀。
閱讀序列圖也非常簡單。從左上角啟動序列的"驅動"類實例開始,然后順著每條消息往下閱讀。記。弘m然圖4所示的例子序列圖顯示了每條被發送消息的返回消息,但這只是可選的。

圖4:一個示例序列圖
通過閱讀圖4中的示例序列圖,您可以明白如何創建一個CD銷售報告(CD Sales Report)。其中的aServlet對象表示驅動類實例。aServlet向名為gen的ReportGenerator類實例發送一條消息。該消息被標為generateCDSalesReport,表示ReportGenerator對象實現了這個消息處理程序。進一步理解可發現,generateCDSalesReport消息標簽在括號中包括了一個cdId,表明aServlet隨該消息傳遞一個名為cdId的參數。當gen實例接收到一條generateCDSalesReport消息時,它會接著調用CDSalesReport類,并返回一個aCDReport的實例。然后gen實例對返回的aCDReport實例進行調用,在每次消息調用時向它傳遞參數。在該序列的結尾,gen實例向它的調用者aServlet返回一個aCDReport。
請注意:圖4中的序列圖相對于典型的序列圖來說太詳細了。然而,我認為它才是足夠易于理解的,并且它顯示了如何表示嵌套的調用。對于初級開發人員來說,有時把一個序列分解到這種詳細程度是很有必要的,這有助于他們理解相關的內容。
狀態圖
狀態圖表示某個類所處的不同狀態和該類的狀態轉換信息。有人可能會爭論說每個類都有狀態,但不是每個類都應該有一個狀態圖。只對"感興趣的"狀態的類(也就是說,在系統活動期間具有三個或更多潛在狀態的類)才進行狀態圖描述。
文章來源于領測軟件測試網 http://www.kjueaiud.com/