UML簡單介紹—類圖這么看就懂了


如何看懂類圖

1、類圖簡介

  描述類的內部結構和類與類之間的關系,是一種靜態結構圖。 在UML類圖中,常見的有以下幾種關系: 泛化(Generalization),  實現(Realization),關聯(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)。

2、各種關系的強弱順序

  泛化 = 實現 > 組合 > 聚合 > 關聯 > 依賴

3、類圖關系

3.1、泛化

  1. 表示繼承關系, 表示類/接口對父類/接口的功能擴展。
  2. java語法中的extends, 用來擴展父類或父接口的功能。
  3. 圖形表示: 空心三角箭頭+實線, 箭頭指向父類或父接口。
  4. A繼承B。

 

  

3.2、實現  

  1. 表示類實現接口定義的行為或功能。
  2. java語法中的implements
  3. 圖形表示:空心三角箭頭+虛線, 箭頭指向接口
  4. A實現B的接口。

 

  

 

3.3、依賴

  1. 可以簡單的理解,就是一個類A使用到了另一個類B,而這種使用關系是具有偶然性的、臨時性的、非常弱的,但是B類的變化會影響到A;比如某人要過河,需要借用一條船,此時人與船之間的關系就是依賴;表現在代碼層面,為類B作為參數、屬性被類A在某個method方法中使用。
  2. java的語法中, 被依賴的對象/類, 以方法參數, 局部變量和靜態方法調用的形式出現。
  3. 圖形表示: 因為依賴和被依賴關系比較弱, 所以使用虛線+箭頭. 箭頭指向被依賴者.而且一般是單向關系。
  4. A依賴B,B是被依賴者。

 

  

 

3.4、關聯

  1. 關聯關系表示類與類之間的連接,它使得一個類知道另外一個類的屬性和方法。比如現實生活中的夫妻, 師生等關系. 長期存在並且是相互的關系. 此外關聯可以表示一對一,一對多, 多對一, 多對多等各種關系。
  2. java語法中, 被擁有者作為擁有者的成員變量存在。
  3. 圖形表示: 因為比依賴關系更強, 所以是實線+箭頭.雙向關聯可以省略箭頭。

  關聯有兩個端點,每個端點可以有一個基數,表示這個關聯的類可以有幾個實例。

    0..1 表示可以有0個或者1個實例

    0..* 表示對實例的數目沒有限制

    1     表示只能有一個實例

    1..* 表示至少有一個實例

  關聯關系體現的是兩個類,或者類與接口之間的強依賴關系,這種關系很強烈,比依賴更強,不是偶然性的,也不是臨時性的,而是一種長期性,相對平等的關系,表現在代碼層面,為被關聯的類B以類屬性的形式出現在類A中,也可能是關聯類A引用了被關聯類B的全局變量。

 

  

 

3.5、聚合

  1. 聚合是關聯關系的特例,是強的關聯關系,聚合是整個與個體的關系,此時整體和部分是可以分離的,他們具有各自的生命周期,部分可以屬於多個對象,也可以被多個對象共享;比如計算機和CPU的關系;在代碼層面聚合與關聯是一致的,只能從語義上來區分。
  2. 聚合關系也是使用實例變量來實現的,在java語法上區分不出關聯和聚合,關聯關系中類出於一個層次,而聚合則明顯的在兩個不同的層次。
  3. 圖形表示: 空心菱形+實線+箭頭, 箭頭指向部分, 菱形指向整體.

 

  

 

3.6、組合

  1. 組合也是關聯關系的一種特例,比聚合更強,是一種強聚合關系。它同樣體現整體與部分的關系,但此時整體與部分是不可分的,整體生命周期的結束也意味着部分生命周期的結束,反之亦然。如大腦和人類。
  2. 體現在代碼層面與關聯時一致的,只能從語義來區分。
  3. 組合與聚合幾乎完全相同,唯一區別就是對於組合,“部分”不同脫離“整體”單獨存在,其生命周期應該是一致的。
  4. 圖形表示: 實心菱形+ 實線+ 箭頭, 菱形指向整體, 箭頭指向部分

  

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM