版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
定義結(jié)構(gòu)與連接第一頁(yè),共一百零七頁(yè),2022年,8月28日本章中將把眼光從各個(gè)單獨(dú)的對(duì)象轉(zhuǎn)移到對(duì)象以外,分析和認(rèn)識(shí)各個(gè)對(duì)象類之間的關(guān)系,以建立OOA基本模型的關(guān)系層。第二頁(yè),共一百零七頁(yè),2022年,8月28日對(duì)象類與外部的關(guān)系,有以下幾種:(1)繼承關(guān)系,用一般-特殊結(jié)構(gòu)表示。(2)整體-部分關(guān)系,用整體-部分結(jié)構(gòu)表示。(3)對(duì)象之間的靜態(tài)聯(lián)系,用實(shí)例連接表示。(4)對(duì)象之間的動(dòng)態(tài)聯(lián)系,用消息連接表示。第三頁(yè),共一百零七頁(yè),2022年,8月28日9.1整體-部分結(jié)構(gòu)
整體-部分關(guān)系反映了對(duì)象之間的構(gòu)成關(guān)系,它也稱為聚集關(guān)系。用于描述系統(tǒng)中各類對(duì)象之間的組成關(guān)系,通過(guò)它可以看出某個(gè)類的對(duì)象以另外一些類的對(duì)象作為其組成部分。
第四頁(yè),共一百零七頁(yè),2022年,8月28日9.1.1整體-部分結(jié)構(gòu)及其用途
如果對(duì)象a是對(duì)象b的一個(gè)組成部分,則b為a的整體對(duì)象,a為b的部分對(duì)象。并把b和a之間的關(guān)系稱作整體-部分關(guān)系。第五頁(yè),共一百零七頁(yè),2022年,8月28日整體-部分結(jié)構(gòu)是把一組具有整體-部分關(guān)系的類組織在一起的結(jié)構(gòu)。它是一個(gè)以類為結(jié)點(diǎn),以整體-部分關(guān)系為邊的連通有向圖。第六頁(yè),共一百零七頁(yè),2022年,8月28日在用OOPL編程時(shí),有兩種實(shí)現(xiàn)整體-部分結(jié)構(gòu)的方式,一種方式是把整體對(duì)象中的這個(gè)屬性變量定義成指向部分對(duì)象的指針,或定義成部分對(duì)象的對(duì)象標(biāo)識(shí),運(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建部分對(duì)象,并使整體對(duì)象中的指針或?qū)ο髽?biāo)識(shí)指向它,如圖9-1(a)。第七頁(yè),共一百零七頁(yè),2022年,8月28日另一種方式是用部分對(duì)象的類作為數(shù)據(jù)類型,靜態(tài)地聲明整體對(duì)象中這個(gè)代表部分對(duì)象的屬性變量。這樣,部分對(duì)象就被嵌入到整體對(duì)象的屬性空間中,形成嵌套對(duì),如圖9-1(b)。第八頁(yè),共一百零七頁(yè),2022年,8月28日?qǐng)D9-1第九頁(yè),共一百零七頁(yè),2022年,8月28日兩種結(jié)構(gòu)在概念上的差別是很明顯的,一個(gè)體現(xiàn)了“is-a-kind-of”關(guān)系,一個(gè)體現(xiàn)了“has-a”關(guān)系。從實(shí)現(xiàn)的角度看,整體-部分結(jié)構(gòu)對(duì)編程語(yǔ)言的要求遠(yuǎn)不像一般-特殊結(jié)構(gòu)那樣嚴(yán)格??梢赃\(yùn)用整體-部分結(jié)構(gòu)將多繼承轉(zhuǎn)化為單繼承或無(wú)繼承,從而使模型與編程結(jié)果能夠更好地對(duì)應(yīng)。
第十頁(yè),共一百零七頁(yè),2022年,8月28日9.1.2表示法
組合關(guān)系具有的最重要的性質(zhì)是傳遞性。也就是說(shuō),如果A是B的一部分,B是C的一部分,則A也是C的一部分。圖9-2是表示組合關(guān)系的圖形符號(hào)。第十一頁(yè),共一百零七頁(yè),2022年,8月28日?qǐng)D9-2第十二頁(yè),共一百零七頁(yè),2022年,8月28日9.1.3如何發(fā)現(xiàn)整體-部分結(jié)構(gòu)
組織機(jī)構(gòu)和它的下級(jí)組織及部分物理上的整體事物和它的組織部分組織與成員第十三頁(yè),共一百零七頁(yè),2022年,8月28日抽象事物的整體與部分一種事物的空間上包容其它事物具體事物和它的某個(gè)抽象方面第十四頁(yè),共一百零七頁(yè),2022年,8月28日9.1.4審查與篩選
是不是系統(tǒng)責(zé)任的需要是否屬于問(wèn)題域是否有明顯的整體-部分關(guān)系部分對(duì)象是否有一個(gè)以上的屬性
第十五頁(yè),共一百零七頁(yè),2022年,8月28日9.1.5簡(jiǎn)化對(duì)象的定義在OOA模型中,如果某些對(duì)象的定義過(guò)于復(fù)雜,應(yīng)想法把它簡(jiǎn)化,方法是:在一個(gè)復(fù)雜對(duì)象的內(nèi)部進(jìn)行“再分析”,看它的某些屬性與服務(wù)是不是描述了該對(duì)象的某個(gè)獨(dú)立部分。如果是,則用它們組成一個(gè)部分對(duì)象,從整體對(duì)象的類定義中分離出來(lái),建立整體-部分結(jié)構(gòu)。第十六頁(yè),共一百零七頁(yè),2022年,8月28日9.1.6支持軟件復(fù)用
在兩個(gè)或更多的對(duì)象類中都有一組屬性和服務(wù)描述這些對(duì)象的一個(gè)相同的組成部分。把它們分離出來(lái)作為部分對(duì)象,建立整體-部分結(jié)構(gòu),這些屬性和服務(wù)就被多個(gè)類所復(fù)用,從而簡(jiǎn)化了它們的描述。例如9-3所示的結(jié)構(gòu)。第十七頁(yè),共一百零七頁(yè),2022年,8月28日?qǐng)D9-3第十八頁(yè),共一百零七頁(yè),2022年,8月28日系統(tǒng)中已經(jīng)定義了某類對(duì)象,在定義其它對(duì)象時(shí),發(fā)現(xiàn)其中一組屬性和服務(wù)與這個(gè)已定義的對(duì)象是相同的。那就不必再重復(fù)地定義這些屬性與服務(wù),只需建立它與前一類對(duì)象之間的整體-部分結(jié)構(gòu)。
第十九頁(yè),共一百零七頁(yè),2022年,8月28日9.1.7整體-部分結(jié)構(gòu)的進(jìn)一步運(yùn)用
表示動(dòng)態(tài)變化的對(duì)象特征。首先分析一個(gè)對(duì)象哪方面的特征變化需要由一些動(dòng)態(tài)變化的屬性與服務(wù)來(lái)描述。把這些屬性與服務(wù)分離出來(lái)組成一個(gè)部分對(duì)象,并與整體對(duì)象組成松散的整體-部分結(jié)構(gòu)。系統(tǒng)在運(yùn)行中動(dòng)態(tài)地產(chǎn)生新的部分對(duì)象,以代替舊的部分對(duì)象。
第二十頁(yè),共一百零七頁(yè),2022年,8月28日表示數(shù)量不定的組成部分。一個(gè)對(duì)象中若含有某種數(shù)量不定而內(nèi)容相同的組成部分,則會(huì)給實(shí)現(xiàn)帶來(lái)困難。太少了對(duì)于某些對(duì)象可能不夠用,按多的數(shù)量定義又使大部分對(duì)象造成空間浪費(fèi)。在這種情況下可用整體-部分結(jié)構(gòu)解決,如圖9-4所示。第二十一頁(yè),共一百零七頁(yè),2022年,8月28日?qǐng)D9-4第二十二頁(yè),共一百零七頁(yè),2022年,8月28日9.1.8調(diào)整對(duì)象層和屬性層
對(duì)于每個(gè)整體-部分關(guān)系,整體對(duì)象中要增加一個(gè)屬性來(lái)表明它的部分對(duì)象。在該屬性的詳細(xì)說(shuō)明中要給出這個(gè)屬性的數(shù)據(jù)類型。第二十三頁(yè),共一百零七頁(yè),2022年,8月28日定義整體-部分結(jié)構(gòu)的活動(dòng)可能發(fā)現(xiàn)一些新的對(duì)象類,或者從整體對(duì)象的類定義中分割出一些部分對(duì)象的類定義,應(yīng)把它們加入到對(duì)象層中,并給出它們的詳細(xì)說(shuō)明。第二十四頁(yè),共一百零七頁(yè),2022年,8月28日9.2一般-特殊結(jié)構(gòu)
一般-特殊結(jié)構(gòu)是由一組具有一般-特殊關(guān)系(繼承關(guān)系)的類所組成的結(jié)構(gòu)。第二十五頁(yè),共一百零七頁(yè),2022年,8月28日9.2.1一般-特殊結(jié)構(gòu)及其用途
從類的特征來(lái)看:如果類A具有類B的全部屬性和全部服務(wù),而且具有自己特有的某些屬性或服務(wù),則A叫作B的特殊類,B叫做A的一般類。第二十六頁(yè),共一百零七頁(yè),2022年,8月28日從類集合的元素來(lái)看:如果類A的全部對(duì)象都是類B的對(duì)象,而且類B中存在不屬于類A的對(duì)象,則A是B的特殊類,B是A的一般類。第二十七頁(yè),共一百零七頁(yè),2022年,8月28日一般類的特征集合則是特殊類集合的真子集;而特殊類的對(duì)象實(shí)例集合是一般類對(duì)象實(shí)例集合的真子集,如圖9-5所示。第二十八頁(yè),共一百零七頁(yè),2022年,8月28日?qǐng)D9-5第二十九頁(yè),共一百零七頁(yè),2022年,8月28日一般-特殊結(jié)構(gòu)的定義是:一般-特殊結(jié)構(gòu)是把一組有一般-特殊關(guān)系的類組織在一起而得到的結(jié)構(gòu),它是一個(gè)以類為結(jié)點(diǎn),以一般-特殊關(guān)系為邊的連通有向圖。第三十頁(yè),共一百零七頁(yè),2022年,8月28日9.2.2表示法
如圖9-6所示。其中圖9-6(a)是一般-特殊結(jié)構(gòu)連接符,從圓弧引出的連線連接到一般類,從直線分出的連線連接到每個(gè)特殊類。圖9-6(b)是一個(gè)完整的一般-特殊結(jié)構(gòu),它包括結(jié)構(gòu)中的每個(gè)類。第三十一頁(yè),共一百零七頁(yè),2022年,8月28日?qǐng)D9-6第三十二頁(yè),共一百零七頁(yè),2022年,8月28日9.2.3如何發(fā)現(xiàn)一般-特殊結(jié)構(gòu)按常識(shí)考慮事物的分類學(xué)習(xí)問(wèn)題域的分類學(xué)知識(shí)按照一般-特殊結(jié)構(gòu)的定義分析考察類的屬性與服務(wù)考慮領(lǐng)域范圍內(nèi)的復(fù)用第三十三頁(yè),共一百零七頁(yè),2022年,8月28日9.2.4審查與調(diào)整是否符合分類學(xué)的常識(shí)系統(tǒng)責(zé)任是否需要這樣的分類問(wèn)題域是否需要這樣的分類是否構(gòu)成了繼承關(guān)系第三十四頁(yè),共一百零七頁(yè),2022年,8月28日9.2.5多繼承及多態(tài)性問(wèn)題
按照問(wèn)題域和系統(tǒng)實(shí)際要求,如果類之間的關(guān)系是多繼承的,則應(yīng)該建立多繼承的一般-特殊結(jié)構(gòu)。圖9-7是一個(gè)多繼承結(jié)構(gòu)的例子。第三十五頁(yè),共一百零七頁(yè),2022年,8月28日?qǐng)D9-7第三十六頁(yè),共一百零七頁(yè),2022年,8月28日例如,一般類“多邊形”定義的“邊數(shù)”、“邊長(zhǎng)”、“頂點(diǎn)數(shù)據(jù)”屬性和“繪圖”服務(wù),將被它的兩個(gè)特殊類繼承。但希望有如下的多態(tài)性:第三十七頁(yè),共一百零七頁(yè),2022年,8月28日
(1)“多邊形”類。邊數(shù):指出該多邊形的邊數(shù)。邊長(zhǎng):指出該圖形四個(gè)邊的長(zhǎng)度。頂點(diǎn)數(shù)據(jù):由每個(gè)頂點(diǎn)的坐標(biāo)構(gòu)成的數(shù)組。繪圖;用直線連接每?jī)蓚€(gè)相鄰的頂點(diǎn)。第三十八頁(yè),共一百零七頁(yè),2022年,8月28日
(2)“正方形”類。邊數(shù):取消該屬性。邊長(zhǎng):指出該正方形邊的長(zhǎng)度。頂點(diǎn)數(shù)據(jù):由每個(gè)頂點(diǎn)的坐標(biāo)構(gòu)成的數(shù)組。繪圖:用直線連接每?jī)蓚€(gè)相鄰的頂點(diǎn)。第三十九頁(yè),共一百零七頁(yè),2022年,8月28日
(3)“長(zhǎng)方形”類。邊數(shù):取消該屬性。邊長(zhǎng):指出長(zhǎng)方形的長(zhǎng)和寬。頂點(diǎn)數(shù)據(jù):由每個(gè)頂點(diǎn)的坐標(biāo)構(gòu)成的數(shù)組。繪圖:用直線連接每?jī)蓚€(gè)相鄰的頂點(diǎn)。第四十頁(yè),共一百零七頁(yè),2022年,8月28日符合上述例子要求的多態(tài)性表達(dá)如圖9-8所示。圖9-8第四十一頁(yè),共一百零七頁(yè),2022年,8月28日兩個(gè)容易混淆的概念:
(1)重命名(rename)和重載(overload)(2)多繼承(multipleinheritance)和多態(tài)性(polymorphism)第四十二頁(yè),共一百零七頁(yè),2022年,8月28日9.2.6一般-特殊結(jié)構(gòu)的簡(jiǎn)化如果不加節(jié)制地建立一般-特殊結(jié)構(gòu),也會(huì)帶來(lái)一些不利的影響,表現(xiàn)為兩種現(xiàn)象:(1)建立過(guò)深的繼承層次,增加了系統(tǒng)的理解難度和處理開(kāi)銷(xiāo)。(2)從一般類劃分出太多的特殊類,使系統(tǒng)中類的設(shè)置太多,增加了系統(tǒng)的復(fù)雜性。第四十三頁(yè),共一百零七頁(yè),2022年,8月28日重點(diǎn)檢查以下幾種情況:(1)某些特殊類之間的差別可以由一般類的某個(gè)屬性值來(lái)體現(xiàn),而且除此之外沒(méi)有更多的不同。(2)特殊類沒(méi)有自己的特殊的屬性與服務(wù)。(3)一個(gè)一般類之下只有其他的特殊類,并且這個(gè)一般類沒(méi)有可創(chuàng)建的對(duì)象實(shí)例。
第四十四頁(yè),共一百零七頁(yè),2022年,8月28日系統(tǒng)中的一般類應(yīng)符合下述條件之一才有存在的價(jià)值,如果不符合下述任何條件,則應(yīng)考慮簡(jiǎn)化:(1)需要用它創(chuàng)建對(duì)象實(shí)例。(2)它有兩個(gè)或兩個(gè)以上的特殊類。(3)它的存在有助于軟件復(fù)用。第四十五頁(yè),共一百零七頁(yè),2022年,8月28日9.2.7調(diào)整對(duì)象層和特征層
為了用一般-特殊結(jié)構(gòu)連接符連接結(jié)構(gòu)中的每個(gè)類,并達(dá)到整齊且美觀的效果,對(duì)類的位置也要作必要的調(diào)整。在OOA工具的支持下,上述修改與調(diào)整都是很容易的。第四十六頁(yè),共一百零七頁(yè),2022年,8月28日9.3實(shí)例連接
本節(jié)討論對(duì)象之間的另一種關(guān)系–––實(shí)例連接。首先介紹實(shí)例連接的基本概念、用途及表示法,然后討論幾種復(fù)雜的情況。第四十七頁(yè),共一百零七頁(yè),2022年,8月28日9.3.1簡(jiǎn)單的實(shí)例連接
實(shí)例連接是對(duì)象實(shí)例之間的一種二元關(guān)系,在實(shí)現(xiàn)之后的關(guān)系中它將落實(shí)到每一對(duì)具有這種關(guān)系的對(duì)象實(shí)例之間,但是在OOA中沒(méi)有必要作如此具體的表示,只需在具有這種實(shí)例連接關(guān)系的對(duì)象類之間統(tǒng)一地給出這種關(guān)系的定義。第四十八頁(yè),共一百零七頁(yè),2022年,8月28日表示法。兩類對(duì)象之間不帶屬性的實(shí)例連接,其表示法如圖9-9(a)所示。圖9-9(b)概括了因兩端的多重性不同而形成的三種情況:一對(duì)一的連接、一對(duì)多的連接和多對(duì)多的連接。第四十九頁(yè),共一百零七頁(yè),2022年,8月28日?qǐng)D9-9第五十頁(yè),共一百零七頁(yè),2022年,8月28日實(shí)現(xiàn)方式。實(shí)例連接一般可用對(duì)象指針來(lái)實(shí)現(xiàn)。即在被連接的兩個(gè)類中選擇其中一個(gè),在它的對(duì)象中設(shè)立一個(gè)指針類型的屬性,用于指向另一個(gè)類中與它有連接關(guān)系的對(duì)象實(shí)例。第五十一頁(yè),共一百零七頁(yè),2022年,8月28日實(shí)例連接與整體-部分結(jié)構(gòu)的異同:(1)實(shí)例連接中的對(duì)象之間沒(méi)有這種語(yǔ)義,即分不出誰(shuí)是整體、誰(shuí)是部分;整體-部分結(jié)構(gòu)中的對(duì)象在實(shí)現(xiàn)世界中含有明顯的“has-a”語(yǔ)義。
第五十二頁(yè),共一百零七頁(yè),2022年,8月28日(2)在實(shí)現(xiàn)上,實(shí)例連接絕不能用緊密的整體-部分結(jié)構(gòu)所用的嵌套對(duì)象來(lái)實(shí)現(xiàn),但它和松散的整體-部分結(jié)構(gòu)實(shí)現(xiàn)方法是有一定相似之處的。第五十三頁(yè),共一百零七頁(yè),2022年,8月28日9.3.2復(fù)雜的實(shí)例連接及其表示采用復(fù)雜的實(shí)例連接概念。一個(gè)關(guān)聯(lián)可能要記錄一些信息,可以引入一個(gè)關(guān)聯(lián)類來(lái)記錄。關(guān)聯(lián)類通過(guò)一根虛線與關(guān)聯(lián)連接,其表示法如圖9-10所示。第五十四頁(yè),共一百零七頁(yè),2022年,8月28日?qǐng)D9-10第五十五頁(yè),共一百零七頁(yè),2022年,8月28日對(duì)于只帶有屬性,而不帶操作的實(shí)例連接可供考慮的實(shí)現(xiàn)方式有以下幾種:
第五十六頁(yè),共一百零七頁(yè),2022年,8月28日(1)在實(shí)例連接一端的對(duì)象中設(shè)立一組屬性,其中一個(gè)屬性是指向?qū)嵗B接另一端對(duì)象的指針;其余的屬性是在關(guān)聯(lián)中列出的連接屬性。
(2)根據(jù)關(guān)聯(lián)定義一個(gè)結(jié)構(gòu)數(shù)據(jù)類型,其中兩個(gè)域變量是分別指向兩端對(duì)象的指針,其余域變量是連接屬性。第五十七頁(yè),共一百零七頁(yè),2022年,8月28日(3)根據(jù)關(guān)聯(lián)定義一個(gè)結(jié)構(gòu)數(shù)據(jù)類型,其中一個(gè)域變量是指向一端對(duì)象的指針,其余域變量是連接屬性。
(4)把關(guān)聯(lián)用一個(gè)類來(lái)實(shí)現(xiàn),用這個(gè)類的對(duì)象代表兩端對(duì)象之間一個(gè)具體的實(shí)例連接。
第五十八頁(yè),共一百零七頁(yè),2022年,8月28日用對(duì)象表示實(shí)例連接的復(fù)雜性。若兩類對(duì)象之間的聯(lián)系帶有某些復(fù)雜的信息,這說(shuō)明它們之間存在著某種事物(可能是抽象事物)。如圖9-11所示。
第五十九頁(yè),共一百零七頁(yè),2022年,8月28日?qǐng)D9-11第六十頁(yè),共一百零七頁(yè),2022年,8月28日9.3.3三元關(guān)聯(lián)問(wèn)題
J.Rumbaugh等在OMT中注意到三類對(duì)象之間的聯(lián)系問(wèn)題,并稱之為三元關(guān)聯(lián)(ternaryassociation)。于是他們使用了一種表示三元關(guān)系的表示符號(hào),如圖9-12所示。第六十一頁(yè),共一百零七頁(yè),2022年,8月28日?qǐng)D9-12第六十二頁(yè),共一百零七頁(yè),2022年,8月28日9.3.4如何建立實(shí)例連接
認(rèn)識(shí)對(duì)象之間的靜態(tài)聯(lián)系認(rèn)識(shí)實(shí)例連接的屬性與操作分析實(shí)例連接的多重性第六十三頁(yè),共一百零七頁(yè),2022年,8月28日異常情況處理(1)多對(duì)多實(shí)例連接的處理(2)多元關(guān)聯(lián)的處理命名與定位
第六十四頁(yè),共一百零七頁(yè),2022年,8月28日9.3.5對(duì)象層、特征層的增補(bǔ)及實(shí)例連接說(shuō)明
在建立實(shí)例連接的過(guò)程中可能增加一些新的對(duì)象類。要把這些新增的類補(bǔ)充到類圖的對(duì)象層中,并建立它們的類描述模板。第六十五頁(yè),共一百零七頁(yè),2022年,8月28日對(duì)于每一個(gè)實(shí)例連接,應(yīng)該在它某一端所連接的對(duì)象類中增加相應(yīng)的屬性,它的類型應(yīng)該被說(shuō)明為指向另一端對(duì)象的指針。第六十六頁(yè),共一百零七頁(yè),2022年,8月28日9.4消息連接
本節(jié)介紹如何分析和認(rèn)識(shí)對(duì)象之間在行為上的依賴關(guān)系,并通過(guò)消息連接來(lái)表示這種關(guān)系,從而使OOA模型最終成為一個(gè)有機(jī)的整體。第六十七頁(yè),共一百零七頁(yè),2022年,8月28日9.4.1消息的定義
消息的定義是:消息是面向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求。消息連接描述對(duì)象之間的動(dòng)態(tài)聯(lián)系,即:若一個(gè)對(duì)象在執(zhí)行自己的服務(wù)時(shí),需要請(qǐng)求另一個(gè)對(duì)象為它完成某個(gè)服務(wù)。第六十八頁(yè),共一百零七頁(yè),2022年,8月28日9.4.2順序系統(tǒng)中的消息
順序系統(tǒng)中的一切操作都是順序執(zhí)行的。它的OOA模型只有一個(gè)主動(dòng)對(duì)象(并且這個(gè)主動(dòng)對(duì)象中只有一個(gè)主動(dòng)服務(wù)),其余的對(duì)象都是被動(dòng)對(duì)象。實(shí)現(xiàn)之后的系統(tǒng)在運(yùn)行時(shí),將只對(duì)應(yīng)一個(gè)處理機(jī)調(diào)度單位。如圖9-13所示。
第六十九頁(yè),共一百零七頁(yè),2022年,8月28日?qǐng)D9-13第七十頁(yè),共一百零七頁(yè),2022年,8月28日順序系統(tǒng)中,對(duì)象之間的消息具有下述特點(diǎn):(1)每個(gè)消息都是向?qū)ο蟀l(fā)出的一個(gè)服務(wù)請(qǐng)求,它必定引起接收者一個(gè)服務(wù)的執(zhí)行。(2)每個(gè)消息的發(fā)送與接收都是同時(shí)進(jìn)行的,即消息都是同步的。(3)除了主動(dòng)對(duì)象其他的主動(dòng)服務(wù)之外,其他對(duì)象服務(wù)只有在接收到消息時(shí)才開(kāi)始執(zhí)行。(4)消息是從正在執(zhí)行的服務(wù)中發(fā)出的。
第七十一頁(yè),共一百零七頁(yè),2022年,8月28日在語(yǔ)法上,一個(gè)消息的描述應(yīng)包括以下內(nèi)容:(1)消息名,即接收消息的服務(wù)名。(2)接收消息的服務(wù)要求的輸入?yún)?shù),即入口參數(shù)。(3)接收消息的服務(wù)提供的輸出參數(shù),即返回參數(shù)。第七十二頁(yè),共一百零七頁(yè),2022年,8月28日在語(yǔ)義上,一個(gè)消息應(yīng)包括下述信息:(1)發(fā)送者,這是通過(guò)消息發(fā)送點(diǎn)的位置隱含表明的。(2)接收者,是由消息名表達(dá)的。(3)其他需傳送的信息,通過(guò)入口參數(shù)和返回參數(shù)表示。第七十三頁(yè),共一百零七頁(yè),2022年,8月28日9.4.3并發(fā)系統(tǒng)中的消息
并發(fā)系統(tǒng)是有多個(gè)任務(wù)并發(fā)執(zhí)行的系統(tǒng)。它的OOA模型含有多個(gè)主動(dòng)對(duì)象和若干被動(dòng)對(duì)象。圖9-14是一個(gè)并發(fā)系統(tǒng)的例子。第七十四頁(yè),共一百零七頁(yè),2022年,8月28日?qǐng)D9-14第七十五頁(yè),共一百零七頁(yè),2022年,8月28日消息的多種用途(1)向接收者發(fā)出一個(gè)服務(wù)請(qǐng)求。(2)向接收者提交一些數(shù)據(jù)。(3)向接收者發(fā)布一個(gè)通知或事件信息。(4)向接收者傳遞一個(gè)同步控制信號(hào)。第七十六頁(yè),共一百零七頁(yè),2022年,8月28日消息的同步與異步(1)同步消息:僅當(dāng)發(fā)送者要發(fā)送一個(gè)消息而且接收者已做好接收這個(gè)消息的準(zhǔn)備時(shí)才能傳送的消息稱為同步消息。(2)異步消息:發(fā)送者不管接收者是否做好接收準(zhǔn)備都可以發(fā)送的消息稱為異步消息。第七十七頁(yè),共一百零七頁(yè),2022年,8月28日發(fā)送者對(duì)消息處理結(jié)果的不同期待方式:(1)發(fā)送者在發(fā)出消息之后等待,直到得到處理結(jié)果才繼續(xù)原先的工作。(2)發(fā)送者不等待處理結(jié)果,發(fā)出消息之后立刻繼續(xù)執(zhí)行,只是在以后的某個(gè)執(zhí)行點(diǎn)或某種時(shí)機(jī)查看消息的處理結(jié)果。(3)發(fā)送消息后,發(fā)送者既不等待,也不再關(guān)心其處理結(jié)果。第七十八頁(yè),共一百零七頁(yè),2022年,8月28日接收者對(duì)消息的不同響應(yīng)方式:(1)在消息產(chǎn)生之前,處理這個(gè)消息的進(jìn)程或線程并不存在;僅當(dāng)發(fā)送者發(fā)這個(gè)消息時(shí)才立刻創(chuàng)建一個(gè)進(jìn)程或線程來(lái)響應(yīng)這個(gè)消息,完成它所要求的服務(wù)。
第七十九頁(yè),共一百零七頁(yè),2022年,8月28日(2)處理消息的進(jìn)程或線程已經(jīng)存在,并且與發(fā)送者同步地接收消息。接到消息時(shí)立即處理。(3)某些消息所指出的接收者可能并不關(guān)心這種消息,它可能不作任何響應(yīng)。(4)接收者異地接收和處理消息,即在消息發(fā)出之后的某個(gè)時(shí)刻才接收和處理該消息。第八十頁(yè),共一百零七頁(yè),2022年,8月28日消息的接收者是否其他(1)消息定向地發(fā)送給其他的接收者,稱作定向消息。(2)把消息發(fā)送給某個(gè)范圍內(nèi)所有的可能的接收者,稱作廣播消息。第八十一頁(yè),共一百零七頁(yè),2022年,8月28日9.4.4消息對(duì)OOA的意義
在用面向?qū)ο蠓椒?gòu)造的系統(tǒng)中,消息體現(xiàn)了對(duì)象行為之間的依賴關(guān)系。它是實(shí)現(xiàn)對(duì)象之間的動(dòng)態(tài)聯(lián)系,使系統(tǒng)成為一個(gè)能活動(dòng)的整體,并使各個(gè)部分能夠協(xié)調(diào)工作的關(guān)鍵因素。第八十二頁(yè),共一百零七頁(yè),2022年,8月28日9.4.5OOA對(duì)消息的表示---消息連接
OOA對(duì)消息的考慮,應(yīng)該識(shí)別和表示的主要問(wèn)題包括:(1)對(duì)象之間是否存在某種消息。(2)這種消息是同一個(gè)控制線程內(nèi)部的還是不同控制線程之間的。(3)每一種消息的發(fā)出者和接受者。(4)消息是同步的還是異步的。(5)發(fā)送者是否等待消息的處理結(jié)果。第八十三頁(yè),共一百零七頁(yè),2022年,8月28日確定該消息是同一個(gè)控制線程內(nèi)部的還是不同控制線程之間的很重要,因?yàn)榘淹粋€(gè)控制線程內(nèi)部的消息和不同控制線程之間的消息用不同的連接線加以區(qū)別,可以使源于不同主動(dòng)對(duì)象的每一條執(zhí)行路線都能清晰地呈現(xiàn)給閱讀者,避免互相交叉和混淆。第八十四頁(yè),共一百零七頁(yè),2022年,8月28日使用了兩種消息連接符號(hào)來(lái)表示對(duì)象之間的消息傳送關(guān)系,如圖9-15所示。圖9-15第八十五頁(yè),共一百零七頁(yè),2022年,8月28日消息連接的定義是:消息連接是OOA模型中對(duì)對(duì)象之間行為依賴關(guān)系的表示,即:若類A的對(duì)象在它的服務(wù)執(zhí)行時(shí)需要向類B的對(duì)象發(fā)送消息,則稱存在著從A到B的消息連接。第八十六頁(yè),共一百零七頁(yè),2022年,8月28日兩個(gè)類的對(duì)象之間可能互相發(fā)消息,使用一個(gè)雙向的消息連接符號(hào),如圖9-16所示。圖9-16第八十七頁(yè),共一百零七頁(yè),2022年,8月28日9.5如何建立消息連接
本節(jié)介紹如何在OOA模型中建立消息連接,首先討論如何建立每個(gè)控制線程內(nèi)部的消息連接;其次介紹如何建立各個(gè)控制線程之間的消息連接;最后討論對(duì)象分布對(duì)消息的影響。第八十八頁(yè),共一百零七頁(yè),2022年,8月28日9.5.1建立控制線程內(nèi)部的消息連接
模擬當(dāng)前對(duì)象的執(zhí)行,考慮為了完成當(dāng)前的工作,需要請(qǐng)求其他對(duì)象提供什么服務(wù)。分析該消息的發(fā)送者與接收者在執(zhí)行時(shí)是否屬于同一個(gè)控制線程。第八十九頁(yè),共一百零七頁(yè),2022年,8月28日在當(dāng)前服務(wù)的詳細(xì)說(shuō)明中指出由它發(fā)出的每一種消息的接收者,從當(dāng)前服務(wù)所在的類向所有接收消息的對(duì)象類畫(huà)出消息連接線。沿著控制線程內(nèi)部的每一條消息追蹤到接收該消息的對(duì)象服務(wù),重復(fù)進(jìn)行以上的工作。第九十頁(yè),共一百零七頁(yè),2022年,8月28日9.5.2建立控制線程之間的消息連接
對(duì)每個(gè)控制線程主要考慮以下幾個(gè)問(wèn)題:(1)該控制線程在執(zhí)行時(shí),是否需要請(qǐng)求其他控制線程中的對(duì)象為它提供某種服務(wù)?這種請(qǐng)求由哪個(gè)對(duì)象發(fā)出?由哪個(gè)對(duì)象中的服務(wù)進(jìn)行處理?(2)該控制線程在執(zhí)行時(shí),是否要向其他控制線程中的對(duì)象提供或索取某些數(shù)據(jù)?第九十一頁(yè),共一百零七頁(yè),2022年,8月28日(3)各個(gè)控制線程的并發(fā)執(zhí)行,是否需要傳遞一些同步控制信號(hào)?
(4)它在執(zhí)行時(shí)是否將產(chǎn)生某些對(duì)其他控制線程的執(zhí)行有影響的事件?
第九十二頁(yè),共一百零七頁(yè),2022年,8月28日(5)一個(gè)控制線程將在何種條件下中止執(zhí)行?在它中止之后將在何種條件下由其他控制線程喚醒?用什么辦法喚醒?(6)這個(gè)消息由一個(gè)控制線程中的哪個(gè)對(duì)象服務(wù)發(fā)出?由另一個(gè)控制線程中的哪一個(gè)對(duì)象服務(wù)來(lái)處理?
第九十三頁(yè),共一百零七頁(yè),2022年,8月28日9.5.3對(duì)象分布問(wèn)題及其消息的影響
同一臺(tái)處理機(jī)上的對(duì)象之間的消息通信既可能是一個(gè)控制線程內(nèi)部的,也可能是不同控制線程之間的。第九十四頁(yè),共一百零七頁(yè),2022年,8月28日在每個(gè)子處理機(jī)上分布的一組對(duì)象中,至少應(yīng)有一個(gè)對(duì)象是主動(dòng)對(duì)象;所有的被動(dòng)對(duì)象都是在位于本機(jī)的主動(dòng)對(duì)象驅(qū)動(dòng)下運(yùn)行的。第九十五頁(yè),共一百零七頁(yè),2022年,8月28日9.6消息的詳細(xì)說(shuō)明
在接收者的類描述模板中對(duì)每個(gè)服務(wù)作如下說(shuō)明:(1)說(shuō)明由這個(gè)服務(wù)接收和處理的每一種消息,規(guī)定消息的格式及內(nèi)容。(2)說(shuō)明本服務(wù)是順序執(zhí)行的還是并發(fā)執(zhí)行的。(3)有時(shí)還要說(shuō)明消息是同步的還是異步的。第九十六頁(yè),共一百零七頁(yè),2022年,8月28日在發(fā)送者的類描述模板中對(duì)每個(gè)發(fā)送消息的服務(wù)作如下說(shuō)明:(1)指出這個(gè)服務(wù)在執(zhí)行時(shí)可能發(fā)出的每一種消息,給出接收
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 產(chǎn)教融合中的實(shí)踐教學(xué)與實(shí)訓(xùn)基地建設(shè)策略
- 2025房產(chǎn)銷(xiāo)售下半年工作計(jì)劃
- 2025年小學(xué)學(xué)法制教育年度工作計(jì)劃范文
- 信息技術(shù)必修1數(shù)據(jù)與計(jì)算4.3《非數(shù)值計(jì)算》說(shuō)課稿
- 2025年醫(yī)院月工作計(jì)劃
- 2025年經(jīng)理年度工作計(jì)劃2
- 小學(xué)四年級(jí)下冊(cè)數(shù)學(xué)期末試卷分析(范文13篇)
- 2025年四年級(jí)班隊(duì)學(xué)期工作計(jì)劃
- 2025年學(xué)校秋季開(kāi)學(xué)工作計(jì)劃
- 2025年月份工作計(jì)劃
- 小學(xué)道德與法治課活動(dòng)設(shè)計(jì)方案
- 家電以舊換新風(fēng)險(xiǎn)識(shí)別與應(yīng)對(duì)措施
- 春節(jié)英語(yǔ)介紹SpringFestival(課件)新思維小學(xué)英語(yǔ)5A
- 卵巢囊腫蒂扭轉(zhuǎn)的臨床分析
- 退休職工安全知識(shí)講座
- 全國(guó)兒童預(yù)防接種知識(shí)講座
- GMP理念在制藥工程項(xiàng)目中的應(yīng)用
- 電信營(yíng)業(yè)廳規(guī)章制度范文
- 提高感染性休克集束化治療完成率工作方案
- 突發(fā)事件緊急醫(yī)學(xué)救援中的煙花爆竹傷處理培訓(xùn)
- 《白夜行》名著導(dǎo)讀讀書(shū)分享
評(píng)論
0/150
提交評(píng)論