依賴(Dependency ) :
含義:是類與類之間的鏈接,表示一個類依賴於另一個類的定義;依賴關係僅僅描述了類與類之間的一種使用與被使用的關係;
體現:在Java和C++中體現爲局部變量、方法/函數的參數或者是對靜態方法的調用;
舉例:人依賴於水和空氣;汽車依賴汽油;
UML圖表示的依賴關係:
依賴:
好比說我要過河,沒有橋怎麼辦,我就去借來一條小船渡過去。我與小船的關係僅僅是使用(借用)的關係。
表如今代碼上,爲依賴的類的某個方法以被依賴的類做爲其參數。或者是class A 的某個方法創造了 class B 的實例抑或對class B的靜態方法的調用。若是A依賴於B,那意味着B的變化可能要求A也發生變化;
java
[java] view plain copy數組
關聯(Association):
含義:類與類之間的連結,關聯關係使一個類知道另一個類的屬性和方法;一般含有「知道」,「瞭解」的含義。關聯能夠是雙向的,也能夠是單向的
體現:在Java和C++中,關聯關係是經過成員變量來實現的;
舉例:「漁民」須要知道「天氣」狀況纔可以出海
UML圖表示的關聯關係:
關聯:
有名的例子:客戶和訂單的關係以及公司和員工的關係,都是關聯關係。還有就是我和個人單車的例子,他們都是一種「擁有」的關係。表如今代碼上,就是一個類包含另外一個類的實例,一般表現爲被關聯類以類屬性的形式出如今關聯類的類定義中,也能夠表現爲關聯類引用了一個類型爲被關聯類的全局變量。關聯可使單向的,也可使雙向的。
函數
[java] view plain copythis
依賴和關聯的區別在於依賴是使用,關聯是擁有.
-------------------------------------------------------------------------------------------------------------
聚合(aggregation):
含義:是關聯關係的一種,是一種強關聯關係(has-a);聚合關係是總體和個體/部分之間的關係;關聯關係的兩個類處於同一個層次上,而聚合關係的兩個類處於不一樣的層次上,一個是總體,一個是個體/部分;在聚合關係中,表明個體/部分的對象有可能會被多個表明總體的對象所共享;
體現:C++中,聚合關係經過將被聚合者的(數組)指針做爲內部成員來實現的;
圖示:空心菱形 + 實線 + 箭頭;箭頭指向被聚合的類,也就是說,箭頭指向個體/部分;
舉例:班級和學生,當班級刪除以後,學生仍是存在,學生還可能被培訓機構引用
UML圖表示的聚合關係:
.net
[java] view plain copy指針
組合(Composition):
含義:它也是關聯關係的一種(is-a),但它是比聚合關係更強的關係.組合關係要求聚合關係中表明總體的對象要負責表明個體/部分的對象的整個生命週期;組合關係不能共享;在組合關係中,若是表明總體的對象被銷燬或破壞,那麼表明個體/部分的對象也必定會被銷燬或破壞,而聚在合關係中,表明個體/部分的對象則有可能被多個表明總體的對象所共享,而不必定會隨着某個表明總體的對象被銷燬或破壞而被銷燬或破壞;blog
體現:在Java和C++中,組合關係是經過成員變量來實現的;
圖示:實心菱形 + 實線 + 箭頭;箭頭指向表明個體/部分的對象,也就是被合成/組合的類的對象;
舉例:一我的由頭、四肢、等各類器官組成,由於人與這些器官具備相同的生命週期,人死了,這些器官也掛了;房子和房間的關係,當房子沒有了,房間一樣不可能單獨存在。
UML圖表示的組合關係:
[java] view plain copy
聚合和組合的區別:聚合是個體離開了總體,依然能夠存在.
組合是個體和總體不能夠分開,個體不能離開總體單獨存在.
依賴,關聯 和聚合,組合的區別:依賴,關聯 : 類之間的關係是在同一層次上. 聚合,組合: 類之間的關係表現爲總體和部分.