這是關于統一建模語言、即UML 里采用的基本圖的文章。在這篇文章中,我將會討論結構圖,這是已經在 UML 2 中提出的一種新圖種類。由于本系列文章的目的是使人們了解記號元素及它們的含意,該文主要關注類圖。你很快就會知道這樣做的理由。隨后的文章將會覆蓋結構范疇中包含的其它圖。
我也想提醒讀者,這一系列文章是關于 UML 記號元素的,所以這些文章并不意味著為建模的最好方式提供指導方針,或是該如何決定哪些內容應該首先被建模。相反的,該文及本系列文章的目的主要是幫助大家對于記號元素 -- 語法和含義有一個基本的理解。借由這些知識,你應該可以閱讀圖,并使用正確的記號元素創建你自己的圖。
這篇文章假定你對面向對象的設計已經有了基本的理解。你們當中如果有人需要一些面向對象概念的幫助,那么可以訪問http://java.sun.com/docs/books/tutorial/java/concepts/,來獲得Sun公司關于面向對象編程的簡短指導。閱讀 “什么是類?”和 什么是繼承?” 章節,將提供給你足夠的理解,并對該文的閱讀會有所幫助。另外,David Taylor的書《 Object-Oriented Technologies: A Manager's Guide》提供了面向對象設計的優秀,高水平的說明,而無需對計算機編程有高深的理解。
UML 2 中的陰和陽
在 UML 2 中有二種基本的圖范疇:結構圖和行為圖。每個 UML 圖都屬于這二個圖范疇。結構圖的目的是顯示建模系統的靜態結構。它們包括類,組件和(或)對象圖。另一方面,行為圖顯示系統中的對象的動態行為,包括如對象的方法,協作和活動之類的內容。行為圖的實例是活動圖,用例圖和序列圖。
大體上的結構圖
如同我所說的,結構圖顯示建模系統的靜態結構。關注系統的元件,無需考慮時間。在系統內,靜態結構通過顯示類型和它們的實例進行傳播。除了顯示系統類型和它們的實例,結構圖至少也顯示了這些元素間的一些關系,可能的話,甚至也顯示它們的內部結構。
貫穿整個軟件生命周期,結構圖對于各種團隊成員都是有用的。一般而言,這些圖支持設計驗證,和個體與團隊間的設計交流。舉例來說,業務分析師可以使用類或對象圖,來為當前的資產和資源建模,例如分類賬,產品或地理層次。架構師可以使用組件和部署圖,來測試/確認他們的設計是否充分。開發者可以使用類圖,來設計并為系統的代碼(或即將成為代碼的)類寫文檔。
特殊的類圖UML 2 把結構圖看成一個分類;這里并不存在稱為“結構圖”的圖。然而,類圖提供結構圖類型的一個主要實例,并為我們提供一組記號元素的初始集,供所有其它結構圖使用。由于類圖是如此基本,本文的剩余部分將會把重點集中在類圖記號集。在本文的結尾,你將對于如何畫UML 2類圖有所了解,而且對于理解在后面文章中將涉及的其他結構圖有一個穩固的基礎。
基礎
如先前所提到的,類圖的目的是顯示建模系統的類型。在大多數的 UML 模型中這些類型包括:
- 類
- 接口
- 數據類型
- 組件
UML 為這些類型起了一個特別的名字:“分類器”。通常地,你可以把分類器當做類,但在技術上,分類器是更為普遍的術語,它還是引用上面的其它三種類型為好。
類名
類的 UML 表示是一個長方形,垂直地分為三個區,如圖 1 所示。頂部區域顯示類的名字。中間的區域列出類的屬性。底部的區域列出類的操作。當在一個類圖上畫一個類元素時,你必須要有頂端的區域,下面的二個區域是可選擇的(當圖描述僅僅用于顯示分類器間關系的高層細節時,下面的兩個區域是不必要的)。圖 1 顯示一個航線班機如何作為 UML 類建模。正如我們所能見到的,名字是 Flight,我們可以在中間區域看到Flight類的3個屬性:flightNumber,departureTime 和 flightDuration。在底部區域中我們可以看到Flight類有兩個操作:delayFlight 和 getArrivalTime。
圖 1: Flight類的類圖
類屬性列表
類的屬性節(中部區域)在分隔線上列出每一個類的屬性。屬性節是可選擇的,要是一用它,就包含類的列表顯示的每個屬性。該線用如下格式:
name : attribute type |
flightNumber : Integer |
繼續我們的Flight類的例子,我們可以使用屬性類型信息來描述類的屬性,如表 1 所示。
表 1:具有關聯類型的Flight類的屬性名字
|
在業務類圖中,屬性類型通常與單位相符,這對于圖的可能讀者是有意義的(例如,分鐘,美元,等等)。然而,用于生成代碼的類圖,要求類的屬性類型必須限制在由程序語言提供的類型之中,或包含于在系統中實現的、模型的類型之中。
在類圖上顯示具有默認值的特定屬性,有時是有用的(例如,在銀行賬戶應用程序中,一個新的銀行賬戶會以零為初始值)。UML 規范允許在屬性列表節中,通過使用如下的記號作為默認值的標識:
name : attribute type = default value |
舉例來說:
balance : Dollars = 0 |
顯示屬性默認值是可選擇的;圖 2 顯示一個銀行賬戶類具有一個名為 balance的類型,它的默認值為0。
圖 2:顯示默認為0美元的balance屬性值的銀行賬戶類圖。
共5頁: 1 [2] [3] [4] [5] 下一頁 |