解析UML面向?qū)ο蠓治雠c建模中交互圖
UML面向?qū)ο蠓治雠c建模你是否熟悉,本節(jié)就和大家分享一下UML面向?qū)ο蠓治雠c建模中交互圖的內(nèi)容,相信通過(guò)本節(jié)的學(xué)習(xí)你對(duì)UML面向?qū)ο蠓治雠c建模的概念有清晰的認(rèn)識(shí)。
UML面向?qū)ο蠓治雠c建模 交互圖
一、概述
交互圖是用來(lái)表達(dá)系統(tǒng)的各個(gè)對(duì)象之間如何交互,如何合作完成某個(gè)行為的動(dòng)態(tài)模型工具,它與用例圖、狀態(tài)圖、活動(dòng)圖等共同構(gòu)成了系統(tǒng)的行為視圖。
交互圖主要用于對(duì)用例圖中的控制流進(jìn)行建模,它包括序列圖和協(xié)作圖,其中,序列圖按時(shí)間次序描述系統(tǒng)中各對(duì)象如何通過(guò)消息交互,協(xié)作圖從空間上描述收發(fā)消息的對(duì)象的結(jié)構(gòu)關(guān)系。
二、序列圖
UML面向?qū)ο蠓治雠c建模中序列圖是一種交互圖,描述了系統(tǒng)中各個(gè)對(duì)象之間傳遞消息的時(shí)間次序,用來(lái)表示用例的行為順序,從而為對(duì)象類(lèi)圖中概括對(duì)象的行為、劃分對(duì)象類(lèi)的職責(zé)提供依據(jù)。它依賴(lài)與用例圖,如果說(shuō)用例圖是對(duì)用戶(hù)需求的***次抽象,那通過(guò)序列圖,用戶(hù)的需求就會(huì)變得更加具體,系統(tǒng)中各個(gè)對(duì)象的行為和角色也更加清晰。
序列圖也稱(chēng)為時(shí)序圖,包括對(duì)象、生命線(xiàn)、消息和激活。其中激活表示該對(duì)象被占用以完成某個(gè)任務(wù),撤銷(xiāo)表示對(duì)象處于空閑等待消息狀態(tài)。在UML中,矩形表示對(duì)象是激活的,稱(chēng)為激活期或控制期。對(duì)象完成任務(wù)后被撤銷(xiāo),一般發(fā)生在一個(gè)消息離開(kāi)對(duì)象生命線(xiàn)的時(shí)候。
同步消息代表一個(gè)通過(guò)操作調(diào)用的嵌套的控制流,該操作調(diào)用要求操作同步。同步消息的接收方必須是一個(gè)被動(dòng)對(duì)象,即它是一個(gè)需要通過(guò)消息的驅(qū)動(dòng)才能執(zhí)行動(dòng)作的對(duì)象。異步消息代表一個(gè)非同步的信號(hào)請(qǐng)求,該信號(hào)異步要求一個(gè)操作。異步消息的發(fā)送方和接收方是并行工作的。異步消息的接收方必須是一個(gè)主動(dòng)對(duì)象,它不需要消息驅(qū)動(dòng)就可以執(zhí)行對(duì)象的動(dòng)作。
一個(gè)對(duì)象可以在交互中動(dòng)態(tài)創(chuàng)建。動(dòng)態(tài)創(chuàng)建的對(duì)象生命線(xiàn)起始位置低于正常的對(duì)象。一個(gè)對(duì)象可以在交互中銷(xiāo)毀。當(dāng)一個(gè)對(duì)象已經(jīng)完成了自己的全部動(dòng)作或活動(dòng)后,可以在對(duì)象生命線(xiàn)的末端使用刪除標(biāo)志來(lái)銷(xiāo)毀,對(duì)象可以自己銷(xiāo)毀自己(析構(gòu)函數(shù))。
自調(diào)用指一個(gè)對(duì)象調(diào)用自己。當(dāng)指定的事件已經(jīng)出現(xiàn)或者操作已完成時(shí),接收方立即發(fā)送一個(gè)異步消息給發(fā)送方,通知發(fā)送方可以繼續(xù)進(jìn)行后續(xù)的動(dòng)作,這就是回調(diào)機(jī)制?;卣{(diào)發(fā)送的是一個(gè)異步消息,收發(fā)雙方并行進(jìn)行各自的活動(dòng),并且并非任何異步消息都要有相對(duì)應(yīng)的回調(diào)消息,而返回消息則是與同步消息匹配的,同步消息的發(fā)送方必須等待接收方響應(yīng)后才能繼續(xù)后續(xù)的動(dòng)作。
三、協(xié)作圖
UML面向?qū)ο蠓治雠c建模中協(xié)作圖強(qiáng)調(diào)以消息傳遞為紐帶的一組對(duì)象之間的組織結(jié)構(gòu),用于描述系統(tǒng)的行為如何由系統(tǒng)的各對(duì)象合作完成的。
序列圖和協(xié)作圖都可以用來(lái)表示系統(tǒng)的動(dòng)態(tài)行為,前者側(cè)重強(qiáng)調(diào)消息的時(shí)間順序,即對(duì)象間的通信模式;后者側(cè)重強(qiáng)調(diào)對(duì)象間的靜態(tài)連接關(guān)系,即對(duì)象間的協(xié)作。
協(xié)作圖沒(méi)有時(shí)間維,所以消息和并發(fā)線(xiàn)程的時(shí)間順序必須用序號(hào)表示。協(xié)作圖描述了兩個(gè)方面:對(duì)交互作用的對(duì)象的靜態(tài)結(jié)構(gòu)描述,包括相關(guān)的對(duì)象的關(guān)系、屬性和操作;為完成工作在對(duì)象間交換的消息的時(shí)間順序的描述。***個(gè)方面稱(chēng)為協(xié)作所提供的“上下文”,第二個(gè)方面稱(chēng)為協(xié)作關(guān)系的“交互作用”。
四、交互圖建模
序列圖建模基本步驟:
(1)確定交互的上下文。
(2)找出參與交互的對(duì)象類(lèi)的角色,并橫向排列在序列圖的頂部。最重要的或啟動(dòng)交互的對(duì)象放在最左邊,依次向右排列,動(dòng)態(tài)創(chuàng)建的對(duì)象應(yīng)放在被創(chuàng)建的時(shí)間點(diǎn)位置。
(3)對(duì)每個(gè)對(duì)象設(shè)置一條垂直向下的生命線(xiàn)。
(4)從初始化交互的消息開(kāi)始,自頂向下在生命線(xiàn)上放置消息,注意各類(lèi)不同消息的表示法。
(5)在生命線(xiàn)上繪制對(duì)象的激活期,包括動(dòng)態(tài)對(duì)象的創(chuàng)建和銷(xiāo)毀。
(6)根據(jù)消息之間的關(guān)系,確定循環(huán)結(jié)構(gòu)及其循環(huán)參數(shù)和出口條件。
協(xié)作圖建模的基本步驟:
(1)確定交互的上下文。
(2)找出參與交互的對(duì)象類(lèi)的角色,把它們作為圖形的節(jié)點(diǎn)安置在協(xié)作圖中。最重要的對(duì)象放在中央。
(3)設(shè)置對(duì)象的初始性質(zhì)。
(4)給出對(duì)象間的關(guān)聯(lián),注意必要的修飾,如構(gòu)造型<<global>><<local>>等。
(5)從初始化交互的消息開(kāi)始,按交互順序放置其它消息,注意消息的序號(hào)不可缺少。
(6)處理特殊的情況,如循環(huán)、主動(dòng)對(duì)象、異步消息、多對(duì)象等。
UML面向?qū)ο蠓治雠c建模中序列圖和協(xié)作圖都是交互圖,但它們間并不完全相同,表現(xiàn)為:
(1)序列圖和協(xié)作圖都能等價(jià)地表現(xiàn)系統(tǒng)運(yùn)行中對(duì)象的交互行為。
(2)序列圖表達(dá)了時(shí)間的消息序列,體現(xiàn)了系統(tǒng)行為的順序。
(3)協(xié)作圖表達(dá)了系統(tǒng)中對(duì)象間的關(guān)聯(lián)和消息的相互作用,體現(xiàn)了系統(tǒng)的靜態(tài)結(jié)構(gòu)。
(4)序列圖適合按時(shí)間次序建立系統(tǒng)的控制流模型,協(xié)作圖適合按對(duì)象組織建立系統(tǒng)的控制流模型
【編輯推薦】
- 技術(shù)分享 UML面向?qū)ο蠓治黾捌浒ǖ膱D、建模步驟
- UML面向?qū)ο笾R(shí)入門(mén)
- 學(xué)習(xí)筆記 基于UML面向?qū)ο蟮脑O(shè)計(jì)
- UML面向?qū)ο蠼VR(shí)簡(jiǎn)介
- 技術(shù)分享 UML面向?qū)ο蠼=馕?/a>