- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅谈组件对象模型可重用性在高职软件技术专业课中的教学方法
【摘要】组件对象模型(COM)的可重用性是任何对象模型的实现目标,尤其是对于大型的软件系统,可重用性是非常重要的。但是,对于高职软件技术专业的学生来说,组件对象模型的可重用性与面向对象编程语言中的重用性在实现过程不同,较难掌握。本文用学生对象这个例子阐述了在《组件开发技术》课程中组件对象模型(COM)的可重用性的教学方法,这些方法在日常授课中取得了较好的效果。
【关键词】组件对象模型;COM;组件开发技术;可重用性
中国分类号:TP311.1 文献标识码:A
1、引言
在软件行业蓬勃发展的今天,不同软件之间相互利用是一个常见的事情[1]。软件之间或软件内部的相互利用常常会涉及到组件的重用。组件对象模型(COM)的最秒之处是很容易对某些代码实现一次编写和多处应用[2]。重用性是指当一个程序单元能够对其他的程序单元提供功能服务时,尽可能地重用原先程序单元的代码。组件对象模型的可重用性是指一个组件对象如何重用已有的组件对象的功能,而不是重复实现老的功能服务[3]。组件对象模型的可重用性是任何对象模型的实现目标,尤其是对于大型的软件系统,可重用性是非常重要的。但是,对于高职软件技术专业的学生来说,组件对象模型(COM)的可重用性与面向对象编程语言中的重用性在实现过程不同,较难掌握。
像我们很熟悉的面向对象编程语言如C++,它的重用性位于源代码一级,它是通过继承来实现重用,一个类继承于另一个类,实现父类功能的重用。继承可以使已经存在的类无须修改就可以适应新应用,继承是比过程重用规模更广的重用,是已经定义的良好的类的重用[4]。但对于组件对象模型的可重用性则情形有所不同,因为组件对象模型是建立在二进制代码基础上的标准,所以其可重用性也必然建立于二进制代码一级。按照组件对象模型的标准,实现这种可重用性有两条途径:包容或者聚合,这是组件对象模型两种重用模型[3]。
包容和聚合的重用思路基本一致,只是在实现方法上有所不同。包容是外部组件的接口直接包含内部组件接口的指针,它将使用内部组件的接口来实现它自己的接口。聚合就是直接将内部组件的接口直接暴露给客户,而客户并不知道这是内部组件的接口,始终认为这是外部组件的接口,客户直接通过外部接口使用内部组件对应的功能[5]。在教学过程中发现,对于组件对象模型(COM)的可重用性的??现,有程序设计经验的学生来说比较容易,但是对于那些没有经验的初学者来说,难度却不小。本文从软件技术专业初学者的角度,阐述了组件开发中二种可重用模型的实现方法。
2、用包容模型实现学生组件的重用
假定我们现在已经实现了一个COM学生对象,它实现了学生管理的功能。它的接口定义如下:
由于更新,我们实现了一个新的COM学生对象,它既要实现新的接口,也要实现学生管理功能的接口,而新对象的学生管理功能与老对象学生管理功能基本一致。因此我们在实现新对象的过程中考虑到可以重用老对象的功能。虽然接口对象的是采用面向对象语言来进行定义的,但是重用的方法上却不能采用类的继承来实现功能的重用的。应该采用组件对象的重用模型来进行重用。对于包容模型的重用。我们应该要明白,老对象的创建和释放都是在新对象的内部进行的,而客户所看到的只是新对象暴露出来的接口,因此客户并感觉不到老对象的存在。对于包容模型的实现,老对象并不要求进行什么特殊处理,只有新对象要进行包容老对象的特殊处理。实际上新对象是老对象的客户,负责老对象的创建、调用和释放工作。新对象实现包容的关键代码如下:
在Init成员函数中,新对象调用API函数创建了老对象,只要创建成功,数据成员m_pStudentInner记录了老对象的IStudent接口指针。新对象实际上通过指针调用老对象相应的成员函数。
3、用聚合模型实现学生组件的重用
如果我们采用聚合实现对象的重用。首先,对于老对象就与包容模型重用实现有所不同。要实现聚合模型重用,老对象就必须要适应能在被聚合的情况下进行一些特殊的处理。所谓特殊的处理也就是当客户向老对象请求IUnknown接口时,它必须能把控制权交给新对象,由新对象来决定客户程序的请求结果。在实现过程中也就是由委托IUnknown和非委托IUnknown来实现聚合情况下的特殊处理。能够适应在被聚合的情况下进行特殊处理的老对象的委托IUnknown和非委托IUnknown定义如下:
在Init成员函数中,对于创建老对象的API函数,我们要注意它的第二个参数。一般我们可以根据第二个参数的值,来确定它们是使用什么样的对象重用模型。当第二个参数是指向新对象的IUnknown指针时,说明它是采用聚合模型来实现组件的重用;当第二个参数是为NULL时,说
您可能关注的文档
最近下载
- 医学科研数据分析中常见问题及解决方法.pptx VIP
- 2026届八省联考T8联考高三年级12月检测训练英语试卷(含解析,内镶嵌听力音频有听力原文).pdf VIP
- 主要树种( 组) 二元立木材积生长率表.pdf VIP
- 瓷砖产品购销合同简单版(二篇).doc VIP
- 第二章 田径短跑中的起跑和加速跑技术 教案.docx VIP
- 12J5-2 河北省12系列建筑标准设计图集 坡屋面.pdf VIP
- 10BJ2-11外墙外保温(防火)_部分5-常用建筑图集.docx VIP
- 12N1 河北省12系列建筑标准设计图集 供暖工程.pdf VIP
- 12S1 河北省12系列建筑标准设计图集 卫生设备安装工程.pdf VIP
- 12J3-1 河北省12系列建筑标准设计图集 外墙外保温.pdf VIP
原创力文档


文档评论(0)