文章目錄
設計模式學習基礎之UML
–類圖
瞭解UML圖
UML——Unified modeling language UML (統一建模語言)
,是一種用於軟件系統分析和設計的語言工具,它用於幫助軟件開發人員進行思考和記錄思路的結果。
UML
本身是一套符號的規定,就像數學符號和化學符號一樣,這些符號用於描述軟件模型中的各個元素和他們之間的關係,比如類、接口、實現、泛化、依賴、組合、聚合等。畫
UML
圖與寫文章差不多,都是把自己的思想描述給別人看,關鍵在於思路和條理,UML
圖分類
- 用例圖(use case)
- 靜態結構圖:
類圖
、對象圖、包圖、組件圖、部署圖- 動態行爲圖:交互圖(時序圖與協作圖)、狀態圖、活動圖
類圖是描述類與類之間的關係的,是
UML
圖中最核心的,在學習設計模式時,我們必然會接觸到UML
圖中的類圖,所以下面我們詳細瞭解一下UML的類圖,如果你對UML圖感興趣,可以看一下這篇文章–
UML 類圖
用於描述系統中的 類( 對象) 本身的組成和類( 對象) 之間的各種靜態關係。
類之間的關係: 依賴、泛化(繼承)、實現、關聯、聚合與組合。
1. idea查看類圖的方法
首先需要進行以下設置(也不是必須的,不建議設置):
使用
Ctrl + ALT + U
查看類圖,下面這個就沒有進行上面設置生成的類圖這樣結構很清晰,因爲一個類中的方法和屬性往往有很多,所以添加生成的類圖比較臃腫…idea這樣只能查看類圖,如果進行軟件功能設計,你可以使用一些繪製類圖的工具,比如ProcessOn(可視化編輯)、
draw.io
(可視化編輯)、PlantUML
(代碼生成)等。
2. 類圖–依賴關係(Dependence)
只要是在 類中用到了對方,那麼他們之間就存在依賴關係。
- 類中用到了對方
- 如果是 類的成員屬性
- 如果是 方法的返回類型
- 是方法 接收的參數類型
- 方法中使用到
出現以上五種情況,類之間就存在依賴關係,由此可見類與類之間產生依賴關係是很常見的。
由類圖表示的話就是:
- 在UML中,
依賴關係用帶箭頭的虛線表示,由依賴的一方指向被依賴的一方
。
3. 類圖—泛化關係(generalization)
泛化關係實際上就是繼承關係,他是依賴關係的特例。
- 如果 A 類繼承了 B 類,我們就說 A 和 B 存在泛化關係
由類圖表示的話就是:
- 在UML中,
泛化關係用帶空心三角形的直線來表示
。
4. 類圖—實現關係(Implementation)
實現關係實際上就是 是 A 類實現 B 接口,他是依賴關係的特例。
由類圖表示的話就是:
- 在UML中,
實現關係用帶空心三角形的虛線來表示
。
-
5. 類圖—關聯關係(Association)
關聯關係實際上就是類與類之間的聯繫,他是依賴關係的特例。
- 兩個相對獨立的對象,當一個對象的實例與另外一個對象的特定實例存在固定關係時,這兩個對象之間就存在關聯關係
- 關聯具有導航性:即雙向關係或單向關係
- 關係具有多重性:一個類的實例能夠與另一個類的多少個實例相關聯。
單向關聯
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)
組合關係:也是整體與部分的關係,
但是整體與部分不可以分開
。 在程序中我們定義實體:
Person 與 IDCard、Head, 那麼 Head 和 Person 就是 組合,IDCard 和 Person 就是聚合。
- 但是如果在程序中 Person 實體中定義了對
IDCard
進行級聯刪除,即刪除 Person 時連同IDCard
一起刪除,那 麼IDCard
和 Person 就是組合了。
小結:
UML雖然不是一門程序設計語言,但他的重要性是不可忽視的。他的重要性主要體現在:
- 使複雜的軟件設計更爲簡單,也能夠實現像
OOP(面向對象編程)
這一類被廣泛應用的概念;- 用理解起來可能更容易的圖來描述,避免了大量的文字;
- 使表達和交流概念或系統結構變得更容易;
- 在一張圖中就能夠描繪出整個系統;
程序員使用類圖來描述實際需求時,可讓問題更加清晰明瞭,實現起來更容易。
後面會總結設計模式七大原則,繼而通過23種設計模式來探究面嚮對象語言的精髓。