【工具大道】UML的点点滴滴
本文地址
?
?
? ? ? 點擊關注微信公眾號 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底部的虛線; 實線箭頭水平放置,?越靠近頂端越早被發送.
?時序圖軌跡?: 時序圖提供了隨時間推移的,?清晰的?可視化的軌跡;
3.2) 時序圖組成
??時序圖組成?: 時序圖包括四個元素?對象(Object),?生命線(Lifeline),?激活(Activation),?消息(Message);(1) 對象(Object)
對象?: 時序圖中的對象在交互中扮演的角色就是對象;
對象的符號?: 時序圖中的對象與對象圖中的表示方法一樣, 使用矩形將對象名稱包含起來, 并且對象名稱下有下劃線;
對象創建時機?: 對象可以在交互開始的時候創建, 也可以在交互過程中進行創建;
--?處于頂部?: 如果對象的位置在時序圖頂部, 說明在交互開始的時候對象就已經存在了;?
--?不在頂部?:?如果對象的位置不在頂部, 那么對象在交互過程中創建的;
(2) 生命線(Lifeline)
生命線?: 生命線是一條垂直的虛線, 這條虛線表示對象的存在, 在時序圖中, 每個對象的底部都有生命線;
生命線作用?: 生命線是一個時間線, 從時序圖頂部一直到底部都存在, 其長度取決于交互的時間;
對象的生命線?: 對象與生命線結合在一起就是對象的生命線, 這個概念包含對象圖標 以及 對象下面的生命線圖標?如上圖;
(3) 激活(Activation)
激活(Activation)?: 代表時序圖中對象執行一項操作的時期, 激活期可以理解為語義中 {} 中的內容, 表示該對象被占用以完成某個任務;
去激活(Deactivation)?: 指對象處于空閑狀態, 在等待消息激活這個對象;
激活的表示?: 當對象處于激活時期, 生命線可以拓寬為矩形, 這個矩形條成為激活條;?
激活去激活的時機?:?
--?激活?: 對象激活是在激活條的頂部激活;
--?去激活?: 激活條的底部去激活, 通常發生在一個消息離開對象生命線;?
(4) 消息
消息概念?: 定義?交互?和?協作?中?交換信息?的類, 對 對象之間的?通信內容 建模;
消息動作?:?
--?動作種類?: 消息允許在實體間傳遞信息 (傳遞參數), 允許實體請求其它服務, 對象之間通過 發送 和 接收 消息 進行通信;?
--?產生結果?:?消息可以觸發操作,?喚起信號, 或使目標對象創建 或 銷毀;
消息的異步和同步通信?:?
--?異步通信?:?消息是信號的時候, 發送信號之后, 等待對方觸發相應方法, 這是明確的 命名的 對象間的異步通信;
--?同步通信?: 直接調用對象的方法, 執行方法返回結果, 這種具有返回控制機制的操作是同步通信;
時序圖和協作圖中消息的區別?: 時序圖中的消息強調順序, 協作圖中的消息強調交換消息的對象間的關系;
消息類型?:
--??: 兩個對象間繪制消息;
--??: 兩個對象之間的過程調用;
--??: 兩個對象之間的異步消息;
--??: 過程調用中返回的消息;
?--??: 繪制反身消息;
?
3.3)一個時序圖示例
?
?4. 參考資料
1)看懂UML類圖和時序圖:http://www.cnblogs.com/me115/p/4092632.html
2)UML入門 之 交互圖 -- 時序圖 協作圖詳解 :http://blog.csdn.net/doniexun/article/details/38317537
轉載于:https://www.cnblogs.com/aiweixiao/p/6526137.html
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!總結
以上是生活随笔為你收集整理的【工具大道】UML的点点滴滴的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CodeForces 173B Cham
- 下一篇: List.Sort用法