類與類的橫向關係

  1. 依賴
  2. UML表示法:虛線 + 箭頭
       

動物呼吸空氣,空氣做爲動物類呼吸函數的參數。(大話設計模式)設計模式

  關係:" ... uses a ..."  人須要空氣數組

依賴就是一個類A使用到了另外一個類B,而這種使用關係是具備偶然性的、臨時性的、很是弱的,可是類B的變化會影響到類A。好比某人要過河,須要借用一條船,此時人與船之間的關係就是依賴。表如今代碼層面,爲類B做爲參數被類A在某個method方法中使用。函數

釋義:一我的自創生就須要不停的呼吸,而人的呼吸功能之因此能維持生命就在於吸進來的氣體發揮了做用,因此說空氣只不過是人類的一個工具,而人並不持有對它的引用。工具

在函數中使用設計

  2.關聯:  朋友的平等關係3d

企鵝和睦候關聯。企鵝類的成員中聲明氣候對象。(大話設計模式)對象

 

  UML表示法:實線 + 箭頭 blog

 

  1. 關係:" ... has a ..."
  2. 關聯體現的是兩個類之間語義級別的一種強依賴關係,好比我和個人朋友,這種關係比依賴更強、不存在依賴關係的偶然性、關係也不是臨時性的,通常是長期性的,並且雙方的關係通常是平等的。關聯能夠是單向、雙向的。表如今代碼層面,爲被關聯類B以類的屬性形式出如今關聯類A中,也多是關聯類A引用了一個類型爲被關聯類B的全局變量。

所謂關聯就是某個對象會長期的持有另外一個對象的引用,而兩者的關聯每每也是相互的。關聯的兩個對象彼此間沒有任何強制性的約束,只要兩者贊成,能夠隨時解除關係或是進行關聯,它們在生命期問題上沒有任何約定。被關聯的對象還能夠再被別的對象關聯,因此關聯是能夠共享的。生命週期

  釋義:人從生至死都在不斷的交朋友,然而沒有理由認爲朋友的生死與個人生死有必然的聯繫,故他們的生命期沒有關聯,個人朋友又能夠是別人的朋友,因此朋友import

能夠共享。

  3.  聚合:  所屬關係

 弱的擁有關係,A對象能夠包含B對象,但B對象不是A對象的一部分。雁羣和大雁的關係。在雁羣的類中,聲明瞭大雁的數組(大話設計模式)

 

  UML表示法:空心菱形 + 實線 + 箭頭 

 

 

  1. 關係:" ... owns a ..."

聚合是強版本的關聯。它暗含着一種所屬關係以及生命期關係。被聚合的對象還能夠再被別的對象關聯,因此被聚合對象是能夠共享的。雖然是共享的,聚合表明的

是一種更親密的關係。

 

 聚合是關聯關係的一種特例,它體現的是總體與部分的關係,即has-a的關係。此時總體與部分之間是可分離的,它們能夠具備各自的生命週期,部分能夠屬於多個總體對象,也能夠爲多個總體對象共享。好比計算機與CPU、公司與員工的關係等,好比一個航母編隊包括海空母艦、驅護艦艇、艦載飛機及核動力攻擊潛艇等。表如今代碼層面,和關聯關係是一致的,只能從語義級別來區分。

釋義:個人家和我之間具備着一種強烈的所屬關係,個人家是能夠分享的,而這裏的分享又能夠有兩種。其一是聚合間的分享,這正如你和你媳婦兒都對這個家有着一樣的強烈關聯;其二是聚合與關聯的分享,若是你的朋友來家裏吃個便飯,估計你不會給他配一把鑰匙。

 

 4.組合

 

 強的擁有關係,嚴格的部分和總體關係,部分和總體生命週期同樣。鳥和翅膀。在鳥的類的構造函數裏,實例化了翅膀類。(大話設計模式)

UML表示法:實心菱形 + 實線 + 箭頭 

 

 

  1. 關係:" ... is a part of  ..."
  1.  
  2. 組合也是關聯關係的一種特例,它體現的是一種contains-a的關係,這種關係比聚合更強,也稱爲強聚合。它一樣體現總體與部分間的關係,但此時總體與部分是不可分的,總體的生命週期結束也就意味着部分的生命週期結束,好比人和人的大腦。表如今代碼層面,和關聯關係是一致的,只能從語義級別來區分。

組合是關係當中的最強版本,它直接要求包含對象對被包含對象的擁有以及包含對象與被包含對象生命期的關係。被包含的對象還能夠再被別的對象關聯,因此被包含對象是能夠共享的,然而毫不存在兩個包含對象對同一個被包含對象的共享。

 

釋義:組合關係就是總體與部分的關係,部分屬於總體,總體不存在,部分必定不存在,然而部分不存在總體是能夠存在的,說的更明確一些就是部分必須創生於總體創生以後,而銷燬於總體銷燬以前。部分在這個生命期內能夠被其它對象關聯甚至聚合,但有一點必須注意,一旦部分所屬於的總體銷燬了,那麼與之關聯的對象中的引用就會成爲空引用,這一點能夠利用程序來保障。心臟的生命期與人的生命期是一致的,若是換個部分就不那麼必定,好比闌尾,不少人在創生後的某個時間對其厭倦便提早銷燬了它,可它和人類的關係不可辯駁的屬於組合。

相關文章
相關標籤/搜索