UML概述
UML簡介
UML (Unified Modeling Language)為物件導向軟體設計提供統一的、標準的、視覺化的建模語言。適用於描述以用例為驅動,以體系結構為中心的軟體設計的全過程。
UML的定義包括UML語義和UML表示法兩個部分。
- UML語義:UML對語義的描述使開發者能在語義上取得一致認識,消除了因人而異的表達方法所造成的影響。
- UML表示法:UML表示法定義UML符號的表示法,為開發者或開發工具使用這 些圖形符號和文字語法為系統建模提供了標準。
UML模型圖的構成
- 事物(Things):UML模型中最基本的構成元素,是具有代表性的成分的抽象
- 關係(Relationships):關係把事物緊密聯絡在一起
- 圖(Diagrams ):圖是事物和關係的視覺化表示
UML關係
圖例使用astah
軟體繪製
1. 泛化 Generalization:
子類繼承父類的關係
![泛化 Generalization](https://i.iter01.com/images/b9df7f8d6d0c987b56ba95d35544cb0a43154df76c3dcb3d5e285d61c96e1e7e.png)
2. 實現 Relization:
子類實現協議或者介面
![實現 Relization](https://i.iter01.com/images/f5b760f6ebb76bb8e40c4eadbfe6e0ca7ea4433138008356d8bd9d0c0dc2dd3b.png)
3. 依賴 Dependency:
A類中應用了B類,這種關係具有偶然性和臨時性,同時B類發生的變化會影響到A類
![依賴 Dependency](https://i.iter01.com/images/80e0dfc670ef3ced191b148023182a86831042fb472736913f00899cfe842845.png)
4. 雙向關聯 Association:
一種特殊的依賴關係,比較強的依賴關係,一方依賴另一方
集合對映的情況:
1:單個
0..1:單個或者沒有
1..:至少一個
0..:0個或者多個
*:任意個
![雙向關聯 Association](https://i.iter01.com/images/b5fb34c596287ed6b7e3d57a6316cc600f9b67540b007216941873c28af7d304.png)
5. 單向關聯 Directed Associated:
一種特殊的依賴關係,比較強的兩者互為依賴關係
![關聯 Association](https://i.iter01.com/images/4d63789ad48abd75c8e181eba6a381d45da25dad12abe4bb1970e0b2d1db152d.png)
6. 聚合關係 Aggregation:
一種特殊的依賴關係,整體和部分的關係,各自有各自的生命週期,互不干擾,部分強調共享
eg:電腦和電池的關係,電池是共享的,電池也有自己的生命週期
![聚合關係 Aggregation](https://i.iter01.com/images/df1dece0dd7b496b9415d52b4a9923ec62d27b6854b7e9e903873901268b9275.png)
7. 組合關係 Composition:
一種特殊的依賴關係,整體和部分的關係,部分依賴於整體,不能獨立於整體存在
eg.公司和部門
![組合關係 Composition](https://i.iter01.com/images/87126c552bba15417704bc059ae29c4e5227e4f573572b32944dc14174333fdf.png)
常用的UML
類圖
- 屬性的定義:
<屬性訪問許可權> <屬性名> : <屬性型別> - 屬性訪問許可權定義:
public:+
protected:#
package:~
private:- - 定義一個私有的String型別的name屬性:
- name : String
複製程式碼
- 方法的定義:
<方法訪問許可權> <方法名>([方法引數列表]) : <方法的返回值> - 方法訪問許可權定義:
public:+
protected:#
package:~
private:- - 定義一個公有的makeSound方法:
+ makeSound() : void
複製程式碼
![泛化 Generalization](https://i.iter01.com/images/25f67f522484f7e957ff5551bfbbaa35cd73b4fdebecf580b556418b75652bba.png)
用例圖
用例圖是從使用者角度描述系統功能, 是使用者所能觀察到的系統功能的模型圖,用例是系統中的一個功能單元
- 參與者與用例之間的關係
關聯: 表示參與者與用例之間的互動,通訊途徑。 (關聯有時候也用帶箭頭的實線來表示,這樣的表示能夠顯示地表明發起用例的是參與者。)
- 用例之間的關係
包含<>:箭頭指向的用例為被包含的用例,稱為包含用例;箭頭出發的用例為基用例。包含用例是必選的,如果缺少包含用例,基用例就不完整;包含用例必須被執行,不需要滿足某種條件;其執行並不會改變基用例的行為。
擴充套件<>:箭頭指向的用例為被擴充套件的用例,稱為擴充套件用例;箭頭出發的用例為基用例。擴充套件用例是可選的,如果缺少擴充套件用例,不會影響到基用例的完整性;擴充套件用例在一定條件下才會執行,並且其執行會改變基用例的行為。
- 參與者之間的關係
泛化:發出箭頭的事物“is a”箭頭指向的事物。泛化關係是一般和特殊關係,發出箭頭的一方代表特殊的一方,箭頭指向的一方代表一般一方。特殊一方繼承了一般方的特性並增加了新的特性。
![用例圖](https://i.iter01.com/images/515556e968d8fe17db68560f5686387bd7ef9f6d62697c1447742c02b0fb51f4.png)
時序圖
- 順序圖用來表示用例中的行為順序。當執行一個用例行為時,順序圖中的每條訊息對應了一個類操作或狀態機中引起轉換的事件。
- 順序圖展示物件之間的互動,這些互動是指在場景或用例的事件流中發生的。 順序圖屬於動態建模。
- 順序圖的重點在訊息序列上,也就是說,描述訊息是如何在物件間傳送和接收的。表示了物件之間傳送訊息的時間順序。
- 瀏覽順序圖的方法是:從上到下檢視物件間交換的訊息。
以微信支付為例的一個時序圖:
![時序圖](https://i.iter01.com/images/9c34e1b65f471e901eb9d1769e02726b01e4e0c9d822a790d2edf66f7dec460e.png)