高级软件工程(vc与com、corba与com比较.ppt
《高级软件工程(vc与com、corba与com比较.ppt》由会员分享,可在线阅读,更多相关《高级软件工程(vc与com、corba与com比较.ppt(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、高级软件工程(高级软件工程(VC与与COM、CORBA与与COM比较)比较)直接利用直接利用 C+语言开发语言开发 COM 程序程序需要处理许多重复性工作需要处理许多重复性工作例如例如 IUnknown 接口的实现接口的实现类厂的实现类厂的实现DLL程序入口函数程序入口函数 等等建立一套标准的类库非常有意义建立一套标准的类库非常有意义VC+提供了两套这样的类库:提供了两套这样的类库:MFC库库ATL库库(1)类库的作用)类库的作用COM与类库与类库2(2)MFC基本思路:基本思路:采用内嵌接口类成员的方式实现多接口采用内嵌接口类成员的方式实现多接口COM对象对象 未采用多重继承方式未采用多重继
2、承方式实现方式:实现方式:CCmdTarget提供提供COM对象实现的所有支持对象实现的所有支持利用接口映射表实现任意多个接口利用接口映射表实现任意多个接口COleObjectFactory实现通用类厂实现通用类厂COM与类库与类库3#define DECLARE_INTERFACE_MAP()private:static const AFX_INTERFACEMAP_ENTRY _interfaceEntries;protected:static AFX_DATA const AFX_INTERFACEMAP interfaceMap;static const AFX_INTERFACEMA
3、P*PASCAL _GetBaseInterfaceMap();virtual const AFX_INTERFACEMAP*GetInterfaceMap()const;CCmdTarget定义的接口映射表(定义的接口映射表(afxwin.h)COM与类库与类库4struct AFX_INTERFACEMAP_ENTRYconst void*piid;/the interface id(IID)(NULL for aggregate)size_t nOffset;/offset of the interface vtable from m_unknown;struct AFX_INTERFA
4、CEMAPconst AFX_INTERFACEMAP*(PASCAL*pfnGetBaseMap)();/NULL is root classconst AFX_INTERFACEMAP_ENTRY*pEntry;/map for this class;宏定义中用到的数据结构(宏定义中用到的数据结构(afxwin.h)COM与类库与类库5#define BEGIN_INTERFACE_MAP(theClass,theBase)const AFX_INTERFACEMAP*PASCAL theClass:_GetBaseInterfaceMap()return&theBase:interfac
5、eMap;const AFX_INTERFACEMAP*theClass:GetInterfaceMap()const return&theClass:interfaceMap;AFX_COMDAT const AFX_DATADEF AFX_INTERFACEMAP theClass:interfaceMap=&theClass:_GetBaseInterfaceMap,&theClass:_interfaceEntries0,;AFX_COMDAT const AFX_DATADEF AFX_INTERFACEMAP_ENTRY theClass:_interfaceEntries=#de
6、fine INTERFACE_PART(theClass,iid,localClass)&iid,offsetof(theClass,m_x#localClass),#define END_INTERFACE_MAP()NULL,(size_t)-1 ;接口映射表的进一步定义(接口映射表的进一步定义(afxdisp.h)COM与类库与类库6BEGIN_INTERFACE_MAP(COMPONENT,CCmdTarget)INTERFACE_PART(COMPONENT,IID_IX,IX)INTERFACE_PART(COMPONENT,IID_IY,IY)END_INTERFACE_MAP(
7、)接口映射表的使用方法:接口映射表的使用方法:COM与类库与类库7COleObjectFactory实现通用类厂实现通用类厂COleObjectFactory是一个通用的类厂是一个通用的类厂从从CCmdTarget派生派生并实现了并实现了IClassFactory2接口接口定义内嵌的类厂对象:定义内嵌的类厂对象:#define DECLARE_OLECREATE(class_name)public:static AFX_DATA COleObjectFactory factory;static AFX_DATA const GUID guid;利用利用COM对象提供对象提供CLSID和运行时刻
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 软件工程 vc com corba 比较
限制150内