看懂UML類圖和時序圖

2020-12-05 酷扯兒

本文轉載自【微信公眾號:五角錢的程式設計師,ID:xianglin965】

經微信公眾號授權轉載,如需轉載與原文作者聯繫

第一時間關注技術乾貨!

一起學習、成長、溫情的熱愛生活

圖丨pexels

這裡不會將UML的各種元素都提到,我只想講講類圖中各個類之間的關係;能看懂類圖中各個類之間的線條、箭頭代表什麼意思後,也就足夠應對日常的工作和交流;同時,我們應該能將類圖所表達的含義和最終的代碼對應起來;有了這些知識,看後面的設計模式結構圖就沒有什麼問題了;

從一個示例開始

請看以下這個類圖,類之間的關係是我們需要關注的:

1.車的類圖結構為<>,表示車是一個抽象類;

2.它有兩個繼承類:小汽車和自行車;它們之間的關係為實現關係,使用帶空心箭頭的虛線表示;

3.小汽車為與SUV之間也是繼承關係,它們之間的關係為泛化關係,使用帶空心箭頭的實線表示;

4.小汽車與發動機之間是組合關係,使用帶實心箭頭的實線表示;

5.學生與班級之間是聚合關係,使用帶空心箭頭的實線表示;

6.學生與身份證之間為關聯關係,使用一根實線表示;

7.學生上學需要用到自行車,與自行車是一種依賴關係,使用帶箭頭的虛線表示;

下面我們將介紹這六種關係;

類之間的關係

1.泛化關係(generalization)

類的繼承結構表現在UML中為:泛化(generalize)與實現(realize):

繼承關係為 is-a的關係;兩個對象之間如果可以用 is-a 來表示,就是繼承關係:(…是…)

eg:自行車是車、貓是動物

泛化關係用一條帶空心箭頭的直接表示;如下圖表示(A繼承自B);

eg:汽車在現實中有實現,可用汽車定義具體的對象;汽車與SUV之間為泛化關係;

註:最終代碼中,泛化關係表現為繼承非抽象類;

2.實現關係(realize)

實現關係用一條帶空心箭頭的虛線表示;

eg:」車」為一個抽象概念,在現實中並無法直接用來定義對象;只有指明具體的子類(汽車還是自行車),才 可以用來定義對象(」車」這個類在C++中用抽象類表示,在JAVA中有接口這個概念,更容易理解)

註:最終代碼中,實現關係表現為繼承抽象類;

3.聚合關係(aggregation)

聚合關係用一條帶空心菱形箭頭的直線表示,如下圖表示A聚合到B上,或者說B由A組成;

聚合關係用於表示實體對象之間的關係,表示整體由部分構成的語義;例如一個部門由多個員工組成;

與組合關係不同的是,整體和部分不是強依賴的,即使整體不存在了,部分仍然存在;例如, 部門撤銷了,人員不會消失,他們依然存在;

4.組合關係(composition)

組合關係用一條帶實心菱形箭頭直線表示,如下圖表示A組成B,或者B由A組成;

與聚合關係一樣,組合關係同樣表示整體由部分構成的語義;比如公司由多個部門組成;

但組合關係是一種強依賴的特殊聚合關係,如果整體不存在了,則部分也不存在了;例如, 公司不存在了,部門也將不存在了;

5.關聯關係(association)

關聯關係是用一條直線表示的;它描述不同類的對象之間的結構關係;它是一種靜態關係, 通常與運行狀態無關,一般由常識等因素決定的;它一般用來定義對象之間靜態的、天然的結構;所以,關聯關係是一種「強關聯」的關係;

比如,乘車人和車票之間就是一種關聯關係;學生和學校就是一種關聯關係;

關聯關係默認不強調方向,表示對象間相互知道;如果特別強調方向,如下圖,表示A知道B,但 B不知道A;

註:在最終代碼中,關聯對象通常是以成員變量的形式實現的;

6.依賴關係(dependency)

依賴關係是用一套帶箭頭的虛線表示的;如下圖表示A依賴於B;他描述一個對象在運行期間會用到另一個對象的關係;

與關聯關係不同的是,它是一種臨時性的關係,通常在運行期間產生,並且隨著運行時的變化;依賴關係也可能發生變化;

顯然,依賴也有方向,雙向依賴是一種非常糟糕的結構,我們總是應該保持單向依賴,杜絕雙向依賴的產生;

註:在最終代碼中,依賴關係體現為類構造方法及類方法的傳入參數,箭頭的指向為調用關係;依賴關係除了臨時知道對方外,還是「使用」對方的方法和屬性;

時序圖

為了展示對象之間的交互細節,後續對設計模式解析的章節,都會用到時序圖;

時序圖(Sequence Diagram)是顯示對象之間交互的圖,這些對象是按時間順序排列的。時序圖中顯示的是參與交互的對象及其對象之間消息交互的順序。

時序圖包括的建模元素主要有:對象(Actor)、生命線(Lifeline)、控制焦點(Focus of control)、消息(Message)等等。

關於時序圖,更多實例應用,參見後續章節模式中的時序圖;

所有巧合的是要麼是上天註定要麼是一個人偷偷的在努力。

結束!

相關焦點

  • UML對象圖和類圖關係解析
    UML對象圖和類圖關係解析 UML共有九種視圖,它們之間各有自己的特點和作用,它們之間有什麼聯繫嗎,這裡就向大家介紹一下UML對象圖和UML類之間的聯繫,希望通過本文的學習你對UML的圖形之間的關係有一定的認識。
  • 如何看懂時序圖(經典)
    發現了麼,寫指令和寫數據,差別僅僅在於RS的電平不一樣而已。以下是LCD1602的時序圖:  大家要慢慢學會看時序圖,要知道操作一個器件的精華便蘊藏在其中,看懂看準了時序,你操控這個晶片就是非常容易的事了。
  • UML類圖中的四種關係深入剖析
    UML類圖中的四種關係深入剖析 UML類圖你是否熟悉,這裡就向大家介紹一下UML類圖中的四種關係,相信通過本文的介紹大家對UML類圖有更加深刻的認識,歡迎大家一起來學習UML類圖。
  • 深入剖析UML類圖依賴關係
    深入剖析UML類圖依賴關係 UML類中有泛化,依賴,關係,和聚集等關係,你是否都熟悉,這裡就向大家介紹一下UML類圖依賴關係,希望通過本文的學習你對UML類圖有更深入的認識。
  • 深入剖析靜態UML模型圖
    這九種UML模型圖各有側重,如用例圖側重描述用戶需求,類圖側重描述系統具體實現;描述的方面都不相同,如類圖描述的是系統的結構,序列圖描述的是系統的行為;抽象的層次也不同,如構件圖描述系統的模塊結構,抽象層次較高,類圖是描述具體模塊的結構,抽象層次一般,對象圖描述了具體的模塊實現,抽象層次較低。
  • UML建模工具中的五大視圖
    ,用例圖由執行者和用例組成(執行者對系統做什麼的)執行者主要可分為四類:主要執行者–直接與系統交互的人,次要執行者–涉及到系統維護的人,外部硬體–運行應用的非計算機的系統部分,其他系統–為其工作需要與你系統交互的外部系統4.結構視圖UML建模工具中結構視圖代表系統的靜態方面,包含類圖(描述不同的類和它們的關聯,描述系統中聲明的類
  • 快速學習時序圖:時序圖簡介、畫法及實例
    下面本文綜合參考了多篇時序圖的教程,根據作者的思路將時序圖做了更深入的講解。一、 什麼是時序圖?時序圖(Sequence Diagram),亦稱為序列圖、循序圖或順序圖,是一種UML交互圖。它通過描述對象之間發送消息的時間順序顯示多個對象之間的動態協作。
  • UML圖形中UML狀態圖和組件圖用法實例解析
    UML圖形中UML狀態圖和組件圖用法實例解析 本文向大家介紹一下UML圖形中的UML狀態圖和組件圖,這兩種圖各有各的特點和作用,相信通過本文的介紹你一定會有不少收穫。
  • 十分鐘看懂時序資料庫(III)- 壓縮
    物聯網鄰域近期如火如荼,網際網路和傳統公司爭相布局物聯網。作為物聯網鄰域數據存儲的首選時序資料庫也越來越多進入人們的視野,而早在2016年7月,百度雲在其天工物聯網平臺上發布了國內首個多租戶的分布式時序資料庫產品TSDB,成為支持其發展製造,交通,能源,智慧城市等產業領域的核心產品,同時也成為百度戰略發展產業物聯網的標誌性事件。
  • UML實例:ATM的狀態圖 活動圖和協作圖詳解
    UML實例:ATM的狀態圖 活動圖和協作圖詳解 UML統一建模語言在軟體開發過程中經常會用到,這裡就向大家介紹一個UML實例:ATM取款機系統,本文向大家介紹一下ATM中的狀態圖,活動圖和協作圖,希望本文的介紹對你的學習有所幫助。
  • 基於UML的校園一卡通管理系統的分析與設計
    其中在第一步與第二步中所建立的模型都是靜態的,包括用例圖、類圖〈包含包〉、對象圖、組件圖和配置圖等五個圖形,是標準建模語言UML 的靜態建模機制。其中第三步中所建立的模型或者可以執行,或者表示執行時的時序狀態或交互系,它包括狀態圖、活動圖、順序圖和合作圖等四個圖形。
  • UML中關聯,組合與聚合等關係的辨析
    關聯:關聯是一種最普遍和常見的關係形式。一般是指一個對象可以發消息給另外一個對象。典型的實現情況下指某個對象有一個指針或者引用指向一個實體變量,當通過方法的參數來傳遞或者創建本地變量來訪問這種情況也可以稱之為關聯。
  • 3分鐘弄懂時序圖、活動圖、狀態圖、協作圖的區別
    時序圖用於描述對象之間的傳遞消息的時間順序, 即用例中的行為順序.當執行一個用例時, 時序圖中的每條消息對應了一個類操作或者引起轉換的觸發事件. 在 UML 中, 時序圖表示為一個二維的關係圖, 其中, 縱軸是時間軸, 時間延豎線向下延伸. 橫軸代表在協作中各個獨立的對象.
  • 系統架構——掌握和使用UML包圖模型
    例如在上圖中,讀者管理子系統需要通過圖書管理子系統獲取可借閱的圖書,同時又需要從系統維護子系統中獲取登錄讀者的權限,因此讀者管理子系統依賴於圖書管理子系統和系統維護子系統。另外,圖書管理子系統也依賴於系統維護子系統。包的依賴性表示一個包中的結構或代碼依賴於另一個包。
  • ...電路和時序邏輯電路比較_組合邏輯電路和時序邏輯電路有什麼區別
    打開APP 組合邏輯電路和時序邏輯電路比較_組合邏輯電路和時序邏輯電路有什麼區別 發表於 2018-01-30 17:26:04
  • 組合邏輯電路和時序邏輯電路比較_組合邏輯電路和時序邏輯電路有...
    打開APP 組合邏輯電路和時序邏輯電路比較_組合邏輯電路和時序邏輯電路有什麼區別 發表於 2018-01-30 17:26:04
  • 從靜態時序分析到SDRAM時序收斂(上篇)
    我們直接來看這個圖,     要看懂這個圖,當然還需要有一個模型     時序圖上的第一個時鐘,即我們的源時鐘,或者說是我們的晶振時鐘,從晶振到達源寄存器,這段路程肯定是有延遲的,我們把這段延遲叫做Tc2s,也即我們的clk1.
  • 簡單的時序電源插座電路圖
    打開APP 簡單的時序電源插座電路圖 家電資料維修網 發表於 2020-03-30 17:20:11 本文介紹專為電腦設計的時序控制電源插座,稍加改動也可以用到其他的需要時序控制的電路中去。電路圖如下所示。
  • UML用例建模的慨念和應用
    它融入了軟體工程領域的新思想、新方法和新技術。它的作用域不限於支持面向對象的分析與設計,還支持從需求分析開始的軟體開發的全過程。在系統分析階段,我們一般用UML來畫很多圖,主要包括用例圖、狀態圖、類圖、活動圖、序列圖、協作圖、構建圖、配置圖等等,要畫哪些圖要根據具體情況而定。其實簡單的理解,也是個人的理解,UML的作用就是用很多圖從靜態和動態方面來全面描述我們將要開發的系統。
  • 不看這4個數你買內存就虧了:內存時序了解下-內存, ——快科技...
    內存時序16-18-18-36內存時序是描述同步動態隨機存取存儲器(SDRAM)性能的四個參數:CL、TRCD、TRP和TRAS,單位為時鐘周期。它們通常被寫為四個用破折號分隔開的數字,列如上圖的16-18-18-36。第四個參數經常被省略,而有時還會加入第五個參數:Command rate(命令速率),通常為2T或1T,也寫作2N、1N。這些參數指定了影響隨機存儲存儲器速度的延遲時間。較低的數字通常意味著更快的性能,所以也就是越小越好啦,通常以納秒(ns)為單位。