自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

UML動(dòng)態(tài)建模機(jī)制詳解

開(kāi)發(fā) 架構(gòu)
UML動(dòng)態(tài)模型包括狀態(tài)模型、順序模型、協(xié)作模型和活動(dòng)模型,通常以狀態(tài)圖、順序圖、協(xié)作圖和活動(dòng)圖來(lái)表示。本文就和大家一起學(xué)習(xí)一下UML動(dòng)態(tài)模型機(jī)制。

UML動(dòng)態(tài)建模機(jī)制你是否熟悉,這里和大家分享一下UML動(dòng)態(tài)建模機(jī)制方面的知識(shí),相信通過(guò)本節(jié)的介紹你對(duì)UML動(dòng)態(tài)建模機(jī)制一定會(huì)有全面的認(rèn)識(shí)。下面就是詳細(xì)介紹。

UML動(dòng)態(tài)建模機(jī)制軟件工程

UML動(dòng)態(tài)模型包括狀態(tài)模型、順序模型、協(xié)作模型和活動(dòng)模型,通常以狀態(tài)圖、順序圖、協(xié)作圖和活動(dòng)圖來(lái)表示。其中,順序圖和協(xié)作圖通常合起來(lái)稱(chēng)為交互圖。狀態(tài)模型關(guān)注一個(gè)對(duì)象的生命周期內(nèi)的狀態(tài)及狀態(tài)變遷,以及引起狀態(tài)變遷的事件和對(duì)象在狀態(tài)中的動(dòng)作等。順序模型和協(xié)作模型強(qiáng)調(diào)對(duì)象間的合作關(guān)系,通過(guò)對(duì)象間的消息傳遞以完成系統(tǒng)的用例?;顒?dòng)圖用于描述多個(gè)對(duì)象在交互時(shí)采取的活動(dòng),它關(guān)注對(duì)象如何相互活動(dòng)以完成一個(gè)事務(wù)。

一、消息

在面向?qū)ο蠹夹g(shù)中,對(duì)象間的交互是通過(guò)對(duì)象間消息的傳遞來(lái)完成的。在UML的4個(gè)動(dòng)態(tài)模型中均用到消息這個(gè)概念。通常,當(dāng)一個(gè)對(duì)象調(diào)用另一個(gè)對(duì)象中的操作時(shí),即完成了一次消息傳遞。當(dāng)操作執(zhí)行后,控制便返回到調(diào)用者。對(duì)象通過(guò)相互間的通信(消息傳遞)進(jìn)行合作,并在其生命周期中根據(jù)通信的結(jié)果不斷改變自身的狀態(tài)。在UML中,消息的圖形表示是用帶有箭頭的線段將消息的發(fā)送者和接收者聯(lián)系起來(lái),箭頭的類(lèi)型表示消息的類(lèi)型。

UML定義的消息類(lèi)型有三種:
(1)簡(jiǎn)單消息(simplemessage)表示簡(jiǎn)單的控制流。用于描述控制如何在對(duì)象間進(jìn)行傳遞,而不考慮通信的細(xì)節(jié)。
(2)同步消息(synchronousmessage)表示嵌套的控制流。操作的調(diào)用是一種典型的同步消息。調(diào)用者發(fā)出消息后必須等待消息返回,只有當(dāng)處理消息的操作執(zhí)行完畢后,調(diào)用者才可繼續(xù)執(zhí)行自己的操作。
(3)異步消息(asynchronousmessage)表示異步控制流。調(diào)用者發(fā)出消息后不用等待消當(dāng)息的返回即可繼續(xù)執(zhí)行自己的操作。異步消息主要用于描述實(shí)時(shí)系統(tǒng)中的并發(fā)行為。
可以將一個(gè)簡(jiǎn)單消息和一個(gè)同步消息合并成一個(gè)消息,原同步消息的箭頭和簡(jiǎn)單消息的箭頭分別放在合并后的消息兩端。這樣的消息意味著操作調(diào)用一旦完成就立即返回。

二、順序圖

UML動(dòng)態(tài)建模機(jī)制中順序圖用來(lái)描述對(duì)象之間動(dòng)態(tài)的交互關(guān)系,著重體現(xiàn)對(duì)象間消息傳遞的時(shí)間順序。順序圖存在兩個(gè)軸:水平軸表示不同的對(duì)象,垂直軸表示時(shí)間。在順序圖中,對(duì)象用一個(gè)帶有垂直虛線的矩形框表示,在矩形框內(nèi)標(biāo)有對(duì)象名和類(lèi)名。垂直虛線稱(chēng)為對(duì)象的生命線,代表在對(duì)象之間的交互作用中該對(duì)象的生命期。在生命線上的窄矩形條被稱(chēng)作激活(activation),表示該對(duì)象正在執(zhí)行某個(gè)操作。激活矩形的長(zhǎng)度表示計(jì)劃的持續(xù)時(shí)間,既可以直接執(zhí)行,也可以通過(guò)下級(jí)過(guò)程執(zhí)行。矩形條的頂部表示動(dòng)作的開(kāi)始,底部表示動(dòng)作的結(jié)束。兩根對(duì)象的生命線之間的箭頭表示消息。消息的箭頭形狀指明消息的類(lèi)型是發(fā)送還是返回。消息按發(fā)生的時(shí)間順序從上到下排列。每個(gè)消息旁標(biāo)注消息名,也可加上參數(shù)并標(biāo)注一些控制信息。返回自身生命線的消息箭頭叫回授(selfcall),表示對(duì)象發(fā)送消息給自己。
控制信息由兩種。***種是條件控制信息,說(shuō)明在什么情況下才會(huì)發(fā)送信息(例如,在[needsToReorder()=true]的條件下),消息僅當(dāng)條件為真時(shí)才會(huì)被發(fā)送。第二種是重復(fù)控制信息,表示消息多次發(fā)送給多個(gè)作為接收者的對(duì)象。這種控制信息通常在當(dāng)一個(gè)對(duì)象向某個(gè)對(duì)象集合中的每一個(gè)對(duì)象逐個(gè)地發(fā)送消息時(shí)使用(例如*prepare())。

交互圖是一種非常簡(jiǎn)單扼要的可視化圖解,這也正是交互圖的優(yōu)勢(shì)。同時(shí)也可看到,順序圖比較適合交互規(guī)模較小的可視化圖解,如果對(duì)象很多,交互又很頻繁,則會(huì)使順序圖變得復(fù)雜起來(lái),這是順序圖的一個(gè)弱點(diǎn)。在順序圖中可以使用返回(return)消息,表示從消息處理中返回,而不是一個(gè)新消息。為了畫(huà)圖清晰,經(jīng)常將返回消息省略掉。一般的對(duì)象放在圖的頂部,但還有一種特殊的消息new是創(chuàng)建一個(gè)對(duì)象消息,由于該消息而創(chuàng)建的對(duì)象放在圖中中間位置合適的地方。在面向?qū)ο蟪绦蛟O(shè)計(jì)中,總體的控制流程往往是難以理解的。一個(gè)好的設(shè)計(jì)應(yīng)當(dāng)將很多小方法放入不同的類(lèi)中,并且隨時(shí)能巧妙地指出總體的行為順序,這樣可以十分有效地幫助你加速了解代碼。對(duì)于***接觸面向?qū)ο蟪绦蛟O(shè)計(jì)的人來(lái)說(shuō)尤其是如此,順序圖可以幫助你看清行為的次序。

三、協(xié)作圖

UML動(dòng)態(tài)建模機(jī)制中交互圖的第二種形式是協(xié)作圖。協(xié)作圖也是用來(lái)描述對(duì)象與對(duì)象之間的消息連接關(guān)系的,但是它更側(cè)重于說(shuō)明哪些對(duì)象之間有消息傳遞,而不像順序圖那樣側(cè)于在某種特定的情形下對(duì)象之間傳遞消息的時(shí)序性。在協(xié)作圖中,對(duì)象同樣是用一個(gè)對(duì)象圖符號(hào)來(lái)表示,箭頭表示消息發(fā)送的方向,而消息的執(zhí)行順序則由消息的編號(hào)來(lái)標(biāo)明。
與順序圖中從上而下的生命線相比,通過(guò)編號(hào)來(lái)看消息執(zhí)行的時(shí)間順序顯然要困難得多。但是,協(xié)作圖中對(duì)象間靈活的空間布局使我們可以更方便地展示另外一些有用信息,不同的軟件工程師可能偏好不同形式的交互圖。例如,有些人喜歡使用順序圖,因?yàn)轫樞驁D突出使用執(zhí)行的時(shí)序,能更方便地看出事情發(fā)生的次序;有些人更喜歡協(xié)作圖,因?yàn)閰f(xié)作圖的布局方法能更清楚的表示出對(duì)象之間靜態(tài)的連接關(guān)系。那么如何選擇呢?一個(gè)最基本的原則是用哪種圖更簡(jiǎn)明清楚,則選用哪種圖。

四、狀態(tài)圖

UML動(dòng)態(tài)建模機(jī)制中狀態(tài)圖(StateDiagram)用來(lái)描述一個(gè)特定對(duì)象的所有可能狀態(tài)及其引起狀態(tài)轉(zhuǎn)移的事件。大多數(shù)面向?qū)ο蠹夹g(shù)都用狀態(tài)圖表示單個(gè)對(duì)象在其生命周期中的行為。一個(gè)狀態(tài)圖包括一系列的狀態(tài)以及狀態(tài)之間的轉(zhuǎn)移。所有對(duì)象都具有狀態(tài),狀態(tài)是對(duì)象執(zhí)行了一系列活動(dòng)的結(jié)果。當(dāng)某些事情發(fā)生后,對(duì)象的狀態(tài)將發(fā)生變化,稱(chēng)改變對(duì)象狀態(tài)的事情為“事件”,狀態(tài)圖用來(lái)顯示對(duì)象對(duì)事件的反應(yīng)以及對(duì)象狀態(tài)的改變。狀態(tài)圖中定義的狀態(tài)有初態(tài)、終態(tài)、中間狀態(tài)和復(fù)合狀態(tài)。其中,初態(tài)是狀態(tài)圖的起始點(diǎn),而終態(tài)則是狀態(tài)圖的終點(diǎn)。一個(gè)狀態(tài)圖只能有一個(gè)初態(tài),而終態(tài)則可以有多個(gè)。初態(tài)用一個(gè)黑圓點(diǎn)表示,終態(tài)用黑圓點(diǎn)外加一個(gè)圓表示(很像一只牛眼)。狀態(tài)圖中的狀態(tài)用一個(gè)圓角四邊形表示。狀態(tài)之間為狀態(tài)轉(zhuǎn)換,用一條帶箭頭的線表示。引起狀態(tài)轉(zhuǎn)換的事件可以用狀態(tài)轉(zhuǎn)換線旁邊的標(biāo)簽表示。當(dāng)事件發(fā)生時(shí),狀態(tài)轉(zhuǎn)換開(kāi)始。

一個(gè)狀態(tài)一般包含三個(gè)部分,***部分為狀態(tài)的名稱(chēng);第二部分為可選的狀態(tài)變量的變量名和變量值,這部分是可選的;第三部分為可選的活動(dòng)表,列出有關(guān)事件和活動(dòng)。在活動(dòng)表中,常常使用下面三種標(biāo)準(zhǔn)事件即entry(進(jìn)入)、exit(退出)和do(做)。entry事件用來(lái)指定一個(gè)狀態(tài)的活動(dòng),exit事件用來(lái)指定退出一個(gè)狀態(tài)的活動(dòng),do事件用來(lái)指定在該狀態(tài)下的活動(dòng)。
活動(dòng)部分的語(yǔ)法如下:
事件參數(shù)表“/”活動(dòng)表達(dá)式
事件可以是任何事件,包括上述3種標(biāo)準(zhǔn)事件?;顒?dòng)表達(dá)式用來(lái)指定應(yīng)該進(jìn)行何種活動(dòng)。有時(shí)還需要為事件指定一些參數(shù)。
狀態(tài)圖中狀態(tài)之間帶箭頭的連線被稱(chēng)為轉(zhuǎn)移。狀態(tài)的變遷通常是由事件觸發(fā)的,此時(shí)應(yīng)在轉(zhuǎn)移上標(biāo)出觸發(fā)轉(zhuǎn)移的事件表達(dá)式。如果轉(zhuǎn)移上未標(biāo)明事件,則表示在源狀態(tài)的內(nèi)部活動(dòng)執(zhí)行完畢后自動(dòng)觸發(fā)轉(zhuǎn)移。

轉(zhuǎn)移的語(yǔ)法表示如下:
事件說(shuō)明[守衛(wèi)條件]/動(dòng)作表達(dá)式
其中,事件說(shuō)明的語(yǔ)法為:事件名{參數(shù)}
守衛(wèi)條件是狀態(tài)轉(zhuǎn)移的一個(gè)布爾表達(dá)式。如果將守衛(wèi)條件和事件說(shuō)明放在一起使用,則當(dāng)且僅當(dāng)事件發(fā)生且布爾表達(dá)式成立時(shí)狀態(tài)才發(fā)生轉(zhuǎn)移。如果狀態(tài)轉(zhuǎn)移只有守衛(wèi)條件這一個(gè)條件,則只要守衛(wèi)條件為真,狀態(tài)就發(fā)生轉(zhuǎn)移。動(dòng)作表達(dá)式是一個(gè)過(guò)程表達(dá)式,當(dāng)狀態(tài)轉(zhuǎn)移開(kāi)始時(shí)執(zhí)行。轉(zhuǎn)移中使用的術(shù)語(yǔ)是“動(dòng)作”,而在狀態(tài)中使用的術(shù)語(yǔ)是“活動(dòng)”。盡管它們都是一種過(guò)程,都是由對(duì)象中的方法實(shí)現(xiàn),但是處理它們的方式有所不同。動(dòng)作與轉(zhuǎn)移關(guān)聯(lián),能被極快處理且不會(huì)被中斷。活動(dòng)和狀態(tài)關(guān)聯(lián),持續(xù)時(shí)間長(zhǎng)且可以被一些事件中斷。
轉(zhuǎn)移中的事件表示輸入,當(dāng)狀態(tài)中的活動(dòng)完成后,并且當(dāng)相應(yīng)的輸入事件發(fā)生時(shí),轉(zhuǎn)移才會(huì)發(fā)生。有的轉(zhuǎn)移上沒(méi)有標(biāo)明引發(fā)轉(zhuǎn)移的條件的事件,則表示狀態(tài)中的活動(dòng)一旦完成,轉(zhuǎn)移不需要等待任何輸入,便立即發(fā)生轉(zhuǎn)移。
“空閑”狀態(tài),把狀態(tài)變量timer的值置為0,然后遞增timer的值,直到“上行”或“下行”事件發(fā)生或守衛(wèi)條件“timer=超時(shí)值”為真,觸發(fā)狀態(tài)轉(zhuǎn)換。
狀態(tài)圖適合于描述跨越多個(gè)用例的單個(gè)對(duì)象的行為,而不適合于描述多個(gè)對(duì)象之間的狀態(tài)圖確實(shí)有用,但不要對(duì)系統(tǒng)中的每個(gè)類(lèi)都畫(huà)出它的狀態(tài)圖。從理論上講,如果能刻畫(huà)每個(gè)類(lèi)的狀態(tài)圖,就可以準(zhǔn)確描述每個(gè)類(lèi)的動(dòng)態(tài)行為。但是這樣要花費(fèi)大量精力,而且也沒(méi)有必要。事實(shí)上,我們關(guān)心的是某些關(guān)鍵類(lèi)的行為,為此為這些類(lèi)建立狀態(tài)圖可以
幫助我們理解所研究的問(wèn)題,在這種情況下才有必要繪制狀態(tài)圖。

五、活動(dòng)圖

UML動(dòng)態(tài)建模機(jī)制中活動(dòng)圖顯示動(dòng)作及其結(jié)果,著重描述操作實(shí)現(xiàn)中所完成的工作以及用例實(shí)例或?qū)ο笾械幕顒?dòng)?;顒?dòng)圖是狀態(tài)圖的一個(gè)變種,與狀態(tài)圖的目的有一些小的差別?;顒?dòng)圖的主要目的是描述動(dòng)作(執(zhí)行的工作或活動(dòng))以及對(duì)象狀態(tài)改變的結(jié)果。當(dāng)狀態(tài)中的動(dòng)作被執(zhí)行時(shí)(不象正常的狀態(tài)圖,它不需指定任何事件),活動(dòng)圖中的狀態(tài)(稱(chēng)作動(dòng)作狀態(tài))直接轉(zhuǎn)移到下一階段。活動(dòng)圖和狀態(tài)圖的另一個(gè)區(qū)別是活動(dòng)途中的動(dòng)作可以放到泳道中去。泳道聚合一組活動(dòng),并指定負(fù)責(zé)人和所屬組織?;顒?dòng)圖是另一種描述交互的方式,描述采取何種動(dòng)作,做什么(對(duì)象狀態(tài)改變),何時(shí)發(fā)生(動(dòng)作序列),以及在何處發(fā)生(泳道)。
活動(dòng)圖可以用作下列目的:
(1)描述成操作執(zhí)行過(guò)程中(操作實(shí)現(xiàn)的實(shí)例化)所完成的工作(動(dòng)作),這是活動(dòng)圖最常用的用途。
(2)描述對(duì)象內(nèi)部工作。
(3)顯示如何執(zhí)行一組相關(guān)的動(dòng)作,以及這些動(dòng)作如何影響它們周?chē)膶?duì)象。
(4)顯示用例的實(shí)例是如何執(zhí)行動(dòng)作以及改變對(duì)象狀態(tài)的。

泳道將一個(gè)活動(dòng)圖中的活動(dòng)狀態(tài)分組,每一組表示負(fù)責(zé)那些活動(dòng)的業(yè)務(wù)組織。尤其當(dāng)你對(duì)業(yè)務(wù)過(guò)程的工作流建模時(shí),泳道是很有用的。在UML中,每個(gè)組被稱(chēng)為一個(gè)泳道,因?yàn)閺囊曈X(jué)上,每組用一條垂直實(shí)線把它與鄰居分開(kāi),一個(gè)泳道說(shuō)明一個(gè)活動(dòng)軌跡。
每個(gè)泳道在圖中都有一個(gè)唯一的名稱(chēng)。泳道除了可能代表現(xiàn)實(shí)世界的某些實(shí)體之外,實(shí)際上沒(méi)有很深的語(yǔ)義。每個(gè)泳道代表一個(gè)活動(dòng)圖的全部活動(dòng)中部分活動(dòng)的高層職責(zé),并且每個(gè)泳道最終可能由一個(gè)或多個(gè)類(lèi)實(shí)施。在一個(gè)被劃分為泳道的活動(dòng)圖中,每個(gè)活動(dòng)都明確地屬于一個(gè)泳道,而轉(zhuǎn)移可以跨越泳道。
 

【編輯推薦】

  1. 深入剖析UML動(dòng)態(tài)建模機(jī)制中的四種動(dòng)態(tài)模型
  2. UML動(dòng)態(tài)建模機(jī)制專(zhuān)家解析
  3. UML動(dòng)態(tài)建模中合作圖和活動(dòng)圖解析
  4. L建模過(guò)程中需要注意要點(diǎn)專(zhuān)家提醒
  5. 體驗(yàn)免費(fèi)UML建模工具

 

 

責(zé)任編輯:佚名 來(lái)源: doozz.com
相關(guān)推薦

2010-06-17 10:05:35

UML動(dòng)態(tài)建模

2010-06-30 10:30:29

UML動(dòng)態(tài)建模

2010-07-09 13:16:46

UML動(dòng)態(tài)建模機(jī)制

2010-06-30 15:10:18

2010-07-08 14:13:58

UML靜態(tài)建模

2010-06-08 18:53:43

UML建模工具

2010-06-17 09:48:54

UML動(dòng)態(tài)建模

2010-06-10 17:14:54

UML建模過(guò)程

2010-07-09 13:09:48

UML靜態(tài)建模

2010-07-09 11:23:07

UML動(dòng)態(tài)建模

2010-06-12 11:22:57

UML應(yīng)用

2010-06-29 14:51:26

UML建模技術(shù)

2010-07-08 14:02:35

UML建模流程

2010-07-06 11:21:37

UML狀態(tài)圖

2011-11-17 09:30:00

UML

2010-07-08 12:56:40

2010-07-07 18:11:13

UML對(duì)象圖

2010-06-07 18:17:54

UML建模

2010-07-08 11:27:00

UML用例建模

2010-06-30 10:42:23

UML動(dòng)態(tài)建模機(jī)制
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)