- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
- 走进心理学与心理健康课件.pptx
- 骨盆及髋关节X片的划线课件.pptx
- 第一节微分中值定理ppt课件.pptx
- 道德与法治《我是班级值日生》优选ppt课件部编版.pptx
- 四年级上册信息技术7制作个人小名片粤教版课件.pptx
- 青少年心理健康知识-主题班会ppt课件.pptx
- 不得不提的“壮胆方”-温胆汤课件.pptx
- 下肢静脉曲张护理查房ppt文档课件.pptx
- 初一地理地球和地球仪课件.pptx
- 大气抽象商务企业通用PPT模板课件.pptx
- 吉安县公开招聘专职文明实践员笔试备考试题及答案解析.docx
- 2025重庆枫叶国际学校招聘教师笔试备考试题及答案解析.docx
- 游机队电玩自制联网教程-tplink.pdf
- 2025重庆新华出版集团招聘1人笔试模拟试题及答案解析.docx
- 2025宜宾高新丽雅城市产业发展有限公司公开招聘笔试模拟试题及答案解析.docx
- 2025云南保山市龙陵县勐糯镇人民政府招聘合同制专职消防员1人笔试模拟试题及答案解析.docx
- 11.1生活中常见的盐 九年级化学人教版下册.pptx
- 6.1法律保护下的婚姻 高二政治《法律与生活》课件(统编版选择性必修2)(新版).pptx
- 文昌市中小学教师校园招聘29人笔试模拟试题及答案解析.docx
- 10.1.5 常见的酸和碱(第5课时)课件-九年级化学人教版下册.pptx
最近下载
- 五年级上册数学试题-期末测试卷人教版(含答案).docx VIP
- 某智慧交通与智慧城管PPP项目建设项目智慧城市下阶段发展建议书.doc VIP
- 智慧城市建设(智慧交通与智慧城管)PPP项目-技术标书.docx VIP
- 湖北省“腾云”联盟2024-2025学年高三上学期8月联考物理试卷含答案.pdf
- 广州数控GSK980TDc车床CNC数控系统使用手册.pdf
- 高中高考数学所有二级结论《完整版》.docx VIP
- 湖北省腾云联盟2024-2025学年高三上学期12月联考物理试卷含答案.docx VIP
- 药液外渗的应急预案及处理PPT.pptx VIP
- 智能交通系统标准体系结构.doc VIP
- 平安产险内蒙古自治区商业性奶牛养殖保险条款.docx VIP
文档评论(0)