前言 現在,很少有人和90年代一樣,自己去實現一個軟體的各個方面,也就是說,在工作中,和人溝通是必備的技能。那麼,作為一枚碼農,如何和他人溝通呢?這就要依靠本文的主題了——UML。 簡介 UML——Unified modeling language UML(統一建模語言),是一種用於軟體系統分析和設 ...
前言
現在,很少有人和90年代一樣,自己去實現一個軟體的各個方面,也就是說,在工作中,和人溝通是必備的技能。那麼,作為一枚碼農,如何和他人溝通呢?這就要依靠本文的主題了——UML。
簡介
UML——Unified modeling language UML(統一建模語言),是一種用於軟體系統分析和設計的語言工具,它用於幫助軟體開發人員進行思考和記錄思路的結果。UML本身是一套符號的規定,就像數學符號和化學符號一樣,這些符號用於描述軟體模型中的各個元素和他們之間的關係,比如類、介面、實現、泛化、依賴、組合、聚合等。
UML分類
1.用例圖
2.靜態結構圖:
- 類圖(最重要)
- 對象圖
- 包圖
- 組件圖
部署圖
3.動態結構圖
- 交互圖(時序圖與協作圖)
- 狀態圖
活動圖
UML軟體
UML的繪製軟體有很多,可以參見: https://www.zhihu.com/question/20144020 。筆者使用過兩種UML插件:AmaterasUML 和 PlantUML,個人推薦使用PlantUML,能夠以編碼的方式來繪製UML。官方教程:http://plantuml.com/zh/。
UML類圖
在本文中,我們只要講述類圖的相關知識。
定義
用於描述系統中的類(對象)本身的組成和類(對象)之間的各種靜態關係。
類之間的關係
依賴、泛化(繼承)、實現、關聯、聚合與組合。
類圖——依賴關係(Dependence)
所謂依賴,比如A類中用到了B類,那麼我們就說A類依賴B類。
再來一個詳細一點的例子:
總結
- 類中用到了對方
- 是類的成員變數
- 是類的方法的返回值
- 是類的方法的參數
方法中用到
類圖——泛化關係(generalization)
泛化關係就是繼承關係,是依賴關係的一種。繪圖的時候註意:子類指向基類。
小結
泛化關係實際上就是繼承關係。
如果A類繼承了B類,我們就說A和B存在泛化關係。
----------------------------------------------------------------------
類圖——實現關係(Implementation)
實現關係實際上就是A類實現B介面, 他是依賴關係的特例
----------------------------------------------------------------------
類圖——關聯關係(Association)
關聯關係就是依賴關係的一種特例,講的主要是類和類的聯繫。
關聯關係具有導航性:即單向關係還是雙向關係。
關聯關係具有多重性:如“1”(表示有且僅有一個),“0...”(表示0個或者多個),“0, 1”(表示0個或者一個),“n...m”(表示n到 m個都可以),“m...*”(表示至少m個)。
----------------------------------------------------------------------
類圖——聚合關係(Aggregation)
聚合關係表示的是整體和部分的關係, 整體與部分可以分開。 聚合關係是關聯關係的特例,所以他具有關聯的導航性與多重性。如:一臺電腦由鍵盤(keyboard)、顯示器(monitor),滑鼠等組成;組成電腦的各個配件是可以從電腦上分離出來的, 使用帶空心菱形的實線來表示:
---------------------------------------------------------------------
類圖——組合關係(Composition)
組合關係同樣是表示整體和部分的關係,不過,和聚合關係不同的是:整體和局部不可分開。比如一個人Person和他的頭Head以及身份證IDCard的關係:Person和Head的關係就是組合,Person和IDCard的關係就是聚合。
但是,當我們刪除一個人Person的時候要求同時刪除對應的IDCard(級聯刪除),我們就可以把他們看作是組合關係了。