欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    COM-接口.ppt

    • 资源ID:82766263       资源大小:185KB        全文页数:7页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    COM-接口.ppt

    第二章 接口 接口提供了两个不同对象间的一种连接,计算机程序是通过一组函数连接起来的,这组函数实际上就定义了程序不同部分的接口。在C+中,可以使用抽象基类来实现COM接口。由于一个COM组件可以支持任意数目的接口,对于这类组件,可以使用抽象基类的多重继承来实现。2.1 接口的作用接口的作用 在COM中,接口就是一切。对于客户来说,一个组件就是一个接口集合。客户只有通过接口才能和COM组件打交道。客户不必了解组件的实现细节,甚至不必知道一个组件所提供的所有的接口。2.1.1 可复用的应用程序框架可复用的应用程序框架 单个的组件并不能对整个应用程序产生决定性的影响,相反,用以连接组件的接口将对整个应用程序产生决定性的作用,只要接口不变,那么组件可以随意的替换。如果借口设计的好,可以得到可复用极高的结构。可复用结构的设计决不是一件简单的事情。它要求设计者具有预测未来的能力。2.1.2 COM接口的其他优点接口的其他优点 接口可以免受外界变化的影响。另外,接口还具有多态性。2.2 COM接口的实现接口的实现 例子程序 关键点:1.COM接口在C+中是使用纯抽象基类实现的。2.一个COM组件可以提供多个接口。3.一个C+类可以使用多继承来实现一个提供多个接口的组件。上述例子的缺陷:1.组件与客户间并没有完全通过接口进行通信。2.客户程序中使用了new和delete操作,这个操作和语言相关,因此应该避免使用,去寻求一种更好的组件生命周期控制方法。若干问题:1.类并非组件,也就是说并非一个C+类只能与一个COM组件相对应。2.接口并非总是集成来的。对接口的继承只不过是一种实现细节罢了。3.多重接口与多重继承。组件包含接口、接口包含函数。命名冲突:1.不同接口中函数的命名冲突:不是问题,因为COM是二进制标准,真正调用时使用的并不是函数名称。2.接口名冲突:需要程序员根据一定的准则对接口的命名加以规范化。2.3 接口理论接口理论2.3.1 接口的不变性接口的不变性 可能是COM接口最具特色的一个性质。一旦公布了一个接口,那么它将永远保持不变。对组件进行升级时,通常不会修改已有的接口,而是加入一些新的接口。2.3.2 多态性多态性 多态指的是可以按同一种方式处理不同的对象。多重接口使得多态的重要性更为突出,一个组件应当支持较小的接口,接口越大,接口的特定性越强,这将直接影响到该组件以及使用该组件的客户的可复用性。可复用整个应用架构的能力并不是随便就能出现的。需要精心的设计接口,以使之能够支持各种不同的实现。这不仅要求接口有较高的通用性,而且客户也应当按照一种比较通用的方式来使用该接口,以避免对接口的实现造成不必要的限制。2.4 接口的背后接口的背后(接口的二进制结构接口的二进制结构)定义一个纯抽象基类,实质上是定义一个内存块结构。interface IXvirtual void _stdcall Fx1()=0;virtual void _stdcall Fx2()=0;virtual void _stdcall Fx3()=0;virtual void _stdcall Fx4()=0;2.4.2 vtbl指针及实例数据指针及实例数据(成员变量成员变量)class CA:public IXpublic:virtual void _stdcall Fx1()coutCA:Fx1endl;virtual void _stdcall Fx2()coutm_Fx2endl;virtual void _stdcall Fx3()coutm_Fx3endl;virtual void _stdcall Fx4()coutm_Fx4endl;CA(double d):m_Fx2(d*d),m_Fx3(d*d*d),m_Fx4(d*d*d*d);double m_Fx2;double m_Fx3;double m_Fx4;虽然C+可以直接操作和使用实例数据,但COM组件决不会访问任何实例数据。在COM中,对一个组件的访问只能通过函数来完成,决不能通过变量。这是因为纯抽象基类中只能由纯虚函数,而不能有成员变量。2.4.3 多重实例多重实例int main()CA*pA1=new CA(1.5);CA*pA2=new CA(2.75);.上述两个对象共享一个vtbl。但是对于各对象将各自有不同的实例数据。这一点是对于纯粹的C+来讲的,对于COM来说,这个并不重要,也不是必须的。COM组件的每一个实例中都有一个不同的vtbl。2.4.4 不同的类,相同的不同的类,相同的vtbl 接口的真正威力在于继承此接口的所有类均可以被客户按同一方式进行处理,如下例:class CB:public IXpublic:virtual void _stdcall Fx1()coutCB:Fx1endl;virtual void _stdcall Fx2()coutCB:Fx2endl;virtual void _stdcall Fx3()coutCB:Fx3endl;virtual void _stdcall Fx4()coutCB:Fx4Fx1();pIX-Fx2();int main()CA*pA=new CA(1.5);CB*pB=new CB;IX*pIX=pA;foo(pIX);pIX=pB;foo(pIX);

    注意事项

    本文(COM-接口.ppt)为本站会员(s****8)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开