【UML】統一建模語言
如果是準備學習設計模式的同學,可以只瞭解類圖相關的知識
而如果是在準備軟體設計師考試的同學,或許會對你有點幫助
參考部落格:https://blog.csdn.net/unique_perfect/article/details/104989118
UML 統一建模語言
統一建模語言(UML,Unified Modeling Language)是面向物件軟體的標準化建模語言。UML因其簡單、統一的特點,而且能表達軟體設計中的動態和靜態資訊,目前已成為視覺化建模語言的工業標準。在軟體無線電系統的開發過程中,統一建模語言可以在整個設計週期中使用,幫助設計者縮短設計時間,減少改進的成本,使軟硬體分割最優。
UML 中的三個基本模組:事務,關係,圖。
UML 分類
類就像是工廠中的流水線,而物件就顯示流水線上製作出的產品。
UML 靜態結構圖
靜態結構圖就是基於類用於描述這條流水線的。
圖名 | 作用 |
---|---|
類圖 | 表示分析設計領域的靜態結構 |
物件圖 | 表示系統中的多個物件在某一時刻的狀態 |
包圖 | 對UML的模型元素進行分組整理,還可以表示多個包之間的關係 |
構建圖 | 表示構成軟體的各個可重複再利用的部件的內部結構以及部件之間的相互關係 |
結合結構圖 | 表示具有複雜內部結構的類或者構件的內部結構 |
部署圖 | 表示系統執行時的硬體構成以及硬體節點之間的關係 |
UML 動態行為圖
動態行為圖基於物件用於描述這條流水線上的產品的互動、行為等。
圖名 | 作用 |
---|---|
用例圖 | 表示從系統外部看到的系統所提供給使用者可以使用的功能 |
活動圖 | 表示某個業務的具體處理流程 |
狀態圖 | 表示某個物件在其生命週期內,各個狀態之間的遷移變化及引起狀體遷移的觸發事件之間的關係 |
下面這三種圖都屬於(互動圖)
圖名 | 作用 |
---|---|
順序圖 | 按照時間順序從上到下來表示生命線之間的資訊互動,可結合用例圖表示某個用例的場景。 |
通訊圖 | 以參與互動的生命線之間的連線為著眼點表示生命線之間的資訊互動。互動概念圖:用活動圖的形式表示多個互動之間的控制關係。 |
時序圖 | 表示多個生命線的狀態變化和時間之間的關係。 |
用例圖
用例圖是9種UML圖中比較重要的圖之一,它是由軟體需求分析到最終實現的第一步,描述人們希望如何使用一個系統,最常用來描述系統以及子系統。
用例圖的組成
事務 | 描述 | 圖例 |
---|---|---|
參與者(Actor) | 與應用程式或系統進行互動的使用者、組織或外部系統。 | |
用例(UseCase) | 用例就是外部可見的系統功能,對系統提供的服務進行描述。 | |
子系統(Subsystem) | 用來展示系統的一部分功能,這部分功能聯絡緊密。 |
用例圖所包含的的關係
用例圖中涉及的關係有:關聯、泛化、包含、擴充套件。
a. 關聯(Association)
表示參與者與用例之間的通訊,任何一方都可傳送或接受訊息。
【箭頭指向】:無箭頭,將參與者與用例相連線,指向訊息接收方
b. 泛化(Inheritance)
就是通常理解的繼承關係。在實際應用中很少使用泛化關係,子用例中的特殊行為都可以作為父用例中的備選流存在。
【箭頭指向】:指向父用例
c. 包含(Include)
提取公共互動,提高複用
【箭頭指向】:指向分解出來的功能用例
d. 擴充套件(Extend)
“凍結”基用例以保持穩定,並且動態擴充套件基用例功能
【箭頭指向】:指向基礎用例
例子比如這是一個使用者管理的用例圖
類圖
類圖是描述系統中的類,以及各個類之間的關係的靜態檢視。是面向物件系統建模中最常用和最重要的圖,是定義其他圖的基礎。在UML類圖中,常見的有以下幾種關係:
1.泛化(繼承)(Generalization)
類圖中可以採用一條帶空心三角箭頭的實線,從子類指向父類,或者子介面指向父介面。
類和子類的關係。比如學生類可以繼承人類。
2.實現(Realization)
類圖中可以採用實現用一條箭頭實線表示,指向成員變數類。
兩個類之間的關聯,也可以是一個類和自身的關聯。比如班級類和學生類,學生類作為成員變數存在於班級類中。
3.關聯(Association)
類圖中可以採用實現用一條箭頭實線表示,指向成員變數類。
兩個類之間的關聯,也可以是一個類和自身的關聯。比如班級類和學生類,學生類作為成員變數存在於班級類中。
4.依賴(Dependency)
類圖中可以採用實現用一條箭頭虛線表示,指向入參類。
一個類A使用到了另一個類B,但是這種使用關係是具有偶然性的、臨時性的、非常弱的,但是類B的變化會影響到類A。比如班級類和學生類,班級類作為學生類的方法入參。
5.聚合(Aggregation)
類圖中可以採用實現用一條空心菱形加實線箭頭表示,部分指向整體。
整體和部分的關係。比如大雁和雁群之間的關係,兩者不是生命週期不同。
6.組合(Composition)
類圖中可以採用實現用一條實心菱形加實線箭頭表示,部分指向整體。
整體和部分關係、整體部分不可分離、比聚合更強。
比如大雁和大雁翅膀的關係,兩者是同生共死的。
類圖示例
物件圖、包圖
物件圖的組成
物件圖中的建模元素有物件和鏈
物件之間的關係,被稱為鏈。
物件是類的例項,鏈是關聯的例項
物件的基本特徵可以歸納為物件的屬性和行為兩類,物件名必須小寫
包圖
可類比java中的包機制
包圖只有依賴關係
當一個包將另一個包匯入時,該包裡的元素能夠使用被匯入包裡的元
素,而不必在使用時通過包名指定其中的元素。
例如,當使用某個包中的類時,如果未將包匯入,則需要使用包名加
類名的形式引用指定的類。在匯入關係中,被匯入的包稱為目標包。
要在UML中顯示匯入關係,需要畫一條從包連線到目標包的依賴性箭
頭,再加上字元import,如圖所示。
A包匯入B包,則可以直接使用B包中的類。如果沒有的話,則是B.類表示
活動圖
活動圖本質是上是一種流程圖,但是活動圖是面向物件的,而流程圖是面
向過程的。
活動圖與流程圖的區別
區別 | 流程圖 | 活動圖 |
---|---|---|
描述 | 著重描述處理過程(順序分支迴圈)流程圖做不到 | 描述的則是物件活動的順序關係所遵循的規則。 |
思想 | 面向過程 | 面向物件 |
方向 | 有著嚴格的處理順序和處理時間關係(不能表示併發活動的情形) | 著重表現的是系統的行為,而非處理過程。(能夠表示併發活動的情形) |
活動圖例項
網咖會員系統
順序圖(跟協作圖,也叫做通訊圖等價)
順序圖主要有:物件、生命線、訊息和啟用。用來建模以時間順序安排的物件互動,並且把用例行為分配給類。
- 小人:動作的發起人
- 矩形/小圓圈:物件
- 實線箭頭:呼叫
- 虛線箭頭:返回
- 柱狀:物件的生命週期,柱狀不能斷,在同一流程當中不能斷。
- 回折線:當前物件中的方法執行過程中呼叫自己當前類中的方法
順序圖和協作圖的異同
- 相同點
- 順序圖和協作圖都可以表示物件間的互動關係,但它們的側重點不同。
- 都能體現出系統用例的行為。
異同點 | 順序圖 | 協作圖 |
---|---|---|
物件間通訊方式 | 用訊息的幾何排列關係來表達物件間互動訊息的先後時間順序。 | 用建模物件(或角色)間的通訊關係。 |
描述物件 | 按時間順序描述物件的訊息交換過程 | 它描述物件間的組織協作關係 |
協作圖
與順序圖等價
時序圖
時序圖側重於描述時間對系統互動的影響,因此時序圖的一個重要的特
徵是加入了時間元素。 時序圖上的時間由左到右橫跨頁面。
狀態圖
一般不去描述參與者類物件的狀態。要描述的是系統內部的
核心物件的狀態。
活動圖與狀態圖
活動圖描述的是用例的行為,而狀態圖描述的是物件。
活動圖可以包含多個物件。而狀態圖只可以包含一個物件。
構造實現方式圖
包括有元件圖跟部署圖
元件圖
元件圖顯示軟體元件的組織以及元件之間的依賴關係,包
括原始碼元件、二進位制程式碼元件以及可執行元件。
包括元件、介面、依賴關係
元件圖例項
元件與類的比較
-
相同點
- 兩者都有名稱;
- 都可以實現一組介面;
- 都可以參與依賴關係;
- 都可以被巢狀;
- 都可以有例項;
- 都可以有引數和互動;
-
不同點
- 類描述了軟體設計的邏輯組織和意圖
- 而元件則描述軟體設計的物理實現(即:每個元件體現了系統設計中特定類的實現)
部署圖
元件圖用來建模軟體元件,而部署圖用來對部署系統時涉及到的硬體進行建模。
節點表示一種硬體。元件表示邏輯元素的物理包裝,即類的物理包裝,而節點表示元件的物理配置。
節點的種類:處理器跟裝置。
處理器是能夠執行軟體、具有計算能力的節點。
裝置是沒有計算能力的節點,通常情況下都是通過其介面為外部提供某種服務