類圖中的六種關系
一、首先來羅列一下這六種關系都有什麽
1.泛化(Generalization)
2. 實現(Realization)
3. 關聯(Association)
4. 聚合(Aggregation)
5. 組合/合成(Composition)
6. 依賴(Dependency)
各種關系的強弱順序:
泛化 = 實現 > 組合/合成 > 聚合 > 關聯 > 依賴
有些版本將泛化和實現統稱為一般化關系
二、詳細說一下這六種關系
1.泛化(Generalization)
【泛化關系】: 是一種繼承關系,表現在類與類的繼承關系;接口與接口的繼承關系。駕駛員繼承人類
【代碼體現】:extends
【箭頭指向】:帶三角箭頭的實線,箭頭指向父類或者父接口
2. 實現(Realization)
【實現關系】: 是實現類對接口實現的體現。鳥實現飛行的接口
【代碼體現】:implements
【箭頭指向】:帶三角箭頭的虛線線,箭頭指向接口
3. 關聯(Association)
【關聯關系】: 是類與類之間的鏈接,它使一個類知道另一個類的屬性和方法。關聯可以是雙向的,也可以是單向的。鳥棲息在某片森林
【代碼體現】:成員變量
【箭頭指向】:帶普通箭頭的實線,雙向的關聯可以有兩個箭頭或者沒有箭頭,單向的只有一個箭頭,表示關聯的方向。
4. 聚合(Aggregation)
【聚合關系】: 是關聯關系的一種,是強的關聯關系。聚合是整體和部分之間的關系,且部分可以離開整體單獨存活。
關聯和聚合從Java語法上分辨不出,要考慮邏輯關系,如果不確定,可設置為關聯關系。下面,飛機和駕駛員都屬於航空公司的一部分
【代碼體現】:成員變量
【箭頭指向】:帶空心菱形的實線,菱形指向整體。
5. 組合/合成(Composition)
【合成關系】: 是關聯關系的一種,是比聚合強的關系。他要求普遍的聚合關系中代表整體的對象負責部分的對象的生命周期,合成關系不能共享。
就是說:代表部分的對象每時每刻都只能與一個對象發生合成關系。如果不能確定,可以設置為聚合關系。如鳥的翅膀,和鳥的關系就是合成關系
【代碼體現】:成員變量
【箭頭指向】:帶實心菱形的實線,菱形指向整體。
6. 依賴(Dependency)
【依賴關系】:是類與類之間的連接,依賴總是單項的。依賴表示一個類的定義依賴於另一個類的定義。如飛機駕駛員駕駛飛機,就是一種依賴
與關聯關系不同的是,飛機並不是駕駛員的一個成員變量,畢竟並非所有的飛架駕駛員都擁有飛機。動物依賴水和空氣也是個不錯的例子
【代碼表現】:局部變量、方法的參數或者對靜態方法的調用
【箭頭及指向】:帶箭頭的虛線,指向被使用者
三、下面用一個整合的圖來展示這六種關系
類圖中的六種關系