基于對象的消息傳遞_第1頁
基于對象的消息傳遞_第2頁
基于對象的消息傳遞_第3頁
基于對象的消息傳遞_第4頁
基于對象的消息傳遞_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、在宏觀世界中,信息的傳遞不管是哪種形式,都是以一定的介質(zhì)傳遞出去的,而信息流動的源驅(qū)動力是存在于宏觀世界的某種對象的行為使能。但是對于信息發(fā)生是對象自身的使能。在一般意義上來說,對象的信息發(fā)生是作用于介質(zhì)對象的而非某些特定的通信對象,因為在宏觀的信息具有相對的廣泛性,一個信息是通過介質(zhì)對象作用于有效范圍內(nèi)的所有對象,只不過對于不同對象其意義是不盡相同或者說是無意義的。但是對于有些信息的傳遞來說,其本身的屬性即為隱秘的通信,其內(nèi)容或者規(guī)則是不為外界所知的。例如兩對象間的隱私信息傳遞。對于信息的獲取只存在被動式,主動式就是對象本身的一種行為,但是對于消息來說主動式是信息傳遞的一種形式變種。而被動式

2、則是外界介質(zhì)傳遞的信息對對象造成的影響。因此在信息的定義上來說,信息是相對于實體對象來說的,信息只有在一定的范圍內(nèi)存在作用效力,并且信息只有通過外界介質(zhì)來互相施加作用。如果用這種基于對象的思想來抽象一個消息類,我們可以消息類定義為一個廣義的消息的環(huán)境,對于一個復(fù)雜的環(huán)境來說,也許存在多個消息域,但是為了簡化設(shè)計,我們假定只存在一個消息域,也就是說,消息類的實體對象只有一個。我們分析一下現(xiàn)實中的一個消息域可以歸納一個消息環(huán)境存在以下幾個對象:1. 消息對象 這個對象維護著一個消息列表。(一般來說一個消息的存在期是有限的,但是有的消息也會長期存在)2. 對象列表 這個對象維護著一個環(huán)境中存在的對象

3、列表。(在現(xiàn)實世界中一個對象的消息對環(huán)境具有依附性,也是這種依附性產(chǎn)生了環(huán)境中對象的列表。)3. 消息介質(zhì) 這個對象主管消息的分發(fā)。對于一個環(huán)境中的對象來說,它想傳遞一個消息是要作用于消息環(huán)境對象的,我們可以用下面的表來說明:接口1 接口2對象1 消息環(huán)境 對象2首先來說接口1是外界消息環(huán)境的對外接口,這個接口主要的作用是:消息傳遞的接口,接口2是一個對所有對象可見的的接口,并且這個接口的內(nèi)則是為其它對象所知的,所以這個接口雖然存在于某個對象內(nèi)部,但并不是為對象本身定義,而是一個即成的事實。就像一個聾子無法通過耳朵這個接口獲取聲音信息,我這里將這個接口抽象成一個,而這個消息有具體不同的類型則是

4、內(nèi)部的工作。同時,消息環(huán)境對象還有另一個接口,它是對象進入環(huán)境對環(huán)境的影響,根據(jù)前面所說,這個影響主要是更新了對象列表。所以我們可以對這個抽象出的消息類下一個比較具體的定義:#信息對象#對象列表對象 #代表隱藏屬性傳遞 對象接口 更新接口也就是要定義這個類,我們首先要存在信息類(message)對象列表類(obi_list)在c+中我們可以這樣定義這個類Class info_envPrivate:Message msg;Obj_list list;Public:Info_env(;Int creat_message(int message,int msg_spot;Int update_obj

5、(;整體的信息環(huán)境信息的定義是:class getmessage/對象通信接口 為實體對象擁有Private:Int G_b;/對象信息接口標(biāo)識符Public:Int Get_message(int m/獲取消息(被動式)Return m;;Struct messages/消息列表Messages *next;Int msg;Int spot;Class message/消息類Private: Messages *M_p;/消息隊列當(dāng)前指針Messages M_H;/消息隊列頭Int handmsg(Messages *M_p;/分發(fā)消息Public:Message(/消息可以自定義 不一定為

6、int spot代表信息標(biāo)識 比如0為無意義信 /息 1為全播信息 2為組播信息 3為單播信息M_H.msg=0;M_H.spot=0;M_P=&M_H;Int addmessage(int message,int msg_spot;Int delmsg(Messages *M_p;Struct msg_members/消息成員列表,由對象成員對象管理Msg_member *next;Getmessage *p;/這個接口可以看作一個事先規(guī)定好的準(zhǔn)則Int G_b;/對象信息接口標(biāo)識符;Class Obj_list/對象成員類Private:Msg_members m_mH;/消息成員

7、列表頭Msg_members *m_mP;/當(dāng)前成員指針Public:Obj_list(m_mpP=&m_mH;M_mP->G_b=0;/標(biāo)識符為0代表空對象Int addlist(Getmessage *p;/添加對象-主要是添加msg_members鏈表以及返回標(biāo)識符Int dellist(int G_b;/刪除對象 ;Class info_envPrivate:Message msg;Obj_list list;Public:Info_env(;Int creat_message(int message,int msg_spot;Int update_obj(;這是一個大概

8、的框架 具體的接口函數(shù)不再給出,這里再說明的一個是getmessage類,這個類是對象的接口類,它也可以看作某類和信息環(huán)境類之間的第三方類,它為各種類提供了一個標(biāo)準(zhǔn)的接口。一個是信息環(huán)境類中函數(shù)的調(diào)用關(guān)系是 :creat_message(int message,int msg_spot主要調(diào)用消息類的Addmessage(實現(xiàn)update_obj(主要調(diào)用對象列表類的addlist(Getmessage *p實現(xiàn)消息類里的handmsg(Messages *M_p函數(shù)是一個完全內(nèi)部的操作 定義為private另外一個說明的是具體的對象通信的問題一個對象要想和其它對象通信必須要包含以下條件:1.這個對象必須包含一個getmessage類2.這個對象必須執(zhí)行i

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論