本文轉自:http://blog.sina.com.cn/s/blog_71460d95010111dc.html
類圖是最常用的UML圖,它用於描述系統的結構化設計。其中包括類關系以及與每個類關聯的屬性及行為。類圖能出色地表示繼承與合成關系。為了將類圖作為一種高效的溝通工具使用,開發者必須理解如何將類圖上出現的元素轉換到Java中。下面來進一步探索這一轉換過程。 元素在后面的小節中,分別講解了類圖的各個元素及其在Java中相應的表示。我會列出元素名,后續簡短的代碼片斷和一幅圖來表示元素在類圖上的樣子。每一節的最后簡要總結了該元素。 類(Class)類(圖A)是對象的藍圖,其中包含3個組成部分。第一個是Java中定義的類名。第二個是屬性(attributes)。第三個是該類提供的方法。 圖A
|
包(Package)包(圖B)是一種常規用途的組合機制。UML中的一個包直接對應於Java中的一個包。在Java中,一個包可能含有其他包、類或者同時含有這兩者。進行建模時,你通常擁有邏輯性的包,它主要用於對你的模型進行組織。你還會擁有物理性的包,它直接轉換成系統中的Java包。每個包的名稱對這個包進行了惟一性的標識。 圖B 接口(Interface)接口(圖C)是一系列操作的集合,它指定了一個類所提供的服務。它直接對應於Java中的一個接口類型。接口既可用圖C的那個圖標來表示,也可由附加了<<interface>>的一個標准類來表示。通常,根據接口在類圖上的樣子,就能知道與其他類的關系。 圖C 關系后面的例子將針對某個具體目的來獨立地展示各種關系。雖然語法無誤,但這些例子可進一步精煉,在它們的有效范圍內包括更多的語義。 依賴(Dependency)實體之間一個“使用”關系暗示一個實體的規范發生變化后,可能影響依賴於它的其他實例(圖D)。更具體地說,它可轉換為對不在實例作用域內的一個類或對象的任何類型的引用。其中包括一個局部變量,對通過方法調用而獲得的一個對象的引用(如下例所示),或者對一個類的靜態方法的引用(同時不存在那個類的一個實例)。也可利用“依賴”來表示包和包之間的關系。由於包中含有類,所以你可根據那些包中的各個類之間的關系,表示出包和包的關系。 圖D 關聯(Association)實體之間的一個結構化關系表明對象是相互連接的。箭頭是可選的,它用於指定導航能力。如果沒有箭頭,暗示是一種雙向的導航能力。在Java中,關聯(圖E)轉換為一個實例作用域的變量,就像圖E的“Java”區域所展示的代碼那樣。可為一個關聯附加其他修飾符。多重性(Multiplicity)修飾符暗示着實例之間的關系。在示范代碼中,Employee可以有0個或更多的TimeCard對象。但是,每個TimeCard只從屬於單獨一個Employee。 圖E 聚合(Aggregation)聚合(圖F)是關聯的一種形式,代表兩個類之間的整體/局部關系。聚合暗示着整體在概念上處於比局部更高的一個級別,而關聯暗示兩個類在概念上位於相同的級別。聚合也轉換成Java中的一個實例作用域變量。 圖F
|