1. 程式人生 > 程式設計 >DesignPattern系列__08UML相關知識

DesignPattern系列__08UML相關知識

前言

現在,很少有人和90年代一樣,自己去實現一個軟體的各個方面,也就是說,在工作中,和人溝通是必備的技能。那麼,作為一枚碼農,如何和他人溝通呢?這就要依靠本文的主題了——UML。

簡介

UML——Unified modeling language UML(統一建模語言),是一種用於軟體系統分析和設計的語言工具,它用於幫助軟體開發人員進行思考和記錄思路的結果。UML本身是一套符號的規定,就像數學符號和化學符號一樣,這些符號用於描述軟體模型中的各個元素和他們之間的關係,比如類、介面、實現、泛化、依賴、組合、聚合等。

UML分類

1.用例圖

2.靜態結構圖:

  • 類圖(最重要)
  • 物件圖
  • 包圖
  • 元件圖
  • 部署圖

3.動態結構圖

  • 互動圖(時序圖與協作圖)
  • 狀態圖
  • 活動圖

UML軟體

UML的繪製軟體有很多,可以參見: www.zhihu.com/question/20… 。筆者使用過兩種UML外掛:AmaterasUML 和 PlantUML,個人推薦使用PlantUML,能夠以編碼的方式來繪製UML。官方教程: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(級聯刪除),我們就可以把他們看作是組合關係了。