UML 能夠幫助咱們作軟件的需求分析和軟件設計,它可以直觀、形象、嚴謹地描述出業務概念、業務流程、客戶需求。UML是一種基於面向對象的可視化的通用建模語言。它提供一組具備明肯定義的圖形符號,能夠創建清晰的模型便於交流,同時全部的開發人員均可以無歧義地理解這個模型。html
UML是一種富有表達力的語言,能夠描述開發所須要的各類視圖,並以此爲基礎組建系統。異步
五種圖定義:ide
1.用例圖:從用戶角度描述系統功能,並指各功能的操做者。oop
2.靜態圖:包括類圖,包圖,對象圖。ui
類圖:描述系統中類的靜態結構.net
包圖:是包和類組成的,表示包與包之間的關係,包圖描述系統的分層結構設計
對象圖:是類圖的實例3d
3.行爲圖:描述系統動態模型和對象組成的交換關係。包括狀態圖和活動圖htm
活動圖:描述了業務實現用例的工做流程對象
狀態圖:是描述狀態到狀態控制流,經常使用於動態特性建模
4.交互圖:描述對象之間的交互關係
順序圖:對象之間的動態合做關係,強調對象發送消息的順序,同時顯示對象之間的交互
合做圖:描述對象之間的協助關係
5.實現圖:
配置圖:定義系統中軟硬件的物理體系結構
圖片來自 火球UML大戰
用例圖表達的是什麼角色(Actor)可以作什麼事情(use case).
簡單例子:
注意:擴展箭頭執行被擴展對象。
圖片來自:火球UML大戰
類圖描述系統中類的靜態結構。不只定義系統中的類,類之間的聯繫如關聯、依賴、聚合等,也包括類的內部結構(類的屬性和操做),幫助人們簡化對系統的理解。
類圖中的「類」與面嚮對象語言中的「類」的概念是對應的,是對現實世界中的事物的抽象。
UML支持的可見性標誌:(+Public)(-private) (#protected) (~package)
關聯關係(Association)關係式類與類之間最經常使用的一種關係,他是一種結構化關係,用於表示對象與另外一個類對象之間有聯繫。如班級和學生。用實線鏈接有關聯關係的兩個類。
有兩種表示法,一種是空心菱形,一種是實心菱形。 實心菱形更強烈,關係更緊密。
空心菱形的中文術語標準說法是聚合(Aggregation),實心菱形是組合(Composition)。
汽車和發動機是聚合。 杯子和杯柄是組合。
關係爲「has a 」。 總體和部分之間的關係。
具備組合關係的兩個類,他們的生命週期是一致的。
菱形指向頂端
在面向對象中通常稱爲繼承關係,存在於父類於子類、父接口與子接口之間。
箭頭指向父類
依賴關係體如今某個類的方法使用另外一個類的對象做爲參數。 之間的關係爲「使用」。
依賴關係使用一條帶箭頭的虛線表示,如A----->B(A依賴於B).
一個好的例子:
圖片來自: http://www.360doc.com/content/13/0304/13/10504424_269223190.shtml
活動圖描述系統的動態行爲。
每一個活動指的是一個執行步驟或者一個操做。
活動圖描述的是系統內部的邏輯執行過程。
圖片來自:火龍果軟件
圖片來自:火龍果軟件
順序圖是用來表示用例中的行爲順序。
順序圖包含了四個元素:對象(Object)、聲明線(Lifeline)、消息(Message)和激活(Activation)
對象帶下劃線, 傳遞消息是實線實體箭頭,返回消息是虛線
消息體:實心箭頭(同步調用操做) ; 棍型箭頭(異步操做)
<1> 點餐
圖片來自:火球UML大戰
loop:循環,在知足循環條件的前提下,不斷地重複作某些事情。
alt : alternative的縮寫,條件分分支,根據不一樣的條件選擇不一樣的分支。
opt : optional 的縮寫,可選分支,知足必定條件則執行該分支,不然就跳過。
圖片來自:火球UML大戰
參考資料:
《火球UML大戰》
https://blog.csdn.net/lovelion/article/details/7838679
https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-class-diagram/