基于对象的消息传递_第1页
基于对象的消息传递_第2页
基于对象的消息传递_第3页
基于对象的消息传递_第4页
基于对象的消息传递_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、在宏观世界中,信息的传递不管是哪种形式,都是以一定的介质传递出去的,而信息流动的源驱动力是存在于宏观世界的某种对象的行为使能。但是对于信息发生是对象自身的使能。在一般意义上来说,对象的信息发生是作用于介质对象的而非某些特定的通信对象,因为在宏观的信息具有相对的广泛性,一个信息是通过介质对象作用于有效范围内的所有对象,只不过对于不同对象其意义是不尽相同或者说是无意义的。但是对于有些信息的传递来说,其本身的属性即为隐秘的通信,其内容或者规则是不为外界所知的。例如两对象间的隐私信息传递。对于信息的获取只存在被动式,主动式就是对象本身的一种行为,但是对于消息来说主动式是信息传递的一种形式变种。而被动式

2、则是外界介质传递的信息对对象造成的影响。因此在信息的定义上来说,信息是相对于实体对象来说的,信息只有在一定的范围内存在作用效力,并且信息只有通过外界介质来互相施加作用。如果用这种基于对象的思想来抽象一个消息类,我们可以消息类定义为一个广义的消息的环境,对于一个复杂的环境来说,也许存在多个消息域,但是为了简化设计,我们假定只存在一个消息域,也就是说,消息类的实体对象只有一个。我们分析一下现实中的一个消息域可以归纳一个消息环境存在以下几个对象:1. 消息对象 这个对象维护着一个消息列表。(一般来说一个消息的存在期是有限的,但是有的消息也会长期存在)2. 对象列表 这个对象维护着一个环境中存在的对象

3、列表。(在现实世界中一个对象的消息对环境具有依附性,也是这种依附性产生了环境中对象的列表。)3. 消息介质 这个对象主管消息的分发。对于一个环境中的对象来说,它想传递一个消息是要作用于消息环境对象的,我们可以用下面的表来说明:接口1 接口2对象1 消息环境 对象2首先来说接口1是外界消息环境的对外接口,这个接口主要的作用是:消息传递的接口,接口2是一个对所有对象可见的的接口,并且这个接口的内则是为其它对象所知的,所以这个接口虽然存在于某个对象内部,但并不是为对象本身定义,而是一个即成的事实。就像一个聋子无法通过耳朵这个接口获取声音信息,我这里将这个接口抽象成一个,而这个消息有具体不同的类型则是

4、内部的工作。同时,消息环境对象还有另一个接口,它是对象进入环境对环境的影响,根据前面所说,这个影响主要是更新了对象列表。所以我们可以对这个抽象出的消息类下一个比较具体的定义:#信息对象#对象列表对象 #代表隐藏属性传递 对象接口 更新接口也就是要定义这个类,我们首先要存在信息类(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、(;整体的信息环境信息的定义是:class getmessage/对象通信接口 为实体对象拥有Private:Int G_b;/对象信息接口标识符Public:Int Get_message(int m/获取消息(被动式)Return m;;Struct messages/消息列表Messages *next;Int msg;Int spot;Class message/消息类Private: Messages *M_p;/消息队列当前指针Messages M_H;/消息队列头Int handmsg(Messages *M_p;/分发消息Public:Message(/消息可以自定义 不一定为

6、int spot代表信息标识 比如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;/这个接口可以看作一个事先规定好的准则Int G_b;/对象信息接口标识符;Class Obj_list/对象成员类Private:Msg_members m_mH;/消息成员

7、列表头Msg_members *m_mP;/当前成员指针Public:Obj_list(m_mpP=&m_mH;M_mP->G_b=0;/标识符为0代表空对象Int addlist(Getmessage *p;/添加对象-主要是添加msg_members链表以及返回标识符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、的框架 具体的接口函数不再给出,这里再说明的一个是getmessage类,这个类是对象的接口类,它也可以看作某类和信息环境类之间的第三方类,它为各种类提供了一个标准的接口。一个是信息环境类中函数的调用关系是 :creat_message(int message,int msg_spot主要调用消息类的Addmessage(实现update_obj(主要调用对象列表类的addlist(Getmessage *p实现消息类里的handmsg(Messages *M_p函数是一个完全内部的操作 定义为private另外一个说明的是具体的对象通信的问题一个对象要想和其它对象通信必须要包含以下条件:1.这个对象必须包含一个getmessage类2.这个对象必须执行i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论