本文地址 點擊關註微信公眾號 wenyuqinghuai 分享提綱: 1. 概述 2. UML類圖 3. UML時序圖 4. 參考資料 分享提綱: 1. 概述 2. UML類圖 3. UML時序圖 4. 參考資料 1.概述 1.1)百度百科: 又稱統一建模語言或標準建模語言,是始於1997年一個OM ...
點擊關註微信公眾號 wenyuqinghuai
分享提綱:
1. 概述
2. UML類圖
3. UML時序圖
4. 參考資料
1.概述
1.1)百度百科: 又稱統一建模語言或標準建模語言,是始於1997年一個OMG標準,它是一個支持模型化和軟體系統開發的圖形化語言,為軟體開發的所有階段提供模型化和可視化支持,包括由需求分析到規格,到構造和配置 2)【分類】 UML有很多種圖,大體可以分為兩類:結構型的圖(Structure Diagram)
類圖(Class Diagram)
對象圖(Object Diagram)
構件圖(Component Diagram)
部署圖(Deployment Diagram)
包圖(Package Diagram)
行為型的圖(Behavior Diagram)
活動圖(Activity Diagram)
狀態機圖(State Machine Diagram)
順序圖(Sequence Diagram)
通信圖(Communication Diagram)
用例圖(Use Case Diagram)
時序圖(Timing Diagram)
2. UML類圖
2.1)一個示例 2.2)類之間的關係泛化關係(generalization)
類的繼承結構表現在UML中為:泛化(generalize)與實現(realize):
繼承關係為 is-a的關係;兩個對象之間如果可以用 is-a 來表示,就是繼承關係:(..是..)
eg:自行車是車、貓是動物
泛化關係用一條帶空心箭頭的直接表示;如下圖表示(A繼承自B);
eg:汽車在現實中有實現,可用汽車定義具體的對象;汽車與SUV之間為泛化關係;
註:最終代碼中,泛化關係表現為繼承非抽象類;
實現關係(realize)
實現關係用一條帶空心箭頭的虛線表示;
eg:”車”為一個抽象概念,在現實中並無法直接用來定義對象;只有指明具體的子類(汽車還是自行車),才 可以用來定義對象(”車”這個類在C++中用抽象類表示,在JAVA中有介面這個概念,更容易理解)
註:最終代碼中,實現關係表現為繼承抽象類;
聚合關係(aggregation)
聚合關係用一條帶空心菱形箭頭的直線表示,如下圖表示A聚合到B上,或者說B由A組成;
聚合關係用於表示實體對象之間的關係,表示整體由部分構成的語義;例如一個部門由多個員工組成;
與組合關係不同的是,整體和部分不是強依賴的,即使整體不存在了,部分仍然存在;例如, 部門撤銷了,人員不會消失,他們依然存在;
組合關係(composition)
組合關係用一條帶實心菱形箭頭直線表示,如下圖表示A組成B,或者B由A組成;
與聚合關係一樣,組合關係同樣表示整體由部分構成的語義;比如公司由多個部門組成;
但組合關係是一種強依賴的特殊聚合關係,如果整體不存在了,則部分也不存在了;例如, 公司不存在了,部門也將不存在了;
關聯關係(association)
關聯關係是用一條直線表示的;它描述不同類的對象之間的結構關係;它是一種靜態關係, 通常與運行狀態無關,一般由常識等因素決定的;它一般用來定義對象之間靜態的、天然的結構; 所以,關聯關係是一種“強關聯”的關係;
比如,乘車人和車票之間就是一種關聯關係;學生和學校就是一種關聯關係;
關聯關係預設不強調方向,表示對象間相互知道;如果特別強調方向,如下圖,表示A知道B,但 B不知道A;
註:在最終代碼中,關聯對象通常是以成員變數的形式實現的;
依賴關係(dependency)
依賴關係是用一套帶箭頭的虛線表示的;如下圖表示A依賴於B;他描述一個對象在運行期間會用到另一個對象的關係;
與關聯關係不同的是,它是一種臨時性的關係,通常在運行期間產生,並且隨著運行時的變化; 依賴關係也可能發生變化;
顯然,依賴也有方向,雙向依賴是一種非常糟糕的結構,我們總是應該保持單向依賴,杜絕雙向依賴的產生;
註:在最終代碼中,依賴關係體現為類構造方法及類方法的傳入參數,箭頭的指向為調用關係;依賴關係處理臨時知道對方外,還是“使用”對方的方法和屬性;
3.UML時序圖
3.1)時序圖的概念
時序圖定義 : 描述了對象之間傳遞消息的時間順序, 用來表示用例中的行為順序, 是強調消息時間順序的交互圖;
時序圖描述的事物: 時序圖描述系統中類和類之間的交互, 將這些交互建模成消息交換, 時序圖描述了類以及類之間的交換以完成的期望行為的消息, 時序圖中每條消息都代表了類的一個操作 或者 引起狀態機改變的觸發事件;
時序圖表示 : 參與交互的對象在時序圖頂端水平排列, 每個對象的底端繪製了一條垂直虛線, 對象A像對象B發送消息, 用一條帶箭頭的實線表示, 該實線起始於對象A底部的虛線, 終止於對象B底部的虛線; 實線箭頭水平放置, 越靠近頂端越早被髮送.
時序圖軌跡 : 時序圖提供了隨時間推移的, 清晰的 可視化的軌跡;
(1) 對象(Object)
對象 : 時序圖中的對象在交互中扮演的角色就是對象;
對象的符號 : 時序圖中的對象與對象圖中的表示方法一樣, 使用矩形將對象名稱包含起來, 並且對象名稱下有下劃線;
對象創建時機 : 對象可以在交互開始的時候創建, 也可以在交互過程中進行創建;
-- 處於頂部 : 如果對象的位置在時序圖頂部, 說明在交互開始的時候對象就已經存在了;
-- 不在頂部 : 如果對象的位置不在頂部, 那麼對象在交互過程中創建的;
生命線 : 生命線是一條垂直的虛線, 這條虛線表示對象的存在, 在時序圖中, 每個對象的底部都有生命線;
生命線作用 : 生命線是一個時間線, 從時序圖頂部一直到底部都存在, 其長度取決於交互的時間;
對象的生命線 : 對象與生命線結合在一起就是對象的生命線, 這個概念包含對象圖標 以及 對象下麵的生命線圖標 如上圖;
(3) 激活(Activation)
激活(Activation) : 代表時序圖中對象執行一項操作的時期, 激活期可以理解為語義中 {} 中的內容, 表示該對象被占用以完成某個任務;
去激活(Deactivation) : 指對象處於空閑狀態, 在等待消息激活這個對象;
激活的表示 : 當對象處於激活時期, 生命線可以拓寬為矩形, 這個矩形條成為激活條;
激活去激活的時機 :
-- 激活 : 對象激活是在激活條的頂部激活;
-- 去激活 : 激活條的底部去激活, 通常發生在一個消息離開對象生命線;
消息概念 : 定義 交互 和 協作 中 交換信息 的類, 對 對象之間的 通信內容 建模;
消息動作 :
-- 動作種類 : 消息允許在實體間傳遞信息 (傳遞參數), 允許實體請求其它服務, 對象之間通過 發送 和 接收 消息 進行通信;
-- 產生結果 : 消息可以觸發操作, 喚起信號, 或使目標對象創建 或 銷毀;
消息的非同步和同步通信 :
-- 非同步通信 : 消息是信號的時候, 發送信號之後, 等待對方觸發相應方法, 這是明確的 命名的 對象間的非同步通信;
-- 同步通信 : 直接調用對象的方法, 執行方法返回結果, 這種具有返回控制機制的操作是同步通信;
時序圖和協作圖中消息的區別 : 時序圖中的消息強調順序, 協作圖中的消息強調交換消息的對象間的關係;
消息類型 :
-- : 兩個對象間繪製消息;
-- : 兩個對象之間的過程調用;
-- : 兩個對象之間的非同步消息;
-- : 過程調用中返回的消息;
-- : 繪製反身消息;
3.3)一個時序圖示例
4. 參考資料
1)看懂UML類圖和時序圖:http://www.cnblogs.com/me115/p/4092632.html
2)UML入門 之 交互圖 -- 時序圖 協作圖詳解 :http://blog.csdn.net/doniexun/article/details/38317537