调用构件对象功能的智能指针的封装方法技术

技术编号:2870717 阅读:164 留言:0更新日期:2012-04-11 18:40
一种构件端接口智能指针的实现方法,其特征在于:    用一个类实现第一种类型接口智能指针,该第一种类型接口智能指针只做为构件对象的调用方向该构件对象的被调用方接口功能传递参数时,不进行引用计数的增加或者减少;    用一个类实现第二种类型接口智能指针,该第二种类型接口智能指针用于构造、析构和赋值被调用方的构件对象接口功能时,还增加或者减少引用计数;    该第一、二种类型接口智能指针均用于创建构件对象。(*该技术在2022年保护过期,可自由使用*)

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及一种,特别是指一种用于在创建构件对象时,用于传递调用方参数或调用构件对象接口功能的智能指针的封装方法,属于计算机

技术介绍
80年代以来,软件编程技术有了很大的发展,其发展可以大致分为以下几个阶段面向对象编程,即通过对软件模块的封装,使其相对独立,从而使复杂的问题简单化。面向对象编程强调的是对象的封装,但模块(对象)之间的关系在编译的时候已被固定,模块之间的关系是静态的,这种关系在程序运行时不能改变;也就是说在运行时不能换用模块中更小的功能单元。面向构件编程,即为了使不同软件开发商提供的构件模块(软件对象)可以相互操作使用,构件之间的连接和调用通过标准的协议来实现。构件化编程模型强调协议标准,需要提供各厂商都能遵守的协议体系。就像公制螺丝的标准一样,所有符合标准的螺丝和螺母都可以相互装配。构件化编程模型建立在面向对象技术的基础之上,是完全面向对象的,提供了动态构造部件模块(在运行中可以构造部件)的机制。构件在运行时可以动态装入,是可以更换的。但是,现有的面向构件编程技术要求用户自行定义构件的非自描述接口,使得用户程序的开发依然繁复。智能指针用于封装指针功能。现有的一些智能指针类用于封装组件对象模型(The Component Object Model,简称COM)接口指针,这些这些智能指针自动进行查询接口,和处理增、减引用计数构造或析构构件对象,并可以调用构件对象接口的功能。例如以C++程序设计语言为例在COM编程中,如果一个对象CObject实现了接口IA、接口IB和接口IC;接口IA中包括功能FA,接口IB中包括功能FB,接口IC中包括有功能FC。这样,如果用户要调用功能FA、FB、FC时,需要写出下面的C++代码才能调用到功能FA、FB和FC,(假定用户已经获得接口IA的接口指针pIA)...... pIA→FA(...);IB*pIB;IC*pIC;pIA→QueryInterface(IID_IB,&pIB);pIA→QueryInterface(IID_IC,&pIC);pIB→FB(...);pIC→FC(...);pIB→Release();pIC→Release();...... 为了简单,上述的C++代码没有考虑功能调用失败的情况。即使如此,上述的调用需要用户编写九行程序,这给编程带来了一定的复杂度。
技术实现思路
本专利技术的主要目的在于提供一种构件端接口智能指针的实现方法,用于构件的调用方通过接口智能指针访问该接口所定义的功能,并实现智能管理引用计数和创建构件对象。本专利技术的另一目的在于提供一种直接访问构件接口的智能指针的封装方法,通过类智能指针调用构件对象实现的所有接口功能,降低编程的复杂度。本专利技术的又一目的在于提供一种基于类别的智能指针的封装方法,类别智能指针类中的成员变量,与具有相同特性的构件所组成的构件类中的所有接口相对应,用于调用构件类对象实现的所有接口功能,降低编程的复杂度。本专利技术的目的是这样实现的一种构件端接口智能指针的实现方法用一个类实现第一种类型接口智能指针,该第一种类型接口智能指针只做为构件对象的调用方向该构件对象的被调用方接口功能传递参数时,不进行引用计数的增加或者减少;用一个类实现第二种类型接口智能指针,该第二种类型接口智能指针用于构造、析构和赋值被调用方的构件对象接口功能时,还增加或者减少引用计数;该第一、二种类型接口智能指针均用于创建构件对象。当构造一接口智能指针对象时,且当一个非空的接口指针从一个内存位置拷贝到另一个内存位置时,增加一个引用计数。当析构一接口智能指针对象,或当两个智能指针对象之间进行赋值时,对于已经包含非空接口指针的内存位置,在重写该内存位置之前,先减少一个引用计数。一种直接访问构件对象所有功能的智能指针的封装方法,类智能指针设有与构件对象实现的接口相对应的成员变量,该成员变量用于调用构件对象实现的接口功能。该成员变量至少为一个,且该成员变量的数量与构件对象实现的接口个数相等。类智能指针实现方式具体为类智能指针通过继承接口智能指针实现。所述的类智能指针实现方式具体为类智能指针直接在该类中设置与构件对象实现接口一一对应的成员变量,类智能指针直接在该类中定义,并实现该构件对象实现的所有接口功能。一种基于类别的智能指针的封装方法,类别智能指针包括与类别中所有接口相对应的成员变量,该成员变量用于调用继承了该类别的构件对象实现的该类别所有的接口功能。所述的类别智能指针具有一个或以上的成员变量,该成员变量的数量与构件类中的构件对象实现的接口个数相等;该类别智能指针用于创建构件对象。所述的类别智能指针实现方式具体为类别智能指针通过继承接口智能指针实现。所述的类别智能指针实现方式具体为类别智能指针包括与类别中所有接口相对应的成员变量,该成员变量用于调用继承了该类别的构件对象实现的该类别所有的接口功能。本专利技术用于构件的调用方通过接口智能指针访问该接口所定义的功能,实现了智能管理引用计数;通过类智能指针调用构件对象实现的所有接口功能,降低了编程的复杂度;类别智能指针类中的成员变量与具有相同特性构件所组成的构件类的所有接口相对应,同时方便了对构件对象根据需要进行灵活的配置。附图说明图1为本专利技术接口智能指针中成员变量与构件对象实现的接口之间的关系示意图;图2为本专利技术接口智能指针通过成员变量调用构件对象实现对应功能的示意图;图3为本专利技术不同类型接口智能指针相互之间继承关系的示意图; 图4为本专利技术类智能指针继承接口智能指针的继承关系示意图;图5为本专利技术类智能指针中的各成员变量与构件对象实现的各接口之间的关系示意图。具体实施例方式以下结合附图和具体的实施例对本专利技术作进一步的详细说明在基于构件对象的平台中,用户可通过接口智能指针来访问该这个接口所定义的方法,因此,接口智能指针是对接口的封装。本专利技术对接口智能指针的实现以C++程序设计语言为例,具体如下将接口智能指针定义为类,这个类中只设有一个成员变量,该成员变量就是实际的指向对象接口的接口指针。参见图1和图2,其中接口智能指针IARef与接口IA对应。接口智能指针类实现该接口的所有方法这些接口方法都通过成员变量调用构件对象实现的方法来实现。本实施例中,当一个接口智能指针对象被构造时,当一个非空的接口指针从一个内存位置拷贝到另一个内存位置时,则应调用引用增加(AddRef)功能,以便通知对象又有附加的引用发生了;当一个接口智能指针对象被析构或两个智能指针对象进行赋值时,则对于已经包含非空接口指针的内存位置来说,在重写该内存位置之前,必须先调用释放(Release)功能,以便通知构件对象“该引用已经被销毁”;当接口智能指针做为入口(“”)接口参数时,则上述两种情况下的AddRef功能和Release功能的调用可以被优化掉。具体而言,在本实施例中实现了两种类型的智能指针,其一只能做为参数使用,而另外一种则继承前一种智能指针,对于构造,析构和赋值操作则进行相应的增加和减少引用计数。以C++程序设计语言为例,如果接口智能指针IXXXRefArg实现为接口参数,而作为接口智能指针IXXXRefArg的继承,接口智能指针IXXXRef中的构造、析构和赋值则进行相应本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】

【专利技术属性】
技术研发人员:陈榕叶忠强梁宇洲
申请(专利权)人:上海科泰世纪科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1