定義結(jié)構(gòu)與連接_第1頁
定義結(jié)構(gòu)與連接_第2頁
定義結(jié)構(gòu)與連接_第3頁
定義結(jié)構(gòu)與連接_第4頁
定義結(jié)構(gòu)與連接_第5頁
已閱讀5頁,還剩102頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

定義結(jié)構(gòu)與連接第一頁,共一百零七頁,2022年,8月28日本章中將把眼光從各個單獨的對象轉(zhuǎn)移到對象以外,分析和認識各個對象類之間的關(guān)系,以建立OOA基本模型的關(guān)系層。第二頁,共一百零七頁,2022年,8月28日對象類與外部的關(guān)系,有以下幾種:(1)繼承關(guān)系,用一般-特殊結(jié)構(gòu)表示。(2)整體-部分關(guān)系,用整體-部分結(jié)構(gòu)表示。(3)對象之間的靜態(tài)聯(lián)系,用實例連接表示。(4)對象之間的動態(tài)聯(lián)系,用消息連接表示。第三頁,共一百零七頁,2022年,8月28日9.1整體-部分結(jié)構(gòu)

整體-部分關(guān)系反映了對象之間的構(gòu)成關(guān)系,它也稱為聚集關(guān)系。用于描述系統(tǒng)中各類對象之間的組成關(guān)系,通過它可以看出某個類的對象以另外一些類的對象作為其組成部分。

第四頁,共一百零七頁,2022年,8月28日9.1.1整體-部分結(jié)構(gòu)及其用途

如果對象a是對象b的一個組成部分,則b為a的整體對象,a為b的部分對象。并把b和a之間的關(guān)系稱作整體-部分關(guān)系。第五頁,共一百零七頁,2022年,8月28日整體-部分結(jié)構(gòu)是把一組具有整體-部分關(guān)系的類組織在一起的結(jié)構(gòu)。它是一個以類為結(jié)點,以整體-部分關(guān)系為邊的連通有向圖。第六頁,共一百零七頁,2022年,8月28日在用OOPL編程時,有兩種實現(xiàn)整體-部分結(jié)構(gòu)的方式,一種方式是把整體對象中的這個屬性變量定義成指向部分對象的指針,或定義成部分對象的對象標識,運行時動態(tài)創(chuàng)建部分對象,并使整體對象中的指針或?qū)ο髽俗R指向它,如圖9-1(a)。第七頁,共一百零七頁,2022年,8月28日另一種方式是用部分對象的類作為數(shù)據(jù)類型,靜態(tài)地聲明整體對象中這個代表部分對象的屬性變量。這樣,部分對象就被嵌入到整體對象的屬性空間中,形成嵌套對,如圖9-1(b)。第八頁,共一百零七頁,2022年,8月28日圖9-1第九頁,共一百零七頁,2022年,8月28日兩種結(jié)構(gòu)在概念上的差別是很明顯的,一個體現(xiàn)了“is-a-kind-of”關(guān)系,一個體現(xiàn)了“has-a”關(guān)系。從實現(xiàn)的角度看,整體-部分結(jié)構(gòu)對編程語言的要求遠不像一般-特殊結(jié)構(gòu)那樣嚴格??梢赃\用整體-部分結(jié)構(gòu)將多繼承轉(zhuǎn)化為單繼承或無繼承,從而使模型與編程結(jié)果能夠更好地對應(yīng)。

第十頁,共一百零七頁,2022年,8月28日9.1.2表示法

組合關(guān)系具有的最重要的性質(zhì)是傳遞性。也就是說,如果A是B的一部分,B是C的一部分,則A也是C的一部分。圖9-2是表示組合關(guān)系的圖形符號。第十一頁,共一百零七頁,2022年,8月28日圖9-2第十二頁,共一百零七頁,2022年,8月28日9.1.3如何發(fā)現(xiàn)整體-部分結(jié)構(gòu)

組織機構(gòu)和它的下級組織及部分物理上的整體事物和它的組織部分組織與成員第十三頁,共一百零七頁,2022年,8月28日抽象事物的整體與部分一種事物的空間上包容其它事物具體事物和它的某個抽象方面第十四頁,共一百零七頁,2022年,8月28日9.1.4審查與篩選

是不是系統(tǒng)責(zé)任的需要是否屬于問題域是否有明顯的整體-部分關(guān)系部分對象是否有一個以上的屬性

第十五頁,共一百零七頁,2022年,8月28日9.1.5簡化對象的定義在OOA模型中,如果某些對象的定義過于復(fù)雜,應(yīng)想法把它簡化,方法是:在一個復(fù)雜對象的內(nèi)部進行“再分析”,看它的某些屬性與服務(wù)是不是描述了該對象的某個獨立部分。如果是,則用它們組成一個部分對象,從整體對象的類定義中分離出來,建立整體-部分結(jié)構(gòu)。第十六頁,共一百零七頁,2022年,8月28日9.1.6支持軟件復(fù)用

在兩個或更多的對象類中都有一組屬性和服務(wù)描述這些對象的一個相同的組成部分。把它們分離出來作為部分對象,建立整體-部分結(jié)構(gòu),這些屬性和服務(wù)就被多個類所復(fù)用,從而簡化了它們的描述。例如9-3所示的結(jié)構(gòu)。第十七頁,共一百零七頁,2022年,8月28日圖9-3第十八頁,共一百零七頁,2022年,8月28日系統(tǒng)中已經(jīng)定義了某類對象,在定義其它對象時,發(fā)現(xiàn)其中一組屬性和服務(wù)與這個已定義的對象是相同的。那就不必再重復(fù)地定義這些屬性與服務(wù),只需建立它與前一類對象之間的整體-部分結(jié)構(gòu)。

第十九頁,共一百零七頁,2022年,8月28日9.1.7整體-部分結(jié)構(gòu)的進一步運用

表示動態(tài)變化的對象特征。首先分析一個對象哪方面的特征變化需要由一些動態(tài)變化的屬性與服務(wù)來描述。把這些屬性與服務(wù)分離出來組成一個部分對象,并與整體對象組成松散的整體-部分結(jié)構(gòu)。系統(tǒng)在運行中動態(tài)地產(chǎn)生新的部分對象,以代替舊的部分對象。

第二十頁,共一百零七頁,2022年,8月28日表示數(shù)量不定的組成部分。一個對象中若含有某種數(shù)量不定而內(nèi)容相同的組成部分,則會給實現(xiàn)帶來困難。太少了對于某些對象可能不夠用,按多的數(shù)量定義又使大部分對象造成空間浪費。在這種情況下可用整體-部分結(jié)構(gòu)解決,如圖9-4所示。第二十一頁,共一百零七頁,2022年,8月28日圖9-4第二十二頁,共一百零七頁,2022年,8月28日9.1.8調(diào)整對象層和屬性層

對于每個整體-部分關(guān)系,整體對象中要增加一個屬性來表明它的部分對象。在該屬性的詳細說明中要給出這個屬性的數(shù)據(jù)類型。第二十三頁,共一百零七頁,2022年,8月28日定義整體-部分結(jié)構(gòu)的活動可能發(fā)現(xiàn)一些新的對象類,或者從整體對象的類定義中分割出一些部分對象的類定義,應(yīng)把它們加入到對象層中,并給出它們的詳細說明。第二十四頁,共一百零七頁,2022年,8月28日9.2一般-特殊結(jié)構(gòu)

一般-特殊結(jié)構(gòu)是由一組具有一般-特殊關(guān)系(繼承關(guān)系)的類所組成的結(jié)構(gòu)。第二十五頁,共一百零七頁,2022年,8月28日9.2.1一般-特殊結(jié)構(gòu)及其用途

從類的特征來看:如果類A具有類B的全部屬性和全部服務(wù),而且具有自己特有的某些屬性或服務(wù),則A叫作B的特殊類,B叫做A的一般類。第二十六頁,共一百零七頁,2022年,8月28日從類集合的元素來看:如果類A的全部對象都是類B的對象,而且類B中存在不屬于類A的對象,則A是B的特殊類,B是A的一般類。第二十七頁,共一百零七頁,2022年,8月28日一般類的特征集合則是特殊類集合的真子集;而特殊類的對象實例集合是一般類對象實例集合的真子集,如圖9-5所示。第二十八頁,共一百零七頁,2022年,8月28日圖9-5第二十九頁,共一百零七頁,2022年,8月28日一般-特殊結(jié)構(gòu)的定義是:一般-特殊結(jié)構(gòu)是把一組有一般-特殊關(guān)系的類組織在一起而得到的結(jié)構(gòu),它是一個以類為結(jié)點,以一般-特殊關(guān)系為邊的連通有向圖。第三十頁,共一百零七頁,2022年,8月28日9.2.2表示法

如圖9-6所示。其中圖9-6(a)是一般-特殊結(jié)構(gòu)連接符,從圓弧引出的連線連接到一般類,從直線分出的連線連接到每個特殊類。圖9-6(b)是一個完整的一般-特殊結(jié)構(gòu),它包括結(jié)構(gòu)中的每個類。第三十一頁,共一百零七頁,2022年,8月28日圖9-6第三十二頁,共一百零七頁,2022年,8月28日9.2.3如何發(fā)現(xiàn)一般-特殊結(jié)構(gòu)按常識考慮事物的分類學(xué)習(xí)問題域的分類學(xué)知識按照一般-特殊結(jié)構(gòu)的定義分析考察類的屬性與服務(wù)考慮領(lǐng)域范圍內(nèi)的復(fù)用第三十三頁,共一百零七頁,2022年,8月28日9.2.4審查與調(diào)整是否符合分類學(xué)的常識系統(tǒng)責(zé)任是否需要這樣的分類問題域是否需要這樣的分類是否構(gòu)成了繼承關(guān)系第三十四頁,共一百零七頁,2022年,8月28日9.2.5多繼承及多態(tài)性問題

按照問題域和系統(tǒng)實際要求,如果類之間的關(guān)系是多繼承的,則應(yīng)該建立多繼承的一般-特殊結(jié)構(gòu)。圖9-7是一個多繼承結(jié)構(gòu)的例子。第三十五頁,共一百零七頁,2022年,8月28日圖9-7第三十六頁,共一百零七頁,2022年,8月28日例如,一般類“多邊形”定義的“邊數(shù)”、“邊長”、“頂點數(shù)據(jù)”屬性和“繪圖”服務(wù),將被它的兩個特殊類繼承。但希望有如下的多態(tài)性:第三十七頁,共一百零七頁,2022年,8月28日

(1)“多邊形”類。邊數(shù):指出該多邊形的邊數(shù)。邊長:指出該圖形四個邊的長度。頂點數(shù)據(jù):由每個頂點的坐標構(gòu)成的數(shù)組。繪圖;用直線連接每兩個相鄰的頂點。第三十八頁,共一百零七頁,2022年,8月28日

(2)“正方形”類。邊數(shù):取消該屬性。邊長:指出該正方形邊的長度。頂點數(shù)據(jù):由每個頂點的坐標構(gòu)成的數(shù)組。繪圖:用直線連接每兩個相鄰的頂點。第三十九頁,共一百零七頁,2022年,8月28日

(3)“長方形”類。邊數(shù):取消該屬性。邊長:指出長方形的長和寬。頂點數(shù)據(jù):由每個頂點的坐標構(gòu)成的數(shù)組。繪圖:用直線連接每兩個相鄰的頂點。第四十頁,共一百零七頁,2022年,8月28日符合上述例子要求的多態(tài)性表達如圖9-8所示。圖9-8第四十一頁,共一百零七頁,2022年,8月28日兩個容易混淆的概念:

(1)重命名(rename)和重載(overload)(2)多繼承(multipleinheritance)和多態(tài)性(polymorphism)第四十二頁,共一百零七頁,2022年,8月28日9.2.6一般-特殊結(jié)構(gòu)的簡化如果不加節(jié)制地建立一般-特殊結(jié)構(gòu),也會帶來一些不利的影響,表現(xiàn)為兩種現(xiàn)象:(1)建立過深的繼承層次,增加了系統(tǒng)的理解難度和處理開銷。(2)從一般類劃分出太多的特殊類,使系統(tǒng)中類的設(shè)置太多,增加了系統(tǒng)的復(fù)雜性。第四十三頁,共一百零七頁,2022年,8月28日重點檢查以下幾種情況:(1)某些特殊類之間的差別可以由一般類的某個屬性值來體現(xiàn),而且除此之外沒有更多的不同。(2)特殊類沒有自己的特殊的屬性與服務(wù)。(3)一個一般類之下只有其他的特殊類,并且這個一般類沒有可創(chuàng)建的對象實例。

第四十四頁,共一百零七頁,2022年,8月28日系統(tǒng)中的一般類應(yīng)符合下述條件之一才有存在的價值,如果不符合下述任何條件,則應(yīng)考慮簡化:(1)需要用它創(chuàng)建對象實例。(2)它有兩個或兩個以上的特殊類。(3)它的存在有助于軟件復(fù)用。第四十五頁,共一百零七頁,2022年,8月28日9.2.7調(diào)整對象層和特征層

為了用一般-特殊結(jié)構(gòu)連接符連接結(jié)構(gòu)中的每個類,并達到整齊且美觀的效果,對類的位置也要作必要的調(diào)整。在OOA工具的支持下,上述修改與調(diào)整都是很容易的。第四十六頁,共一百零七頁,2022年,8月28日9.3實例連接

本節(jié)討論對象之間的另一種關(guān)系–––實例連接。首先介紹實例連接的基本概念、用途及表示法,然后討論幾種復(fù)雜的情況。第四十七頁,共一百零七頁,2022年,8月28日9.3.1簡單的實例連接

實例連接是對象實例之間的一種二元關(guān)系,在實現(xiàn)之后的關(guān)系中它將落實到每一對具有這種關(guān)系的對象實例之間,但是在OOA中沒有必要作如此具體的表示,只需在具有這種實例連接關(guān)系的對象類之間統(tǒng)一地給出這種關(guān)系的定義。第四十八頁,共一百零七頁,2022年,8月28日表示法。兩類對象之間不帶屬性的實例連接,其表示法如圖9-9(a)所示。圖9-9(b)概括了因兩端的多重性不同而形成的三種情況:一對一的連接、一對多的連接和多對多的連接。第四十九頁,共一百零七頁,2022年,8月28日圖9-9第五十頁,共一百零七頁,2022年,8月28日實現(xiàn)方式。實例連接一般可用對象指針來實現(xiàn)。即在被連接的兩個類中選擇其中一個,在它的對象中設(shè)立一個指針類型的屬性,用于指向另一個類中與它有連接關(guān)系的對象實例。第五十一頁,共一百零七頁,2022年,8月28日實例連接與整體-部分結(jié)構(gòu)的異同:(1)實例連接中的對象之間沒有這種語義,即分不出誰是整體、誰是部分;整體-部分結(jié)構(gòu)中的對象在實現(xiàn)世界中含有明顯的“has-a”語義。

第五十二頁,共一百零七頁,2022年,8月28日(2)在實現(xiàn)上,實例連接絕不能用緊密的整體-部分結(jié)構(gòu)所用的嵌套對象來實現(xiàn),但它和松散的整體-部分結(jié)構(gòu)實現(xiàn)方法是有一定相似之處的。第五十三頁,共一百零七頁,2022年,8月28日9.3.2復(fù)雜的實例連接及其表示采用復(fù)雜的實例連接概念。一個關(guān)聯(lián)可能要記錄一些信息,可以引入一個關(guān)聯(lián)類來記錄。關(guān)聯(lián)類通過一根虛線與關(guān)聯(lián)連接,其表示法如圖9-10所示。第五十四頁,共一百零七頁,2022年,8月28日圖9-10第五十五頁,共一百零七頁,2022年,8月28日對于只帶有屬性,而不帶操作的實例連接可供考慮的實現(xiàn)方式有以下幾種:

第五十六頁,共一百零七頁,2022年,8月28日(1)在實例連接一端的對象中設(shè)立一組屬性,其中一個屬性是指向?qū)嵗B接另一端對象的指針;其余的屬性是在關(guān)聯(lián)中列出的連接屬性。

(2)根據(jù)關(guān)聯(lián)定義一個結(jié)構(gòu)數(shù)據(jù)類型,其中兩個域變量是分別指向兩端對象的指針,其余域變量是連接屬性。第五十七頁,共一百零七頁,2022年,8月28日(3)根據(jù)關(guān)聯(lián)定義一個結(jié)構(gòu)數(shù)據(jù)類型,其中一個域變量是指向一端對象的指針,其余域變量是連接屬性。

(4)把關(guān)聯(lián)用一個類來實現(xiàn),用這個類的對象代表兩端對象之間一個具體的實例連接。

第五十八頁,共一百零七頁,2022年,8月28日用對象表示實例連接的復(fù)雜性。若兩類對象之間的聯(lián)系帶有某些復(fù)雜的信息,這說明它們之間存在著某種事物(可能是抽象事物)。如圖9-11所示。

第五十九頁,共一百零七頁,2022年,8月28日圖9-11第六十頁,共一百零七頁,2022年,8月28日9.3.3三元關(guān)聯(lián)問題

J.Rumbaugh等在OMT中注意到三類對象之間的聯(lián)系問題,并稱之為三元關(guān)聯(lián)(ternaryassociation)。于是他們使用了一種表示三元關(guān)系的表示符號,如圖9-12所示。第六十一頁,共一百零七頁,2022年,8月28日圖9-12第六十二頁,共一百零七頁,2022年,8月28日9.3.4如何建立實例連接

認識對象之間的靜態(tài)聯(lián)系認識實例連接的屬性與操作分析實例連接的多重性第六十三頁,共一百零七頁,2022年,8月28日異常情況處理(1)多對多實例連接的處理(2)多元關(guān)聯(lián)的處理命名與定位

第六十四頁,共一百零七頁,2022年,8月28日9.3.5對象層、特征層的增補及實例連接說明

在建立實例連接的過程中可能增加一些新的對象類。要把這些新增的類補充到類圖的對象層中,并建立它們的類描述模板。第六十五頁,共一百零七頁,2022年,8月28日對于每一個實例連接,應(yīng)該在它某一端所連接的對象類中增加相應(yīng)的屬性,它的類型應(yīng)該被說明為指向另一端對象的指針。第六十六頁,共一百零七頁,2022年,8月28日9.4消息連接

本節(jié)介紹如何分析和認識對象之間在行為上的依賴關(guān)系,并通過消息連接來表示這種關(guān)系,從而使OOA模型最終成為一個有機的整體。第六十七頁,共一百零七頁,2022年,8月28日9.4.1消息的定義

消息的定義是:消息是面向?qū)ο蟀l(fā)出的服務(wù)請求。消息連接描述對象之間的動態(tài)聯(lián)系,即:若一個對象在執(zhí)行自己的服務(wù)時,需要請求另一個對象為它完成某個服務(wù)。第六十八頁,共一百零七頁,2022年,8月28日9.4.2順序系統(tǒng)中的消息

順序系統(tǒng)中的一切操作都是順序執(zhí)行的。它的OOA模型只有一個主動對象(并且這個主動對象中只有一個主動服務(wù)),其余的對象都是被動對象。實現(xiàn)之后的系統(tǒng)在運行時,將只對應(yīng)一個處理機調(diào)度單位。如圖9-13所示。

第六十九頁,共一百零七頁,2022年,8月28日圖9-13第七十頁,共一百零七頁,2022年,8月28日順序系統(tǒng)中,對象之間的消息具有下述特點:(1)每個消息都是向?qū)ο蟀l(fā)出的一個服務(wù)請求,它必定引起接收者一個服務(wù)的執(zhí)行。(2)每個消息的發(fā)送與接收都是同時進行的,即消息都是同步的。(3)除了主動對象其他的主動服務(wù)之外,其他對象服務(wù)只有在接收到消息時才開始執(zhí)行。(4)消息是從正在執(zhí)行的服務(wù)中發(fā)出的。

第七十一頁,共一百零七頁,2022年,8月28日在語法上,一個消息的描述應(yīng)包括以下內(nèi)容:(1)消息名,即接收消息的服務(wù)名。(2)接收消息的服務(wù)要求的輸入?yún)?shù),即入口參數(shù)。(3)接收消息的服務(wù)提供的輸出參數(shù),即返回參數(shù)。第七十二頁,共一百零七頁,2022年,8月28日在語義上,一個消息應(yīng)包括下述信息:(1)發(fā)送者,這是通過消息發(fā)送點的位置隱含表明的。(2)接收者,是由消息名表達的。(3)其他需傳送的信息,通過入口參數(shù)和返回參數(shù)表示。第七十三頁,共一百零七頁,2022年,8月28日9.4.3并發(fā)系統(tǒng)中的消息

并發(fā)系統(tǒng)是有多個任務(wù)并發(fā)執(zhí)行的系統(tǒng)。它的OOA模型含有多個主動對象和若干被動對象。圖9-14是一個并發(fā)系統(tǒng)的例子。第七十四頁,共一百零七頁,2022年,8月28日圖9-14第七十五頁,共一百零七頁,2022年,8月28日消息的多種用途(1)向接收者發(fā)出一個服務(wù)請求。(2)向接收者提交一些數(shù)據(jù)。(3)向接收者發(fā)布一個通知或事件信息。(4)向接收者傳遞一個同步控制信號。第七十六頁,共一百零七頁,2022年,8月28日消息的同步與異步(1)同步消息:僅當(dāng)發(fā)送者要發(fā)送一個消息而且接收者已做好接收這個消息的準備時才能傳送的消息稱為同步消息。(2)異步消息:發(fā)送者不管接收者是否做好接收準備都可以發(fā)送的消息稱為異步消息。第七十七頁,共一百零七頁,2022年,8月28日發(fā)送者對消息處理結(jié)果的不同期待方式:(1)發(fā)送者在發(fā)出消息之后等待,直到得到處理結(jié)果才繼續(xù)原先的工作。(2)發(fā)送者不等待處理結(jié)果,發(fā)出消息之后立刻繼續(xù)執(zhí)行,只是在以后的某個執(zhí)行點或某種時機查看消息的處理結(jié)果。(3)發(fā)送消息后,發(fā)送者既不等待,也不再關(guān)心其處理結(jié)果。第七十八頁,共一百零七頁,2022年,8月28日接收者對消息的不同響應(yīng)方式:(1)在消息產(chǎn)生之前,處理這個消息的進程或線程并不存在;僅當(dāng)發(fā)送者發(fā)這個消息時才立刻創(chuàng)建一個進程或線程來響應(yīng)這個消息,完成它所要求的服務(wù)。

第七十九頁,共一百零七頁,2022年,8月28日(2)處理消息的進程或線程已經(jīng)存在,并且與發(fā)送者同步地接收消息。接到消息時立即處理。(3)某些消息所指出的接收者可能并不關(guān)心這種消息,它可能不作任何響應(yīng)。(4)接收者異地接收和處理消息,即在消息發(fā)出之后的某個時刻才接收和處理該消息。第八十頁,共一百零七頁,2022年,8月28日消息的接收者是否其他(1)消息定向地發(fā)送給其他的接收者,稱作定向消息。(2)把消息發(fā)送給某個范圍內(nèi)所有的可能的接收者,稱作廣播消息。第八十一頁,共一百零七頁,2022年,8月28日9.4.4消息對OOA的意義

在用面向?qū)ο蠓椒?gòu)造的系統(tǒng)中,消息體現(xiàn)了對象行為之間的依賴關(guān)系。它是實現(xiàn)對象之間的動態(tài)聯(lián)系,使系統(tǒng)成為一個能活動的整體,并使各個部分能夠協(xié)調(diào)工作的關(guān)鍵因素。第八十二頁,共一百零七頁,2022年,8月28日9.4.5OOA對消息的表示---消息連接

OOA對消息的考慮,應(yīng)該識別和表示的主要問題包括:(1)對象之間是否存在某種消息。(2)這種消息是同一個控制線程內(nèi)部的還是不同控制線程之間的。(3)每一種消息的發(fā)出者和接受者。(4)消息是同步的還是異步的。(5)發(fā)送者是否等待消息的處理結(jié)果。第八十三頁,共一百零七頁,2022年,8月28日確定該消息是同一個控制線程內(nèi)部的還是不同控制線程之間的很重要,因為把同一個控制線程內(nèi)部的消息和不同控制線程之間的消息用不同的連接線加以區(qū)別,可以使源于不同主動對象的每一條執(zhí)行路線都能清晰地呈現(xiàn)給閱讀者,避免互相交叉和混淆。第八十四頁,共一百零七頁,2022年,8月28日使用了兩種消息連接符號來表示對象之間的消息傳送關(guān)系,如圖9-15所示。圖9-15第八十五頁,共一百零七頁,2022年,8月28日消息連接的定義是:消息連接是OOA模型中對對象之間行為依賴關(guān)系的表示,即:若類A的對象在它的服務(wù)執(zhí)行時需要向類B的對象發(fā)送消息,則稱存在著從A到B的消息連接。第八十六頁,共一百零七頁,2022年,8月28日兩個類的對象之間可能互相發(fā)消息,使用一個雙向的消息連接符號,如圖9-16所示。圖9-16第八十七頁,共一百零七頁,2022年,8月28日9.5如何建立消息連接

本節(jié)介紹如何在OOA模型中建立消息連接,首先討論如何建立每個控制線程內(nèi)部的消息連接;其次介紹如何建立各個控制線程之間的消息連接;最后討論對象分布對消息的影響。第八十八頁,共一百零七頁,2022年,8月28日9.5.1建立控制線程內(nèi)部的消息連接

模擬當(dāng)前對象的執(zhí)行,考慮為了完成當(dāng)前的工作,需要請求其他對象提供什么服務(wù)。分析該消息的發(fā)送者與接收者在執(zhí)行時是否屬于同一個控制線程。第八十九頁,共一百零七頁,2022年,8月28日在當(dāng)前服務(wù)的詳細說明中指出由它發(fā)出的每一種消息的接收者,從當(dāng)前服務(wù)所在的類向所有接收消息的對象類畫出消息連接線。沿著控制線程內(nèi)部的每一條消息追蹤到接收該消息的對象服務(wù),重復(fù)進行以上的工作。第九十頁,共一百零七頁,2022年,8月28日9.5.2建立控制線程之間的消息連接

對每個控制線程主要考慮以下幾個問題:(1)該控制線程在執(zhí)行時,是否需要請求其他控制線程中的對象為它提供某種服務(wù)?這種請求由哪個對象發(fā)出?由哪個對象中的服務(wù)進行處理?(2)該控制線程在執(zhí)行時,是否要向其他控制線程中的對象提供或索取某些數(shù)據(jù)?第九十一頁,共一百零七頁,2022年,8月28日(3)各個控制線程的并發(fā)執(zhí)行,是否需要傳遞一些同步控制信號?

(4)它在執(zhí)行時是否將產(chǎn)生某些對其他控制線程的執(zhí)行有影響的事件?

第九十二頁,共一百零七頁,2022年,8月28日(5)一個控制線程將在何種條件下中止執(zhí)行?在它中止之后將在何種條件下由其他控制線程喚醒?用什么辦法喚醒?(6)這個消息由一個控制線程中的哪個對象服務(wù)發(fā)出?由另一個控制線程中的哪一個對象服務(wù)來處理?

第九十三頁,共一百零七頁,2022年,8月28日9.5.3對象分布問題及其消息的影響

同一臺處理機上的對象之間的消息通信既可能是一個控制線程內(nèi)部的,也可能是不同控制線程之間的。第九十四頁,共一百零七頁,2022年,8月28日在每個子處理機上分布的一組對象中,至少應(yīng)有一個對象是主動對象;所有的被動對象都是在位于本機的主動對象驅(qū)動下運行的。第九十五頁,共一百零七頁,2022年,8月28日9.6消息的詳細說明

在接收者的類描述模板中對每個服務(wù)作如下說明:(1)說明由這個服務(wù)接收和處理的每一種消息,規(guī)定消息的格式及內(nèi)容。(2)說明本服務(wù)是順序執(zhí)行的還是并發(fā)執(zhí)行的。(3)有時還要說明消息是同步的還是異步的。第九十六頁,共一百零七頁,2022年,8月28日在發(fā)送者的類描述模板中對每個發(fā)送消息的服務(wù)作如下說明:(1)指出這個服務(wù)在執(zhí)行時可能發(fā)出的每一種消息,給出接收

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論