UML類圖關係

新博客地址

準備寫技術博客,發現UML畫不出來,在這裏捋一下UML各種類圖關係,基於UML類圖幾種關係的總結,在此基礎上做了歸納總結!

Process On一款非常好的UML在線編輯工具,made in China

在UML類圖中,常見幾種關係:
1.泛化(Generalization_FY:概括)(繼承 : 空三角 + 直線)
2.實現(Realization_FY實現)(接口實現 : 空三角 + 虛線)
3.關聯(Association_FY協會)(直線 + 箭頭(箭頭可無))
4.聚合(Aggregation_FY聚合)(整體與部分的關係,且部分可以離開整體而單獨存在)(空菱形 + 直線 + 方向)
5.組合(Composition_FY組合)(整體與部分的關係,但部分不能離開整體而單獨存在)(實菱形 + 直線 + 方向)
6.依賴(Dependency_FY依賴)(虛線 + 箭頭)

類與類之間由弱到強關係是: 沒關係 > 依賴 > 關聯 > 聚合 > 組合。

1.泛化(Generalization)

【泛化關係】:是一種繼承關係,表示一般與特殊的關係,它指定了子類如何特化父類的所有特徵和行爲。例如:老虎是動物的一種,即有老虎的特性也有動物的共性。

【箭頭指向】:帶三角箭頭的實線,箭頭指向父類

UML類圖幾種關係的總結

2.實現(Realization)

【實現關係】:是一種類與接口的關係,表示類是接口所有特徵和行爲的實現.

【箭頭指向】:帶三角箭頭的虛線,箭頭指向接口

UML類圖幾種關係的總結

3.關聯(Association)

【關聯關係】:是一種擁有的關係,它使一個類知道另一個類的屬性和方法;如:老師與學生,丈夫與妻子關聯可以是雙向的,也可以是單向的。雙向的關聯可以有兩個箭頭或者沒有箭頭,單向的關聯有一個箭頭。

【代碼體現】:成員變量

【箭頭及指向】:帶普通箭頭的實心線,指向被擁有者

這裏寫圖片描述

上圖中,老師與學生是雙向關聯,老師有多名學生,學生也可能有多名老師。但學生與某課程間的關係爲單向關聯,一名學生可能要上多門課程,課程是個抽象的東西他不擁有學生。

下圖爲自身關聯:

這裏寫圖片描述

4.聚合(Aggregation)

【聚合關係】:是整體與部分的關係,且部分可以離開整體而單獨存在。如車和輪胎是整體和部分的關係,輪胎離開車仍然可以存在。

聚合關係是關聯關係的一種,是強的關聯關係;關聯和聚合在語法上無法區分,必須考察具體的邏輯關係。

【代碼體現】:成員變量

【箭頭及指向】:帶空心菱形的實心線,菱形指向整體

這裏寫圖片描述

5.組合(Composition)

【組合關係】:是整體與部分的關係,但部分不能離開整體而單獨存在。如公司和部門是整體和部分的關係,沒有公司就不存在部門。

組合關係是關聯關係的一種,是比聚合關係還要強的關係,它要求普通的聚合關係中代表整體的對象負責代表部分的對象的生命週期。

【代碼體現】:成員變量

【箭頭及指向】:帶實心菱形的實線,菱形指向整體

這裏寫圖片描述

6.依賴(Dependency)

【依賴關係】:是一種使用的關係,即一個類的實現需要另一個類的協助,所以要儘量不使用雙向的互相依賴.

【代碼表現】:局部變量、方法的參數或者對靜態方法的調用

【箭頭及指向】:帶箭頭的虛線,指向被使用者

這裏寫圖片描述

各種關係的強弱順序:
泛化 = 實現 > 組合 > 聚合 > 關聯 > 依賴

下面這張UML圖,比較形象地展示了各種類圖關係:

這裏寫圖片描述

這裏重點說下依賴與關聯的區別

依賴(dependency)
可以簡單的理解,就是一個類A使用到了另一個類B,而這種使用關係是具有偶然性的、、臨時性的、非常弱的,但是B類的變化會影響到A;比如某人要過河,需要借用一條船,此時人與船之間的關係就是依賴;表現在代碼層面,爲類B作爲參數被類A在某個method方法中使用。用帶虛線的箭頭。


關聯(association)
他體現的是兩個類、或者類與接口之間語義級別的一種強依賴關係,比如我和我的朋友;這種關係比依賴更強、不存在依賴關係的偶然性、關係也不是臨時性的,一般是長期性的,而且雙方的關係一般是平等的、關聯可以是單向、雙向的;表現在代碼層面,爲被關聯類B以類屬性的形式出現在關聯類A中,也可能是關聯類A引用了一個類型爲被關聯類B的全局變量;

依賴就像一夜情,依賴就是使用XX幹了YY(僅僅是用了Ta的一個方法),關聯是夫妻,你所有的都是你老婆的(你是你老婆的成員變量)

依賴就是對象偶然需要其它對象的某個方法或者某個屬性,而關聯是方向性的擁有關係,擁有那個對象,擁有那個對象的所有對外屬性以及對外方法,完全深度擁有。

發佈了39 篇原創文章 · 獲贊 9 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章