UML圖的總結(jié)

1. 基本概念

? UML(Unified Modeling Language)即統(tǒng)一建模語言准验,為面向?qū)ο箝_發(fā)系統(tǒng)的產(chǎn)品進(jìn)行說明、可視化黔龟、和編制文檔的一種標(biāo)準(zhǔn)語言。下面將對UML的==九種圖+包圖==的基本概念進(jìn)行介紹以及各個圖的使用場景。

? UML圖分為用例視圖婶熬、設(shè)計視圖、進(jìn)程視圖埃撵、實現(xiàn)視圖和拓?fù)湟晥D赵颅,又可以靜動分為靜態(tài)視圖和動態(tài)視圖。靜態(tài)圖分為:==用例圖暂刘,類圖饺谬,對象圖,包圖谣拣,構(gòu)件圖募寨,部署圖==。動態(tài)圖分為:==狀態(tài)圖森缠,活動圖拔鹰,協(xié)作圖,序列圖==贵涵。

image-20200221125708378

2. 用例圖

? 用例圖用于從用戶角度闡述==軟件的各個功能==和其==功能的使用者==.主要使用于需求分析階段,是非常符合用戶思維的設(shè)計.

(1). 用例圖所包含的元素

1). 參與者(Actor)

? 與軟件進(jìn)行交互的用戶,組織或者其他外部系統(tǒng).

image-20200221125721185

2). 用例(Use Case)

? 用例就是外部可見的系統(tǒng)功能,不包含其內(nèi)部邏輯實現(xiàn).這里完全站在不懂技術(shù)的用戶的角度思考問題.

image-20200221125736221

3). 系統(tǒng)邊界

? 用來分割用例,將用例分割為不同的子系統(tǒng),子系統(tǒng)內(nèi)部的功能聯(lián)系緊密.當(dāng)然也可以只存在一個完整的系統(tǒng)邊界,例如下圖.

image-20200221125746237

(2). 用例圖包含的關(guān)系

1). 關(guān)聯(lián)

? 參與者和用例的關(guān)系,任何一方都可發(fā)送或接受消息.

? 畫法:實線,無箭頭.

image-20200221125753901

2). 泛化

? 可以理解為繼承關(guān)系.父用例通常是抽象的.

? 畫法:實線,空心三角形箭頭,由子用例指向父用例.

image-20200221125800464

3). 包含

? 將復(fù)雜用例劃分為較小的步驟,類似程序中的代碼封裝,主程序中調(diào)用子過程.

? 畫法:虛線,線狀箭頭,標(biāo)記<<includes>>,復(fù)雜用例指向子過程.

image-20200221125807176

4). 擴(kuò)展

? 指用例功能的延伸,相當(dāng)于為基礎(chǔ)用例提供一個附加功能.

? 畫法:虛線,線狀箭頭,標(biāo)記<<extends>>,拓展用例指向主用例.

image-20200221125814748

3. 類圖

? 根據(jù)用例圖抽象出類,用于面向?qū)ο蟪绦蛟O(shè)計.描述類的內(nèi)部結(jié)構(gòu)和類與類之間的關(guān)系,是一種靜態(tài)結(jié)構(gòu)圖.

(1). 類圖基礎(chǔ)屬性

1). 類名

2). 屬性域

? 訪問級別 字段名 : 類型

3). 方法域

? 訪問級別 方法名(參數(shù)) : 返回值類型

+表示public
-表示private

表示protected

~表示default,也就是包權(quán)限
_下劃線表示static
斜體表示抽象

image-20200221125824615
image-20200221125834459

(2). 類與類之間關(guān)系

1). 泛化(Generalization)

? 表示繼承關(guān)系或者類對接口的實現(xiàn)關(guān)系.Java中即 extends 和 implements 兩個關(guān)鍵字.

? 畫法:空心三角形箭頭,實線表示繼承父類,虛線表示實現(xiàn)接口.箭頭指向父類或者接口.

image-20200221125841984
image-20200221125852110

2). 依賴(Dependency)

? 一個類的實現(xiàn)需要另一個類的協(xié)助,如方法的參數(shù),局部變量或者靜態(tài)方法的調(diào)用.

? 畫法:虛線,線狀箭頭

image-20200221125900867

3). 關(guān)聯(lián)(Association)

? 一個類知道另一個類,成員變量.

? 畫法:實線,線狀箭頭,如果為雙向關(guān)聯(lián),則去掉箭頭或者雙向箭頭都可以.箭頭指向成員變量

image-20200221125917549

4). 聚合(Aggregation)

? 整體與部分的關(guān)系,是一種弱的‘擁有’關(guān)系,==部分可以獨立存在==.是關(guān)聯(lián)的一種,語法上無發(fā)區(qū)分,需要依賴邏輯區(qū)分.兩個對象具有各自的生命周期.

? 畫法:在關(guān)聯(lián)的基礎(chǔ)上,加空心菱形.

image-20200221125927282

5). 組合(Composition)

? 同樣是整體和部分的關(guān)系,這里是強(qiáng)"擁有"關(guān)系,部分不可以獨立存在,是關(guān)聯(lián)的一種.部分和整體的生命周期一樣.

? 畫法:關(guān)聯(lián)的基礎(chǔ)上,加實心菱形.

image-20200221125938182

4. 對象圖

(1). 概念

? 描述參與交互的==各個對象==在交互過程中的==某時刻的狀態(tài)==(所以只有屬性,不包含方法),可以看做是類圖在某一時刻的快照.表示對象之間的特定關(guān)系.

? 不包含對象的方法,名稱欄新增對象名.屬性欄中為當(dāng)前值.

image-20200221125945300

? 對象圖中的建模元素主要有對象和鏈(所有關(guān)系統(tǒng)一使用實現(xiàn)來表示,不加以區(qū)分)格郁,對象是類的實例,鏈?zhǔn)穷愔g的關(guān)聯(lián)關(guān)系的實例独悴。

image-20200221125954706

5. 狀態(tài)圖

? 一種由==狀態(tài),變遷,事件和活動==組成的自動機(jī).用來描述類的對象所有可能的狀態(tài)以及狀態(tài)轉(zhuǎn)移條件.

(1). 組成元素

  • 狀態(tài):圓角矩形,文字?jǐn)⑹銎錉顟B(tài)內(nèi)容
  • 轉(zhuǎn)移:箭頭,文字?jǐn)⑹鲛D(zhuǎn)移條件
  • 起點:一個黑點
  • 終點:一個圈加一個黑點

(2). 狀態(tài)機(jī)

? 描述了系統(tǒng)從一個狀態(tài)響應(yīng)一個事件后達(dá)到另一個狀態(tài)的一系列行為.

image-20200221130003547

6. 活動圖

(1). 概念

? 是狀態(tài)圖的特殊情況,所有的狀態(tài)都處于活動狀態(tài),==本質(zhì)上是一種流程圖==.支持并發(fā)進(jìn)程.

(2). 組成元素

1). 起點

? 實心黑色圓點.

2). 終點

? 圓圈加內(nèi)部實心黑色圓點.

3). 動作狀態(tài)

? 是指原子的不可中斷的動作例书,并在此動作完成后通過完成轉(zhuǎn)換轉(zhuǎn)向另一個狀態(tài).

4). 動作流

? 動作之間的轉(zhuǎn)換,用帶箭頭的直線表示刻炒,箭頭的方向指向轉(zhuǎn)入的方向

5). 分支與合并

? 菱形表示,由一個箭頭指向分支符號(轉(zhuǎn)換),一個或者多個箭頭從分支符號指向外(離開轉(zhuǎn)換).每一個離開轉(zhuǎn)換都對應(yīng)一個監(jiān)護(hù)條件.滿足條件才能執(zhí)行該轉(zhuǎn)換.

image-20200221130021571

6). 分叉與匯合

? 動作流分為兩個或者多個并發(fā)運行的分支.

image-20200221130033480

7). 泳道

? 將活動圖中的活動劃分為若干組决采,并把每一個組指定個負(fù)責(zé)這組活動的業(yè)務(wù)組織,即對象坟奥。在活動圖中树瞭,泳道區(qū)分了負(fù)責(zé)活動的對象,它明確的表示了哪些活動是由哪些對象進(jìn)行的爱谁,在包含泳道的活動圖中晒喷,每個活動只能明確的屬于一個泳道

image-20200221133050139
image-20200221133115719

7. 時序圖(序列圖)

(1). 概念

? 交互圖的一種,描述了對象之間消息發(fā)送的先后順序,強(qiáng)調(diào)時間順序.

(2). 組成元素

1). 角色

? 程序外的其他人或者其他系統(tǒng).

2). 對象

? 位于時序圖的頂部,是一個矩形框.表示處理響應(yīng)步驟的處理者.

3). 生命線

? 角色和對象都有一條向下的生命線,是一條虛線.

image-20200221133128396

4). 控制焦點

? 生命線上的窄矩形框,代表生命周期中這段時間處于激活狀態(tài).

5). 消息

? 代表對象之間發(fā)送的信息.分為三種:

  • 同步消息:會等待返回消息.使用實線+實心箭頭表示.


    image-20200221133148651
  • 異步消息:不進(jìn)行等待,發(fā)完消息后繼續(xù)自己的活動,使用并發(fā)完成.使用實線+線狀箭頭表示.


    image-20200221133223406
  • 返回消息:對消息的回應(yīng),相當(dāng)于返回值.使用虛線+線狀箭頭表示.
image-20200221133251027

8. 協(xié)作圖(通信圖)

(1). 概念

? 交互圖的一種.按照空間結(jié)構(gòu)布圖,而非時序圖的時間結(jié)構(gòu).

? 協(xié)作圖與時序圖在語義上是等價的,二者可以相互轉(zhuǎn)換访敌,而不會丟失信息凉敲。

image-20200221133307923
image-20200221133318971

(2). 組成元素

1). 對象

image-20200221133332162

2). 鏈接

? 用來關(guān)聯(lián)對象,使用無箭頭的實線鏈接.

3). 消息

? 消息是協(xié)作圖中對象與對象之間通信的方式

image-20200221133342263

9. 構(gòu)件圖

本小節(jié)總結(jié)自:UML構(gòu)件圖

(1). 概念

? 構(gòu)件圖也叫組件圖,由構(gòu)件,接口和構(gòu)件之間的關(guān)系構(gòu)成

? 用來表示系統(tǒng)中構(gòu)件與構(gòu)件之間,類或者接口與構(gòu)件之間的關(guān)系.(構(gòu)件是系統(tǒng)中可替換的物理部分,它包裝了實現(xiàn)而且遵從并提供一組接口的實現(xiàn))

? 其中構(gòu)件之間的關(guān)系為依賴,類或接口與構(gòu)件之間的關(guān)系為依賴或者實線.

(2). 組成元素

1). 構(gòu)件

? 構(gòu)件是實現(xiàn)接口的物理單元,是可替換的.是軟件,類似于jar包,可執(zhí)行文件,庫,文件,文檔等.

? 構(gòu)件通過它提供的接口和請求展現(xiàn)行為.

? 表示方式:

image-20200221133354379
image-20200221133416119

2). 接口

? 由一組操作組成,是構(gòu)件的一部分,分為提供接口和請求接口;

提供接口

? 意味著該接口是向其他構(gòu)件提供功能的.實現(xiàn)接口的構(gòu)件支持該接口中的所有功能.

? 使用棒棒糖圖標(biāo)表示.

    Java中顯示表示為 implements 關(guān)鍵字;
請求接口

? 指該構(gòu)件向其他構(gòu)件請求服務(wù)時需要的遵循的接口.

? 要使用接口所需要的條件,對應(yīng)另外一個提供接口.比如內(nèi)部有一個接口的成員變量或者方法傳參.

? 使用插座式圖標(biāo)表示.

image-20200221133430012

3). 端口

? 是構(gòu)件的一部分,所有進(jìn)出構(gòu)件的交互都要通過端口,也就是說,所有接口都需要通過端口實現(xiàn).

與接口的關(guān)系

? 一個構(gòu)件可以通過一個特定端口同另一個構(gòu)件通訊,而且通訊完全是通過由端口支持的接口來描述的爷抓。

表示

? 在接口的尾部加小方框,這個小方框就代表端口.

image-20200221133442868

4). 連接器

組件連接器

? 組件連接器是兩個構(gòu)件實例間的連接件势决,它定義一個構(gòu)件實例提供服務(wù),另一個構(gòu)件實例使用這些服務(wù)

? 顯示的單純表示連接可以用一條實線表示(直接連接器),而通過接口實現(xiàn)的連接則需要通過棒棒糖圖標(biāo)和插座圖標(biāo)的結(jié)合表示.

image-20200221133452923
委托連接器

? 委托連接件把外部對構(gòu)件端口的請求分發(fā)到構(gòu)件內(nèi)部的部件實例進(jìn)行處理蓝撇,或者通過構(gòu)件端口把構(gòu)件內(nèi)部部件實例向構(gòu)件外部的請求分發(fā)出去果复。

? 用于組件和其內(nèi)部組件的連接.

? 注明一點,委托連接器適用于構(gòu)件內(nèi)部的部件.

5

注意事項:因為構(gòu)i件是可以嵌套的,所以內(nèi)部構(gòu)件之間的連接(球-穴)是組裝連接件渤昌,內(nèi)部構(gòu)件與端口之間的連接(實線箭頭)是委托連接件虽抄。

5). 依賴關(guān)系

? 與類圖中的依賴關(guān)系相同.都是由客戶指向提供者的虛線箭頭.

image-20200221133525725

10. 部署圖

(1). 概念

? 部署圖描述的是系統(tǒng)程序運行時的結(jié)構(gòu),展示了硬件配置和相關(guān)的網(wǎng)絡(luò)結(jié)構(gòu).

? 一個系統(tǒng)只有一個部署圖,往往被用來描述分布式系統(tǒng).

? 用于展示系統(tǒng)軟件和硬件的拓?fù)浣Y(jié)構(gòu).清晰的說明系統(tǒng)的使用部署,環(huán)境等情況.

(2). 組成元素

1). 結(jié)點

? 代表計算機(jī)上的物理資源,可以是硬件(外設(shè)),也可以是軟件資源(防火墻,數(shù)據(jù)庫).

? 使用三維的盒子表示.

image-20200221133537218

2). 結(jié)點實例

? 與結(jié)點的區(qū)別在于冒號加名稱.

image-20200221133546217

3). 結(jié)點類型

? 結(jié)點類型有:?cdrom?, ?cd-rom?, ?computer?, ?disk array?, ?pc?, ?pc client?, ?pc server?, ?secure?, ?server?, ?storage?, ?unix server?, ?user pc?,并在結(jié)點的右上角用不同的圖標(biāo)表示独柑,如下圖

image-20200221133557249

4). 物件

? 軟件開發(fā)過程中的產(chǎn)物,如UML圖,源代碼,設(shè)計文檔等等.

? 表示如下,帶有關(guān)鍵字<<artifact>>和文檔圖標(biāo):

image-20200221133611093

5). 連接

? 結(jié)點之間的連線表示系統(tǒng)之間進(jìn)行交互的通信路徑,被稱為連接.

image-20200221133621612

6). 結(jié)點容器

? 一個結(jié)點包含了其他結(jié)點,那么稱這個結(jié)點為結(jié)點容器.

11. 各種圖的差異比較

(1). 時序圖 VS 協(xié)作圖

? 這兩個圖都是交互圖,語義上等價,可以相互轉(zhuǎn)化,但是則重點不同.

? 顧名思義,時序圖側(cè)重時間上的先后順序,協(xié)作圖則側(cè)重于對象間的協(xié)作關(guān)系(空間結(jié)構(gòu)).

(2). 狀態(tài)圖 VS 活動圖

? 二者都是行為圖.

? 狀態(tài)圖側(cè)重狀態(tài)改變的結(jié)果(行為驅(qū)動而已),而活動圖側(cè)重于改變狀態(tài)的行為.

? 活動圖并不是必須的,滿足以下條件時才有必要繪制:

  • 出現(xiàn)并行或則并發(fā)行為
  • 描述算法(側(cè)重于行為)
  • 跨越多個用例(只側(cè)重于結(jié)果描述可能表達(dá)不清楚)

(3). 活動圖 VS 交互圖(時序圖和協(xié)作圖)

? 都涉及到對象和對象之間傳遞的消息.

? 交互圖觀察的是傳送消息的對象,而活動圖觀察的是傳送的消息(事件之間活動的邏輯關(guān)系中包含了消息的內(nèi)容).

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末迈窟,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子群嗤,更是在濱河造成了極大的恐慌菠隆,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狂秘,死亡現(xiàn)場離奇詭異骇径,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)者春,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門破衔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钱烟,你說我怎么就攤上這事晰筛。” “怎么了拴袭?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵读第,是天一觀的道長。 經(jīng)常有香客問我拥刻,道長怜瞒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任般哼,我火速辦了婚禮吴汪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蒸眠。我一直安慰自己漾橙,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布楞卡。 她就那樣靜靜地躺著霜运,像睡著了一般脾歇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上觉渴,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天介劫,我揣著相機(jī)與錄音徽惋,去河邊找鬼案淋。 笑死,一個胖子當(dāng)著我的面吹牛险绘,可吹牛的內(nèi)容都是我干的踢京。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼宦棺,長吁一口氣:“原來是場噩夢啊……” “哼瓣距!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起代咸,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蹈丸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后呐芥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逻杖,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年思瘟,在試婚紗的時候發(fā)現(xiàn)自己被綠了荸百。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡滨攻,死狀恐怖够话,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情光绕,我是刑警寧澤女嘲,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站诞帐,受9級特大地震影響欣尼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜景埃,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一媒至、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧谷徙,春花似錦拒啰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春册着,著一層夾襖步出監(jiān)牢的瞬間拴孤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工甲捏, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留演熟,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓司顿,卻偏偏與公主長得像芒粹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子大溜,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 本文原創(chuàng):haorongrong 前言 最近在梳理項目化漆,用到了UML, 對于這個工具可能有的人聽過钦奋,或者有的人用過...
    jad_design閱讀 817評論 0 2
  • UML詳解付材,詳細(xì)介紹: UML概念: 1. UML-Unified Model Language 統(tǒng)一建模語言朦拖,又...
    X兄閱讀 4,859評論 0 1
  • UML(Unified Modeling Language)是一種統(tǒng)一建模語言,為面向?qū)ο箝_發(fā)系統(tǒng)的產(chǎn)品進(jìn)行說明伞租、...
    KBAC閱讀 1,638評論 0 3
  • UML(Unified Modeling Language)是一種統(tǒng)一建模語言贞谓,為面向?qū)ο箝_發(fā)系統(tǒng)的產(chǎn)品進(jìn)行說明、...
    jiahaofeng閱讀 262評論 0 0
  • UML各種圖總結(jié)-精華 UML(Unified Modeling Language)是一種統(tǒng)一建模語言葵诈,為面向?qū)ο?..
    不挖石油的小小閱讀 498評論 0 2