1. 設計模式學習基礎之UML類圖

設計模式學習基礎之UML–類圖

瞭解UML圖

UML——Unified modeling language UML (統一建模語言),是一種用於軟件系統分析和設計的語言工具,它用於幫助軟件開發人員進行思考和記錄思路的結果。

UML 本身是一套符號的規定,就像數學符號和化學符號一樣,這些符號用於描述軟件模型中的各個元素和他們之間的關係,比如類、接口、實現、泛化、依賴、組合、聚合等。

UML 圖與寫文章差不多,都是把自己的思想描述給別人看,關鍵在於思路和條理,UML 圖分類

  1. 用例圖(use case)
  2. 靜態結構圖: 類圖、對象圖、包圖、組件圖、部署圖
  3. 動態行爲圖:交互圖(時序圖與協作圖)、狀態圖、活動圖

類圖是描述類與類之間的關係的,是 UML 圖中最核心的,在學習設計模式時,我們必然會接觸到UML圖中的類圖,所以下面我們詳細瞭解一下UML的類圖,如果你對UML圖感興趣,可以看一下這篇文章–

UML學習入門就這一篇文章

UML 類圖

用於描述系統中的 類( 對象) 本身的組成和類( 對象) 之間的各種靜態關係。
類之間的關係: 依賴、泛化(繼承)、實現、關聯、聚合與組合。

1. idea查看類圖的方法

首先需要進行以下設置(也不是必須的,不建議設置):

在這裏插入圖片描述

使用Ctrl + ALT + U查看類圖,下面這個就沒有進行上面設置生成的類圖這樣結構很清晰,因爲一個類中的方法和屬性往往有很多,所以添加生成的類圖比較臃腫…

在這裏插入圖片描述

idea這樣只能查看類圖,如果進行軟件功能設計,你可以使用一些繪製類圖的工具,比如ProcessOn(可視化編輯)、draw.io(可視化編輯)、PlantUML(代碼生成)等。

2. 類圖–依賴關係(Dependence)

只要是在 類中用到了對方,那麼他們之間就存在依賴關係。

  1. 類中用到了對方
  2. 如果是 類的成員屬性
  3. 如果是 方法的返回類型
  4. 是方法 接收的參數類型
  5. 方法中使用到

出現以上五種情況,類之間就存在依賴關係,由此可見類與類之間產生依賴關係是很常見的。

由類圖表示的話就是:

  • 在UML中,依賴關係用帶箭頭的虛線表示,由依賴的一方指向被依賴的一方
  • 在這裏插入圖片描述
3. 類圖—泛化關係(generalization)

泛化關係實際上就是繼承關係,他是依賴關係的特例。

  1. 如果 A 類繼承了 B 類,我們就說 A 和 B 存在泛化關係

由類圖表示的話就是:

  • 在UML中,泛化關係用帶空心三角形的直線來表示
  • 在這裏插入圖片描述
4. 類圖—實現關係(Implementation)

實現關係實際上就是 是 A 類實現 B 接口,他是依賴關係的特例。

由類圖表示的話就是:

  • 在UML中,實現關係用帶空心三角形的虛線來表示
    - [
5. 類圖—關聯關係(Association)

關聯關係實際上就是類與類之間的聯繫,他是依賴關係的特例。

  1. 兩個相對獨立的對象,當一個對象的實例與另外一個對象的特定實例存在固定關係時,這兩個對象之間就存在關聯關係
  2. 關聯具有導航性:即雙向關係或單向關係
  3. 關係具有多重性:一個類的實例能夠與另一個類的多少個實例相關聯。

單向關聯

A1—>A2: 表示A1認識A2,A1知道A2的存在,A1可以調用A2中的方法和屬性。

場景:訂單和商品,訂單中包括商品,但是商品並不瞭解訂單的存在。

雙向關聯

B1—B2: 表示B1認識B2,B1知道B2的存在,B1可以調用B2中的方法和屬性;同樣B2也知道B1的存在,B2也可以調用B1的方法和屬性

場景:訂單和客戶,訂單屬於客戶,客戶擁有一些特定的訂單。

6. 類圖—聚合關係(Aggregation)

當對象A被加入到對象B中,成爲對象B的組成部分時,對象B和對象A之間爲聚合關係。聚合是關聯關係的一種,是較強的關聯關係,強調的是整體與部分之間的關係。

由類圖表示的話就是:

  • 在UML中,使用帶空心菱形的實線來表示。
7. 類圖—組合關係(Composition)

組合關係:也是整體與部分的關係,但是整體與部分不可以分開。 在程序中我們定義實體:

  1. Person 與 IDCard、Head, 那麼 Head 和 Person 就是 組合,IDCard 和 Person 就是聚合。
  2. 但是如果在程序中 Person 實體中定義了對 IDCard 進行級聯刪除,即刪除 Person 時連同 IDCard 一起刪除,那 麼 IDCard 和 Person 就是組合了。
    在這裏插入圖片描述

小結:

UML雖然不是一門程序設計語言,但他的重要性是不可忽視的。他的重要性主要體現在:

  1. 使複雜的軟件設計更爲簡單,也能夠實現像OOP(面向對象編程)這一類被廣泛應用的概念;
  2. 用理解起來可能更容易的圖來描述,避免了大量的文字;
  3. 使表達和交流概念或系統結構變得更容易;
  4. 在一張圖中就能夠描繪出整個系統;
  5. 程序員使用類圖來描述實際需求時,可讓問題更加清晰明瞭,實現起來更容易。後面會總結設計模式七大原則,繼而通過23種設計模式來探究面嚮對象語言的精髓。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章