- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于VB中多态技术应用
基于VB中多态技术应用
摘要:主要论述了如何使用多态技术实现VB中的打印和预览功能。
关键词:多态;打印;预览
中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)16-31074-02
The Application of Polymorphism in Visual Basic Programming Language
QIAN Rong-hua
(Yangzhou Polytechnic Collage, Yangzhou 225009, China)
Abstract:This paper mainly discusses how to use technology of polymorphism to achievethe Print and print preview function in Visual Basic programming language.
Key words:polymorphism; printing; printer preview
1 多态
多态意味着许多类可以提供同样的属性或者方法,而且调用者在调用这些属性或方法之前,不必知道某个对象属于什么类。大多数面向对象的语言,都是通过继承来提供多态的;Visual Basic不用继承来提供多态。Visual Basic是通过多重ActiveX接口来提供多态的。在构成ActiveX规格说明基础的部件设计模型(COM)中,多重接口允许软件部件系统在不扩散现有代码的情况下进行展开。
一个接口是一组相关的属性和方法,不包含实现的任何代码,Vb中建立一个抽象类来实现。抽象类不是用来创建对象的―其用途是为添加其它类中的接口提供模板。在其它相关的类中来实现这些属性和方法,以实现对对象的前期绑定。
接口允许前期绑定。当 Visual Basic 在编译时明确知道正在调用什么样的接口时,它将检查一下类型库,看看那个接口是否支持该方法。然后 Visual Basic 就可以用一张虚拟函数表 (vtable),按直接跳转到该方法进行编译。这样做比起后期绑定来要快许多倍。
对于后期绑定,因为它不可能指明对象将是什么,所以 Visual Basic 编译一些附加的代码,用这些代码来询问该对象是否支持已经调用的方法。如果该对象支持这种方法的话,那么附加的代码将调用它;反之,附加的代码将会产生一个错误。每种方法或者属性的调用都会引入这个额外开销。
2 打印预览功能
Visual Basic 为打印正文和图形提供了三种技术:
可在窗体中建立所需要的输出,然后用 PrintForm 方法打印窗体;
通过设置 Printers 集合中的缺省的打印机,可传送正文和图形到打印机;
可先传送正文和图形给 Printer 对象,再用 NewPage 和 EndDoc 方法打印。
查找MSDN可发现VB没有提供打印预览功能。在应用程序中要想提供打印预览功能可通过 以下方法实现:定义一个object变量(如:objprn),用该变量替换程序中与打印有关语句中的Printer对象,打印时,首先设置:
Set Objprn=printer
预览时设置:
Set Objprn=frmprev.picture1
用上述方法虽然可以实现打印和预览功能,但是对打印机实现预览的图像控件的访问都是后期绑定的,这在效率上是不高的。为了实现前期绑定,可用多态来实现。
3 用多态实现打印和预览功能
多态的意义之一就是通过多态接口,对多个不同类的访问可以获得高效的前期绑定。
一般来说,如果几个类具有部分相同的属性、方法,但却不是用多态搂口实现的(例如printer和form),将不能提供类似多态的性能。
添加三个类,一个抽象类IMyPrinter,Printer和Picturebox的共有部分接口;提供Printer功能的类IMyPic;提供PictureBox功能的类IMyPrinter;在这两个类中实现IMyPrinter接口。
3.1 创建IMyPrinter接口
将一个类模块添加到工程中,将它命名为 IMyPrinter,在该类中定义共同的方法和属性插入如下代码,仅包含本例所需要的接口。
Public Property Get CurrentX() As Single
End Property
Public Property Let CurrentX(ByVal RHS As Single)
End Property
Public S
文档评论(0)