C++中建立对象间消息连接的一种系统方法

C++中建立对象间消息连接的一种系统方法

 项飞

       用过C++进行过面向对象程序设计的用户都知道,程序中的对象很少单独存在。不考虑对象间的相互作用几乎是不可能的。所以,标识对象间的关系或建立对象间的消息连接是面向对象程序设计的一项重要任务。本文着重从C++程序设计的角度,提出一种建立对象间消息连接的实用方法。如果你想详细了解面向对象程序设计技术,请参阅有关专著。大家都知道对象是数据和方法的封装体。在C++中,它们分别表现为数据成员和成员函数。程序设计者通过执行对象的各种方法,来改变对象的状态(即改变对象的属性数据)。从而使该对象发生某些“事件”。当一对象发生某事件时,它通常需向其它相关对象发送“消息”,请求它们作出一些处理。 这时,发生事件并向其它对象请求处理的对象被称为“事件对象”,而处理事件的对象被称为“回调对象”。回调对象对事件的处理称为“回调函数”。在C++中,这一过程相当于:当事件对象发生事件时,调用回调对象的某些成员函数。通常的作法是回调对象向事件对象传递对象指针。但这种方法不通用。为了减少程序设计的工作量,本文提出一种建立对象间消息连接的系统方法。它的思路是:将“事件发生请求处理→执行处理”这一过程抽象成一个“回调”CallBack)类。通过继承,用户可以轻松获取建立对象间消息连接的机制。

  一、回调类的数据结构及其成员函数

       本文提出的CallBack类支持三种回调函数。它们是:回调对象中的成员函数,属于回调类的静态成员函数和普通的C函数。CallBackle类中包含一回调函数表callBackList。它用于记录事件名称,指向回调函数及回调对象的指针。该表的每一个节点为一个事件记录EventRecord。每个事件记录包含三个域:事件名指针eventName,指向回调对象的指针pointerToCBO,指向回调函数的指针pointerToCBFpointerToCBSF(其中,pointerToCBF指向回调对象的成员函数,pointerToCBSF指向回调类的静态成员函数或普通函数。它们同处于一共用体内)CallBack类所提供的回调机制是这样的:在事件对象上注册回调对象中的回调函数;当事件发生时,事件对象在其回调表中检索并执行回调函数。从而使二者的消息连接得以建立。(关于该类的具体实现,请参阅文后所附的程序清单)

CallBack 类的成员函数 AddCallBack 用来将回调函数注册到事件对象的回调表中。它有两个重载版本:

void CallBack::AddCallBack(char *event,CallBackFunction cbf,CallBack *p);

    void CallBack::AddCallBack(char *event,CallBackStaticFunction cbsf);

其中,第一个AddCallBack用来将某回调对象的成员函数注册到事件对象的回调表中。第二个AddCallBack用来将或某回调类的静态成员函数注册到事件对象的回调表中。在上参数表中,event是指向事件名字符串的指针,p是指向回调对象的指针,cbfcbsf分别是指向成员函数及静态成员函数(或普通函数)的指针。当回调函数来自某回调对象SomeObject时,传递成员函数指针应采用如下格式:(CallBackFunction&SomeObject::MemberFunctionName; 传递SomeObject类的某静态成员函数指针应采用格式:(CallBackStaticFunction& SomeObject::FunctionName;传递程序中普通函数指针时,只需传递函数名即可。

CallBack类的成员函数void CallBack::CallCallBack(char *ename, CallData calldata = NULL)用来调用注册在事件ename上的所有回调函数。其中,calldata为数据指针(CallData实际上就是void,详见程序清单)。事件对象可通过它向回调对象传递有用的数据。该成员函数通常在事件对象的成员函数中调用,因为通常只有事件对象的成员函数才能改变对象的内部数据,从而使某些事件发生。

成员函数RemoveCallback用来删除注册在事件对象上的回调函数。它的三个重载版本依次为:

void CallBack::RemoveCallBack(char *event,CallBackFunction cbf,CallBack *p);

    void CallBack::RemoveCallBack(char *event,CallBackStaticFunction cbsf);

    void CallBack::RemoveCallBack(char *event);

其中,event,cbf,cbsf,p等参数和成员函数AddCallBack中各参数一样。第一个RemoveCallBack用于删除注册在事件event上某回调对象的一个成员函数。第二个RemoveCallBack用于删除注册在事件event上的某普通函数或某回调类的一个静态成员函数。第三个RemoveCallBack用于删除注册在事件event上的全部回调函数。

  二、CallBack类的使用方法

使用CallBack类,可按以下步骤进行:

1.确定程序中哪些对象间存在关系,需要建立消息连接。并确定在各特定消息连接关系中,哪个对象是事件对象,哪个对象是回调对象。

2.事件对象类和回调对象类都必须从CallBack类继承,以获得回调支持。

3.为事件对象注册回调数据。包括:事件名,回调函数名,指向回调对象的指针。

4

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: C ado(ActiveX Data Objects)是一种用于连接数据库的编程技术,可以通过ADO对象来实现远程连接数据库。 远程连接数据库是指通过网络访问并操作位于其他计算机上的数据库。C ado提供了一种简单和高效的方法连接不同类型的数据库,包括Microsoft SQL Server、Oracle、MySQL等。 要实现远程连接数据库,首先需要在C程序引入相关的ADO库文件,并创建ADO连接对象连接对象可以通过指定数据库的连接字符串来传递必要的参数,如服务器地址、数据库名称、用户名和密码等。连接字符串的格式会根据使用的数据库类型而有所不同。 在连接对象创建后,可以使用其方法建立实际的连接,这样程序就可以发送SQL查询和执行其他操作了。在成功连接后,可以使用SQL语句来执行插入、删除、更新和查询等操作。 连接数据库时,需要确保远程服务器的网络设置允许连接请求,并且目标服务器上的数据库服务处于运行状态。 在完成数据库操作后,应该记得关闭连接,释放资源,这样可以避免占用过多的系统资源和连接数。 总之,使用C ado可以方便地通过网络连接和操作远程数据库。通过适当的配置和编程,可以实现安全和高效的远程数据库连接,并对数据进行操作和管理。 ### 回答2: C ado 是一种用于远程连接数据库的技术。它是基于微软的ActiveX Data Objects(ADO)库开发的,并且是一种用于访问和操作各种数据库的标准接口。通过使用C ado,我们可以实现在应用程序远程连接并操作数据库,以便进行数据的读取、插入、更新和删除等操作。 首先,我们需要在应用程序引入C ado的库文件,并且初始化相关的对象连接字符串。然后,我们可以使用C ado提供的函数和方法来创建连接对象,打开数据库连接,并执行SQL语句或存储过程等来对数据库进行操作。 在远程连接数据库时,我们需要确保数据库服务器开启远程连接功能,并且在连接字符串指定正确的数据库服务器地址、用户名和密码等信息。在连接成功后,我们就可以通过C ado提供的命令对象来执行SQL语句,例如SELECT语句用于查询数据,INSERT语句用于插入数据,UPDATE语句用于更新数据,DELETE语句用于删除数据等。 C ado还提供了一些其他的功能和特性,比如事务处理、数据类型转换、错误处理等,以便我们进行更加灵活和有效的数据库操作。同时,它还支持多种数据库类型,如SQL Server、Oracle、MySQL等,使得我们可以在不同的数据库系统无缝切换。 总的来说,通过C ado,我们可以轻松实现应用程序与远程数据库之连接和数据交互,提高数据的访问效率和操作便捷性。它是一种强大而灵活的技术,被广泛应用于各种类型的软件开发。 ### 回答3: cado是一种用于远程连接数据库的工具。它可以在计算机之建立网络连接,并通过网络连接到远程数据库服务器。通过使用cado,用户可以在本地计算机上访问和操作远程数据库的数据。 cado提供了一种简单而有效的方法连接和管理远程数据库。用户只需要提供远程数据库服务器的IP地址、用户名和密码,就可以使用cado建立连接。一旦连接建立成功,用户就可以执行各种数据库操作,例如查询、插入、更新和删除数据。 与传统的本地数据库相比,cado的远程连接功能具有许多优势。首先,它可以让用户从任何地方远程访问数据库,无论是在同一网络内还是在跨越不同地区的网络。这使得多人合作和远程工作变得更加容易和灵活。 其次,使用cado进行远程连接可以提高数据库的安全性。通过仅允许经过身份验证的用户访问数据库,远程连接可以帮助防止未经授权的访问和数据泄漏。 另外,cado还提供了许多其他的功能和工具,如数据备份和恢复、数据库管理和性能优化等。这些功能可以帮助用户更好地管理和使用远程数据库。 总而言之,cado是一种用于远程连接数据库的工具,它提供了一种方便、安全和灵活的方式来访问和操作远程数据库的数据。无论是为了多人合作、远程工作还是为了提高数据库的安全性,cado都是一个非常有用的工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iBreathe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值