接口(Interface)
接口(圖C)是一系列操做的集合,它指定了一個類所提供的服務。它直接對應於Java中的一個接口類型。接口既可用圖C的那個圖標來表示,也可由附加了<<interface>>的一個標準類來表示。一般,根據接口在類圖上的樣子,就能知道與其餘類的關係。 繼承
圖C 接口
關係
後面的例子將針對某個具體目的來獨立地展現各類關係。雖然語法無誤,但這些例子可進一步精煉,在它們的有效範圍內包括更多的語義。 ip
依賴(Dependency)
實體之間一個「使用」關係暗示一個實體的規範發生變化後,可能影響依賴於它的其餘實例(圖D)。更具體地說,它可轉換爲對不在實例做用域內的一個類或對象的任何類型的引用。其中包括一個局部變量,對經過方法調用而得到的一個對象的引用(以下例所示),或者對一個類的靜態方法的引用(同時不存在那個類的一個實例)。也可利用「依賴」來表示包和包之間的關係。因爲包中含有類,因此你可根據那些包中的各個類之間的關係,表示出包和包的關係。 ci
圖D
關聯(Association)
實體之間的一個結構化關係代表對象是相互鏈接的。箭頭是可選的,它用於指定導航能力。若是沒有箭頭,暗示是一種雙向的導航能力。在Java中,關聯(圖E)轉換爲一個實例做用域的變量,就像圖E的「Java」區域所展現的代碼那樣。可爲一個關聯附加其餘修飾符。多重性(Multiplicity)修飾符暗示着實例之間的關係。在示範代碼中,Employee能夠有0個或更多的TimeCard對象。可是,每一個TimeCard只從屬於單獨一個Employee。
圖E
聚合(Aggregation)
聚合(圖F)是關聯的一種形式,表明兩個類之間的總體/局部關係。聚合暗示着總體在概念上處於比局部更高的一個級別,而關聯暗示兩個類在概念上位於相同的級別。聚合也轉換成Java中的一個實例做用域變量。
關聯和聚合的區別純粹是概念上的,並且嚴格反映在語義上。聚合還暗示着實例圖中不存在迴路。換言之,只能是一種單向關係。
圖F
合成(Composition)
合成 (圖G)是聚合的一種特殊形式,暗示「局部」在「總體」內部的生存期職責。合成也是非共享的。因此,雖然局部不必定要隨總體的銷燬而被銷燬,但總體要麼負責保持局部的存活狀態,要麼負責將其銷燬。局部不可與其餘總體共享。可是,總體可將全部權轉交給另外一個對象,後者隨即將承擔生存期職責。
Employee和TimeCard的關係或許更適合表示成「合成」,而不是表示成「關聯」。
圖G
泛化(Generalization)
泛化(圖H)表示一個更泛化的元素和一個更具體的元素之間的關係。泛化是用於對繼承進行建模的UML元素。在Java中,用extends關鍵字來直接表示這種關係。
圖H
實現(Realization)
實例(圖I)關係指定兩個實體之間的一個合同。換言之,一個實體定義一個合同,而另外一個實體保證履行該合同。對Java應用程序進行建模時,實現關係可直接用implements關鍵字來表示。
圖I
精確映射
如本文所述,UML類圖上的元素能精確映射到Java編程語言。開發團隊的成員可利用這種精確性來增強溝通,取得對系統結構化設計的共識。