网站大量收购闲置独家精品文档,联系QQ:2885784924

第02章COM对象与接口ppt课件.pptxVIP

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二章 COM对象和接口 对象与组件技术 YWZ 2006 Slide 1 l COM对象的概念与特征 l 接口的定义与标识 l 接口的内存模型 l 接口的特点 l IUknown接口 l 引用计数 l 接口查询 l 字典组件举例 主要内容 对象与组件技术 YWZ 2006 Slide 2 l COM组件 Ø 组件:可独立发布的二进制组件 Ø 在Windows平台上表现为DLL或者EXE l COM对象 Ø 通过COM接口提供服务 Ø 符合OO中对象的基本概念 l COM接口 Ø 客户与对象之间的协议,对象实现COM接口,客户使用 COM接口从而访问对象 COM基础——三个概念 对象与组件技术 YWZ 2006 Slide 3 l COM组件 Ø 组件的类型:进程内组件(DLL)、 进程外组件(EXE) Ø 为方便起见,只讨论Windows平台上DLL类型的组件 l COM对象 Ø 如何标识一个对象?对象以什么形式存在?客户如何创建 对象? Ø 对象如何暴露接口?一个或是多个? l COM接口 Ø 要求:跨编译器、跨语言、跨平台 需要思考的一些问题 对象与组件技术 YWZ 2006 Slide 4 COM对象是客户程序与组件程序进行交互的实体。 COM对象包含属性和方法(或者状态和操作): • 属性反映对象的存在,也是区别于其他对象的要素; • 方法是对象提供给外界的接口。 能够提供服务(通过COM接口) 对象的实现由组件完全包装起来 2.1 COM对象 Ø Ø Ø Ø 对象与组件技术 Slide 5 l 概念 YWZ 2006 l COM组件的位置透明性 Ø 客户程序并不直接访问COM对象,而是通过一个唯一的 全局标识符进行对象的创建和初始化工作。 Ø 可选的标识符方案: • 字符串形式:可读性好,名字冲突的可能性大 • 定长位数的整数:如何保证唯一性?(管理组织 / 大随机数) l GUID Ø 是COM规范采取的方案 Ø 是一个128位的随机数 Ø 不绝对保证唯一性,但发生冲突的可能性非常小 Ø 例如: { 54BF6567-1007-11D1-B0AA-444553540000 } 2.1.1 COM对象的标识—CLSID 对象与组件技术 YWZ 2006 Slide 6 l 保证随机性的考虑 Ø 空间上:网络中的计算机通常取网卡的地址(唯一的) Ø 时间上:同一机器在不同时候产生的标识符总不相同 l GUID的C/C++结构描述 typedef struct _GUID { DWORD WORD WORD BYTE } GUID ; Data1; Data2; Data3; Data4[8]; GUID续 对象与组件技术 YWZ 2006 Slide 7 Ø COM库提供的API函数 . HRESULT CoCreateGuid ( GUID * pguid) ; l GUID 与 CLSID Ø CLSID是标识COM对象的GUID Ø 二者在结构上完全一致 l 产生GUID的工具 Ø Visual C++提供的两个工具: . UUIDGen.exe :命令行程序 . GUIDGen.exe :基于对话框的程序 GUID (续) 对象与组件技术 YWZ 2006 Slide 8 l 层次差异 Ø COM对象建立在二进制级的基础上 Ø C++对象建立在源代码级的基础上 l 封装特性 Ø COM对象的数据完全封装在对象内部,不能直接访问 Ø C++对象的公有数据成员是可以访问的 l 可重用性 Ø COM对象的重用表现为包容和聚合 Ø C++对象的重用表现为继承与组合 l 多态性的表现形式不同 Ø COM对象的多态需要通过接口来表现 2.1.2 COM对象与C++对象的比较 对象与组件技术 YWZ 2006 Slide 9 l 基本内容 Ø 接口定义与标识 Ø 用C++定义接口 Ø IDL Ø 接口的内存模型 Ø 接口的特点 2.2 COM接口 对象与组件技术 YWZ 2006 Slide 10 l 定义 Ø 是一个函数集,以二进制的形式给出了从一方到另一方的 调用规范;函数的地址封装在一个数据结构中。 Ø 这个数据结构称为“接口函数表” Ø 在C++中称为“虚函数表”,简称vtable Ø 对于一个接口来说,它的vtable是确定的,即: 接口成员函数的个数是不变的; 其先后顺序也是不变的 v 客户程序通过一个指向vtable的指针来调用接口成员函数 2.2.2 接口定义和标识 对象与组件技术 YWZ 20

文档评论(0)

卢兴云 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档