並查集學習筆記
UML筆記
UML概述
系統靜態建模
- 類圖:顯示了類(及其介面)、類的內部結構、以及與其他類的聯絡。是面向物件分析與設計所得到的最重要的模型
- 物件圖:展示了一組物件以及它們之間的關係。用物件圖說明在類圖中的事物的例項的資料結構和靜態快照
系統動態建模
- 用例圖:需求模型
- 狀態圖:描述物件的狀態及其狀態轉移,從而更精確的定義物件的操作
- 順序圖:注重訊息的時間次序。可以用來表示一組物件之間的互動情況。
用例圖
用例主要用於描述系統應該具備什麼樣的功能
參與者
- 代表參與系統互動的使用者、裝置或另一個系統
- 不作為系統的一部分,可以是抽象的
用例
- 用來描述參與者使用系統的方式
- 一個用例規定了系統可以執行的一個動作序列
用例描述的格式要求
- 用例名稱
- 用例編號
- 參與者
- 前置條件
- 後置條件
- 基本事件流S- Subflow
- 異常事件流A-
- 其他事件流
繪製用例圖
用例之間的關係
- 用例和參與者有關聯關係
- 擴充套件和包含是依賴的變體
關聯關係
關聯是參與者和用例之間的唯一關係
包含關係
指一個用例的行為包含了另一個用例的行為
擴充套件關係
基本用例是一個完整的用例,即使沒有子用例的參與,也可以完成一個完整的功能
泛化關係
用來表示繼承關係,可以是用例之間也可以是參與者之間
用例圖例項
BBS論壇
類圖
類圖的基本概念
-
類圖是用來顯示系統中的類、介面以及它們之間的靜態結構和關係的一種靜態模型,它用於描述系統的結構
-
類圖由名稱、屬性、操作三部分組成
類的幾種表示
名稱
-
簡單名:單獨的名稱
-
全名:也稱為路徑名,是在類名前加上包的名稱,如下圖所示,Person就是包名
-
抽象類名:用斜體表示
屬性
-
語法格式:[可見性] 屬性名 [:型別] [多重性] [=初始值] [{特性字串}],如:
+ name :string =mike
-
可見性:
- +表示公有,public,任何類都可以使用
- -表示私有,private,只有本類可以使用
- #表示受保護,protect,只有本類和其子類可以使用
- ~表示包內公有,package,只有在同一包中的類才能使用
- 屬性名:用於表示屬性,使用駝峰命名法
- 型別:字串(string)、浮點型(float)、整型(int)、布林型(Boolean)、列舉型別等
-
多重性:表達屬性值的數目,如
name [0..1]:String
-
初始值:設定屬性的初始值,如
name:String=mike
-
屬性字串:附加資訊,用來說明屬性的特性,如
{readonly}
- 對屬性加下劃線表示該屬性為類變數
案例
操作
-
[可見性] 操作名 [(引數表)] [:返回型別] [{特性字串}],如:
+ move(x:int):boolean
-
可見性:
- + 表示公有,public,任何類都可以使用
- - 表示私有,private,只有本類可以使用
- # 表示受保護,protect,只有本類和其子類可以使用
- ~ 表示包內公有,package,只有在同一包中的類才能使用
- 操作名:描述類的行為的動詞或動詞短語,若操作是抽象操作,則用斜體表示
-
引數表:可選,引數定義方式:”名稱:型別“,多個引數用逗號隔開。引數可以有預設值
- 格式為:[方向] 引數名:型別 [=預設值]
- 方向:可以取值為in(輸入引數,不能修改)、inout(輸入引數,可能修改)、out(輸出引數,可能修改)
- 型別:是引數型別的規約
- 預設值:一個值表示式,可選
- 返回型別:可選,如果是void就省略此選項,返回多個返回值使用表示式列表
-
特性字串:用來說明方法的特性,如:
move(){演算法1}
案例
職責
在操作列表框下的另加一個框,可以用來說明類的職責。
約束
指定該類要滿足的規則
分析識別類
類的三種類型
-
實體類:表示系統儲存和管理的永久資訊,如:學生類、教師類
-
邊界類:表示參與者與系統之間的互動,直接與系統外部進行互動,如:登入頁面類
-
控制類:表示系統在執行過程中的業務控制邏輯,如:學生管理類
識別類
-
識別實體類:實體類通常是用例中的參與物件,對應現實世界的事物
-
識別邊界類:通常一個參與者與用例之間的互動對應著一個邊界類
-
識別控制類:通常在現實世界沒有對應的事物,一般一個用例對應一個控制類
類之間的關係
泛化
繼承關係,一般和特殊的關係
實現
在介面與實現該介面的類之間的關係
聚合
表示整體/部分的關係,聚合是一種特殊的關聯,部分可以脫離整體獨立存在
組合
表示更強的聚合,此時生命週期是一致的,成員類不能脫離組合類獨立存在
關聯
-
關聯名:用來標識關聯,描述關聯的含義
-
角色:當類處於關聯的一端時,可以命名在關聯中承擔的角色,可以在角色名前宣告可見性
-
多重性:多少個物件與另一端的一個物件所關聯,格式為<最小值..最大值>,如:0..1,1..*,
-
自關聯:參與關聯的兩個物件是同一類
-
限定符:是一個關聯的屬性或屬性列表,這些屬性的值對關聯相關的物件集進行了劃分,如下圖表示在一個銀行中,一個賬戶對應一個使用者
-
關聯類:在兩個類的關聯中產生的,用一條虛線和關聯線連線。
-
約束:關聯可能對應一個規則,在相應的類附近用{}來說明規則
依賴
表示兩個類在語義上的關係,如引數、呼叫、使用等。
關係的圖形表示
介面
介面的的兩種表示方法
抽象類
-
在類名上面加上<<abstract>>
-
抽象名類名用斜體表示
抽象類的表示
類圖案例
物件圖
基本概念
標識(名字)
用於與其他物件區分開
狀態(屬性)
包括物件的所有屬性和當前屬性的值
行為(方法,事件)
一個物件根據它的狀態的改變和訊息傳送所採取的行動和做出的反應
注意
- 物件之間的連線是鏈
- 物件只有兩個分欄,即標識和狀態
- 物件名需要加下劃線
- 通常要在屬性後列出對應的值
物件名的三種表示方式
鏈
鏈是關聯關係的例項
命名
- 使用相應的關聯命名
- 使用關聯端點的角色命名
- 使用與對應類名一直的角色名命名
物件圖案例
物件圖和類圖的區別
順序圖
是強調訊息時間順序的互動圖,它描述了物件之間傳送訊息的時間順序,用於表示用例中的行為順序
基本概念
角色
角色可以是人或其他系統
物件
-
用矩形框表示,物件名帶有下劃線
-
三種命名方式:
student:Student
student
-
: Student
(表示匿名物件)
-
若物件置於順序圖的頂部,在互動初物件就已經存在,若物件的位置不在頂端,則表示物件是在互動的過程中被建立的。
物件的建立和撤銷
- 建立物件的訊息就是傳送一條create訊息到物件,物件被建立後就會有生命線。
- 刪除物件需要傳送destroys訊息到被刪除物件
生命線
-
由物件底部向下延伸的一條虛線
-
兩種狀態:休眠狀態,啟用狀態
啟用期
又稱控制焦點,代表物件執行一項操作的時期
訊息
-
表示物件之間的通訊
-
可以在訊息上使用[]新增約束
-
訊息型別分為:同步訊息、非同步訊息、返回訊息、自關聯訊息
-
當訊息比較多時,可以對訊息進行編號
訊息的分類
-
同步訊息:在進行下一個活動前必須等待返回訊息
-
非同步訊息:不用等待返回訊息就可以就緒下一個活動
-
返回訊息:返回的訊息
-
自關聯訊息:一個物件自呼叫的情況
組合片段
使用組合片段可以增強處理邏輯
opt
組合片段操作符
順序圖案例
狀態圖
-
通過建立類物件的生存週期模型來描述物件隨時間變化的動態行為。
-
狀態機圖由狀態、轉換、事件、活動和動作5部分組成
狀態
- 初始狀態用實心圓表示
- 終止狀態在初始狀態外面再加一個圓
狀態的四種形式
名稱
表示狀態的名稱,也可以是匿名的
進入/退出動作
表示進入和退出這個狀態時,執行的動作
內部轉換
使用do表示,對事件的響應而執行的活動,不觸發退出狀態。
子狀態
-
巢狀在另一個狀態中的狀態為子狀態,具有子狀態的狀態稱為組合狀態
-
如果目標狀態是複合狀態,巢狀狀態就必須有一個初始狀態
-
歷史狀態機使狀態機可以重新進入退出複合狀態之前最後一個活動子狀態
-
子狀態可以分為順序子狀態(非正交)和併發子狀態(正交),併發狀態之間用虛線隔開
正交子狀態:
歷史狀態
- 淺歷史狀態:儲存與它在同一層次的狀態
- 深歷史狀態:可以記住巢狀層次更深的狀態
延遲事件
延遲的事件是其處理過程被推遲的事件,它們的處理過程要到事件不被延遲的狀態被啟用時才會執行
轉換
-
轉換由五部分組成:源狀態、觸發事件、監護條件、動作和目標狀態
-
觸發事件事件可分為四類,時間事件、訊號事件、呼叫事件、變化事件