UML基礎(chǔ)入門

一、UML語言概述

1997年,OMG組織(Object Management Group,對象管理組織)發(fā)布了統(tǒng)一建模語言(Unified Modeling Language,UML)。

UML的目標(biāo)之一就是為開發(fā)團(tuán)隊(duì)提供標(biāo)準(zhǔn)的通用的面向?qū)ο笤O(shè)計(jì)語言。

UML提供了一套IT專業(yè)人員期待多年的統(tǒng)一的標(biāo)準(zhǔn)建模符號。通過使用UML,這些人員能夠閱讀和交流系統(tǒng)架構(gòu)圖和設(shè)計(jì)規(guī)劃圖,就像建筑工人多年來使用建筑設(shè)計(jì)圖一樣。

二、UML中的各種圖例

2.1 用例圖(Use Case Diagram)

從用戶角度描述系統(tǒng)功能。用例圖的主要目的是幫助開發(fā)團(tuán)隊(duì)以一種可視化的方式來理解系統(tǒng)的功能需求。

用例圖中包含以下內(nèi)容:

  • 角色:角色是系統(tǒng)的邊界,即使用系統(tǒng)特定功能的用戶,用人形符號表示。
  • 用例:表示系統(tǒng)的某個功能,用橢圓符號表示。
  • 角色和用例的關(guān)系:角色和用例之間是使用關(guān)系,用帶實(shí)線的箭頭符號來表示。
  • 用例之間的關(guān)系:用例之間可存在包含關(guān)系和擴(kuò)展關(guān)系。包含關(guān)系是指一個用例包含另一個用例的功能,擴(kuò)展關(guān)系是指一個用例繼承了另一個用例的功能。
用例圖
2.2 類圖(Class Diagram)

描述對象模型中類以及類之間的關(guān)系。類圖顯示了系統(tǒng)的靜態(tài)結(jié)構(gòu),它包括以下內(nèi)容:

  • 類:類是類圖中的主要元素,用矩形表示,矩形的上層表示類名,中層表示屬性,下層表示行為(方法)。抽象類的類名用斜體字表示,抽象方法也用斜體字表示。

  • 類之間的關(guān)系:包括關(guān)聯(lián)、依賴、聚集、組合、泛化、實(shí)現(xiàn)這六種關(guān)系。

類圖
2.2.1 類之間的關(guān)系

1、關(guān)聯(lián):類A與類B的實(shí)例之間存在特定的對應(yīng)關(guān)系。belong a
2、依賴:類A訪問類B提供的服務(wù)。use a
3、聚集:類A為整體類,類B為局部類,類A的對象由類B的對象組合而成。has a
4、組合:整體與部分的關(guān)系。 Contain a
5、泛化:類A繼承類B。is kind of a
6、實(shí)現(xiàn):類A實(shí)現(xiàn)了B接口。do a

2.2.2 關(guān)聯(lián)關(guān)系(Association)

關(guān)聯(lián)指的是類之間的特定對應(yīng)關(guān)系,在UML中用帶實(shí)線的箭頭表示。按照類之間的數(shù)量對比,關(guān)聯(lián)可分為以下三種:一對一關(guān)聯(lián)、一對多關(guān)聯(lián)、多對多關(guān)聯(lián)。

舉例:公司和員工;銀行和客戶。

2.2.3 依賴關(guān)系(Dependency)

依賴指的是類之間的調(diào)用關(guān)系,在UML中用帶虛線的箭頭表示。如果類A訪問類B的屬性或方法,或者類A負(fù)責(zé)實(shí)例化類B,那么可以說類A依賴類B。

舉例:人依賴食物;電視機(jī)依賴電;理發(fā)師依賴剪刀和吹風(fēng)機(jī);魚依賴水。

2.2.4 聚集關(guān)系(Aggregation)

聚集指的是整體與部分之間的關(guān)系,在UML中用帶實(shí)線的菱形箭頭表示。例如臺燈和燈泡之間就是聚集關(guān)系。

舉例:汽車的輪胎系統(tǒng)由四個輪胎聚合而成。

2.2.5 組合關(guān)系

整體與部分的關(guān)系,Contain a

舉例:汽車是由發(fā)動機(jī)、離合器、車身、輪胎等組合而成。

2.2.6 泛化關(guān)系(Generalization)

泛化指的是類之間的繼承關(guān)系。

2.2.7 實(shí)現(xiàn)關(guān)系(Realization)

實(shí)現(xiàn)指的是類與接口之間的關(guān)系。

在UML中用帶虛線的三角形箭頭表示,這里的接口指的是接口類型,接口名字用斜體字表示,接口中的方法都是抽象方法,也采用斜體字表示。

2.2.8 類圖示例
類圖示例

關(guān)系強(qiáng)弱順序:實(shí)現(xiàn)≈泛化>組合>聚合>關(guān)聯(lián)>依賴

2.3 狀態(tài)轉(zhuǎn)換圖(State Transition Diagram)

描述對象所有可能的狀態(tài)以及導(dǎo)致狀態(tài)轉(zhuǎn)換的轉(zhuǎn)移條件。只需要為個別具有復(fù)雜的狀態(tài)轉(zhuǎn)換過程的類提供狀態(tài)轉(zhuǎn)換圖。

狀態(tài)圖表示對象在它的生命周期中所處的不同狀態(tài),以及狀態(tài)之間的轉(zhuǎn)換過程。狀態(tài)圖包括以下基本元素:

  • 初始點(diǎn):用實(shí)心圓來表示。
  • 狀態(tài)之間的轉(zhuǎn)換:用箭頭來表示。
  • 狀態(tài):用圓角矩形來表示。
  • 終止點(diǎn):用內(nèi)部包含實(shí)心圓的圓來表示。
狀態(tài)圖
2.4 時序圖(Sequence Diagram)

描述對象間的動態(tài)協(xié)作關(guān)系,強(qiáng)調(diào)對象之間消息發(fā)送的時間順序,同時顯示對象之間的交互。

時序圖顯示用例(或者是用例的一部分)的詳細(xì)流程。時序圖有兩個維度:

  • 水平維度:顯示對象之間發(fā)送消息的過程。
  • 垂直維度:顯示發(fā)送消息的時間順序。
時序圖
時序圖2
2.5 協(xié)作圖(Cooperation Diagram)

協(xié)作圖能直觀地顯示對象間的協(xié)作關(guān)系。時序圖和協(xié)作圖合稱為交互圖。協(xié)作圖與時序圖包含的信息相同,UML工具(如Rational Rose)能夠根據(jù)時序圖自動生成協(xié)作圖,反之亦然。

協(xié)作圖與時序圖的區(qū)別:

  • 時序圖演示的是對象與角色隨著時間的變化進(jìn)行的交互,而協(xié)作圖則不參照時間,直接顯示對象與角色之間的交互過程。

  • 協(xié)作圖能更加直觀地顯示對象之間的協(xié)作過程,設(shè)計(jì)師可以根據(jù)協(xié)作圖來分析和調(diào)節(jié)對象之間的功能分布。

協(xié)作圖

時序圖按照時間順序布圖,而寫作圖按照空間結(jié)構(gòu)布圖。

2.6 組件圖(Component Diagram)

描述系統(tǒng)中各個軟件組件之間的依賴關(guān)系,還可以描述軟件組件的源代碼的組織結(jié)構(gòu)。

組件圖的主要用途是顯示軟件系統(tǒng)中組件之間的依賴關(guān)系,以及和其他第三方組件(例如類庫)的依賴關(guān)系,此外,它還能顯示包含軟件的源程序代碼的文件的物理組織結(jié)構(gòu)。組件圖既可以在一個非常高的層次上僅顯示粗粒度的組件,也可以在較低的層次上展示某個組件的組成結(jié)構(gòu)。

組件圖
2.7 部署圖(Deployment Diagram)

定義系統(tǒng)中軟硬件的物理體系結(jié)構(gòu)。它可以顯示實(shí)際的計(jì)算機(jī)和設(shè)備(用節(jié)點(diǎn)表示)以及他們之間的連接關(guān)系,在節(jié)點(diǎn)中,還可以顯示軟件組件在硬件環(huán)境中的布局。

部署圖中最主要的元素是節(jié)點(diǎn),一個節(jié)點(diǎn)可以代表一臺物理機(jī)器,或代表一個虛擬機(jī)器節(jié)點(diǎn),節(jié)點(diǎn)用三維立方體表示,在每個節(jié)點(diǎn)下方可以表明在此節(jié)點(diǎn)上運(yùn)行的可執(zhí)行程序。

部署圖
2.8 對象圖(Object Diagram)

對象圖顯示某時刻對象和對象之間的關(guān)系。一個UML對象圖可看成一個類圖的特殊用例,實(shí)例和類可在其中顯示。

對象圖的目的與類圖類似。不同的是,一個類圖代表一個抽象的模型,包括類和它們之間的關(guān)系。但是,由于對象存在生命周期,因此UML對象圖只能在系統(tǒng)某一時間段存在。這意味著對象圖是更接近實(shí)際的系統(tǒng)行為。目的是在一個特定的時刻捕捉到靜態(tài)的系統(tǒng)視圖。

對象圖的目的概述如下:

  • 正向和逆向工程
  • 一個系統(tǒng)的對象間的關(guān)系
  • 一個交互的靜態(tài)視圖
  • 了解對象的行為和他們的關(guān)系從實(shí)用的角度來看
對象圖
對象圖-對象表示法
2.9 活動圖
2.9.1 活動圖概覽

活動圖是狀態(tài)機(jī)的一個特殊例子,它強(qiáng)調(diào)計(jì)算過程中的順序和并發(fā)步驟?;顒訄D所有或多數(shù)狀態(tài)都是活動狀態(tài)或動作狀態(tài),所有或大部分的轉(zhuǎn)換都由原狀態(tài)中完成的活動觸發(fā)。

2.9.2 活動圖的含義

活動圖是一種用于描述系統(tǒng)行為的模型視圖,它可用來描述動作和動作導(dǎo)致對象狀態(tài)改變的結(jié)果,而不用考慮引發(fā)狀態(tài)改變的事件。通常,活動圖記錄單個操作或方法的邏輯、單個用例或商業(yè)過程的邏輯流程。

在UML中,活動圖的起點(diǎn)用來描述活動圖的開始狀態(tài),用黑的實(shí)心圓表示?;顒訄D的中止點(diǎn)描述活動圖的終止?fàn)顟B(tài),用一個含有實(shí)心圓的空心圓表示?;顒訄D中的活動既可以是手動執(zhí)行的任務(wù),也可以是自動執(zhí)行的任務(wù)。

活動圖
2.9.3 活動圖與狀態(tài)圖的區(qū)別

活動圖可以算是狀態(tài)圖的一個變種,并且活動圖的符號與狀態(tài)圖的符號非常相似,有時會讓人混淆。活動圖的主要目的是描述動作及對象的改變結(jié)果,而狀態(tài)圖則是以狀態(tài)的概念描述對象、子系統(tǒng)、系統(tǒng)在生命周期中的各種行為?;顒訄D中的狀態(tài)轉(zhuǎn)換不需要任何觸發(fā)事件?;顒訄D中的動作可以放在泳道中,而狀態(tài)圖則不可以。

2.9.4 活動圖的作用

活動圖是模型中的完整單元,表示一個程序或工作流,常用于計(jì)算流程和工作流程的建模。活動圖著重描述用例實(shí)例或?qū)ο蟮幕顒?,以及操作?shí)現(xiàn)中所完成的工作?;顒訄D通常出現(xiàn)在設(shè)計(jì)的前期,即在所有實(shí)現(xiàn)決定前出現(xiàn),特別是在對象被指定執(zhí)行所有活動前。

活動圖的作用主要體現(xiàn)在以下幾點(diǎn):

  • 描述一個操作執(zhí)行過程中所完成的工作。說明角色、工作流、組織和對象是如何工作的。

  • 活動圖對用例描述尤其有用,它可對用例的工作流建模,顯示用例內(nèi)部和用例之間的路徑。它可以說明用例的實(shí)例是如何執(zhí)行動作以及如何改變對象狀態(tài)的。

  • 顯示如何執(zhí)行一組相關(guān)的動作,以及這些動作如何影響它們周圍的對象。

  • 活動圖對理解業(yè)務(wù)處理過程十分有用?;顒訄D可以畫出工作流用以描述業(yè)務(wù),有利于領(lǐng)域?qū)<疫M(jìn)行交流。通過活動圖可以明確業(yè)務(wù)處理操作是如何進(jìn)行的,以及可能產(chǎn)生的變化。

  • 描繪復(fù)雜過程的算法,在這種情況下使用的活動圖和傳統(tǒng)的程序流程圖的功能是差不多的。

2.9.5 泳道

為了對活動圖的職責(zé)進(jìn)行組織而在活動圖中將活動狀態(tài)分為不同的組,成為泳道(Swimlane)。每個泳道代表了特定含義的狀態(tài)職責(zé)的部分。在活動圖中,每個活動只能明確的屬于一個泳道,泳道明確地表示了哪些活動是由哪些對象進(jìn)行的。每個泳道都有一個與其它泳道不同的名稱。

每個泳道都可能由一個或者多個類實(shí)施,類所執(zhí)行的動作或擁有的狀態(tài)按照發(fā)生的事件順序自上而下排列在泳道內(nèi)。

在活動圖中,每個泳道通過垂直實(shí)線與他的鄰居泳道相分離。泳道的上方是名稱,不同泳道中的活動既可以順序進(jìn)行,也可以并發(fā)進(jìn)行。雖然每個活動狀態(tài)都指派了一條泳道,但是轉(zhuǎn)移則可能跨越數(shù)條泳道。

泳道
2.10 UML圖行符號匯總
UML圖行符號匯總
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 目錄 前言1.1 前言1.2 UML概述1.3 UML事物1.4 UML關(guān)系1.5 各UML圖及特征1.6 各UM...
    AlanGe閱讀 4,951評論 0 0
  • 一、UML圖分類 1. 結(jié)構(gòu)圖(靜態(tài)圖) 類圖 對象圖 組件圖 部署圖 2. 行為圖(動態(tài)圖) 用例圖 序列圖 協(xié)...
    BIMnotes閱讀 284評論 0 0
  • 為什么會把UML放在設(shè)計(jì)模式這里呢,因?yàn)橐话阍O(shè)計(jì)模式基本都會涉及到類圖。 1.概述 UML是當(dāng)今世界上軟件設(shè)計(jì)的標(biāo)...
    先生zeng閱讀 1,798評論 0 2
  • 1. 簡介 UML(Unified Modeling Language),即統(tǒng)一建模語言,適用于描述以用例為驅(qū)動,...
    小楠總閱讀 1,097評論 0 4
  • UML基礎(chǔ) 統(tǒng)一建模語言(Unified Modeling Language,UML)又稱標(biāo)準(zhǔn)建模語言。 模型分類...
    zjunchao閱讀 1,024評論 1 4

友情鏈接更多精彩內(nèi)容