1. 程式人生 > >全網最簡:秒懂uml類與類之間的關係

全網最簡:秒懂uml類與類之間的關係

uml類與類之間的關係

在網上查有關uml中類與類之間各線條的關係,發現各種版本的講解都不是特別的詳細,網上查詢出現最多的版本是這個:點選開啟連結,對裡面uml類圖的詳解不是特別滿意,於是通過自己整理和學習,對uml中類圖各種知識點做了個簡單的描述和總結,以Java的語句為基礎做一個簡單的總結,畢竟還是小白階段,如果有哪些不對或者不成熟的地方,還請各位大神多多指正!

推薦一款用於畫uml的建模工具:ProcessOn 一款基於瀏覽器語言HTML5線上UML建模工具,屬於國內創業團隊的產品,用QQ就可以登入,建議體驗一下!官方網站:processon.com


類與類之間的六大關係:

1、依賴

2、關聯

3、泛化(繼承)

4、實現

5、聚合

6、組合

具體分析:

1、依賴:類的某個功能需要另一個類輔助才能完成

依賴是六大關係中最弱的一種關係,主要有兩種實現的方式: ①作為方法引數實現 如:人讀書(人依賴書) read(Book book){ } ②直接構建某物件 void program(Computer computer){ Computer computer = new Computer(); } 這種方法和①比起來無法改變初始值 uml圖解:


2、關聯:一個類的多個方法都需要另一個類的輔助才能完成

程式碼實現: class Book{ private String name;
private float price; private Person author; } Book要關聯person();(關聯這裡是關係輕的叫法,組合與關聯作用類似,但是屬於一種強關係) 一個類作為另一個類的屬性(這裡author一定要記得初始化,不然會報空指標錯誤) uml圖解:

3、泛化(繼承):表示一個類與另一個類是父子關係

(這個比較好理解,泛化就是java中的繼承)不明白的同學可以學習java繼承這一章,程式碼關鍵字:extends

doganimal,dog和animal就是繼承,dog是子類,animal是父類

程式碼實現:

class Animal{ }

class Dog extends Animal{ }

uml圖解:


同時介面可以繼承介面


4、實現:指的是一個class類實現interface介面(可以是多個)的功能(介面中沒有屬性);實現是類與介面之間最常見的關係;在Java中此類關係通過關鍵字implements明確標識

程式碼實現: interface A{ } clss B implements A{ } uml圖解:

5、聚合:聚合是關聯關係的一種特例,他體現的是整體與部分、擁有的關係

聚合中整體與部分之間是可分離的(組合和聚合比起來就是不可分離的,是一種強關聯關係),他們可以具有各自的生命週期,部分可以屬於多個整體物件,也可以為多個整體物件共享。比如鴨子與鴨群,學生與班級都是多對一的關係,但是鴨子、鴨群、學生、班級又是可以彼此分離單獨存在的。 程式碼實現: class Student{ } calss ClassInfo{//班級有多個學生 private Student[] student; } uml圖解:

6、組合:組合也是關聯關係的一種特例,這種關係比聚合更強,也稱為強聚合

組合同樣體現整體與部分間的關係,但此時整體與部分是不可分的,整體的生命週期結束也就意味著部分的生命週期結束,比如人和頭,輪胎和汽車 uml圖解:
關聯、聚合和組合區別圖解:
幾種關係所表現的強弱程度依次為:組合>聚合>關聯>依賴