转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件使用 >> 常用软件 >> 正文
PowerBuilder应用开发系列讲座(3)         

PowerBuilder应用开发系列讲座(3)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:622 更新时间:2009/4/24 21:43:36
p>  在PowerBuilder的应用开发中,运用面向对象技术不是必须的,但是对于一个大型复杂应用系统的开发,如果采用了面向对象技术,则开发效率会大大提高。

  用PowerBuilder开发的好处是,即使您不懂得什么是面向对象技术,您也可能会下意识地用到面向对象技术的一些特性,但是如果您对这一技术有了充分的了解,那对您所设计程序的可重用性,可维护性和其他各方面的质量都会有大幅度提高。

PowerBuilder的对象

  PowerBuilder对象有三个部分元素:属性、函数和事件。

  (1)属性:也就是数据。包括系统属性和用户定义属性两类,描述该对象的各种特性。如在窗口对象中的系统属性包括标题、高度、宽度等,用户定义的属性可以是实例变量或共享变量,对这种属性的访问同系统属性相同,只是在封装性上有所不同。

  (2)事件:PowerBuilder中的事件与Windows的事件存在着映射关系。当用户的操作或系统本身产生了Windows的标准事件,就转化成PowerBuilder中的事件。例如命令按钮有一个叫Clicked事件,当用户按按钮时触发,操作系统首先检测到鼠标被点击,并把Clicked这一消息转给该按钮,PowerBuilder运行时的工作引擎翻译了这一事件,并执行适当的PowerScript语句。PowerBuilder中大部分的事件都是可以映射成由用户激发的Windows事件。

  另一类事件是用户定义事件,这种事件是用户声明并可以在任何时刻由用户触发的,Power-Builder中保留了75个用户事件可由程序员使用。

  (3)函数:用户通过函数来使对象完成某些操作。Pow-erSoft公司建议用户通过调用对象事件和函数来修改对象而不要直接修改对象属性,以满足对象封装的要求,例如采用Window.hide()而不要用Window.visi-ble=false来使窗口不可见。

PowerBuilder面向对象的特性

  提到一门语言的面向对象特性,它应当具有继承性、多态性和封装性,如缺少其中的一个则只能称其为基于对象的系统,而不是面向对象的系统,而PowerBuilder则很好地具备了全部三个特性。

继承:

  PowerBuilder中,窗口、菜单和用户对象是可以继承的,而其他对象则都不能。当您继承了一个对象,那您得到的子类将具有父类的属性、实例变量、共享变量、控件、用户自定义事件、对象级函数、事件和代码(script)。也就是说当您继承了一个类,您几乎得到了

  这个类的全部,不过有一点值得注意,您不能在子类中删除任何一个继承到的特性。

  在继承了祖? 后,您可以在子类中扩展或覆盖祖先的元素。例如代码,在PowerBuilder中缺省的是采用扩展方式,先执行继承到的祖先代码,后执行子类的扩展代码。您也可以选择菜单Compiler|Override Ancestor Script选项,只执行子类的代码,并可在代码中的任意位置调动祖先代码如CALL w_l∷open。

  重载函数是面向对象程序设计的重要特性,即同一函数名却有着不同的参数和返回值。在运行时,系统自动寻找执行参数相匹配的那个函数,例如我们常用的MessageBox()这个函数就有12个不同参数的重载函数。遗憾的是,对Power-Builder我们不能在同一个继承对象中定义2个不同参数的重载函数,只能在后继的类中定义重载函数,这使我们对重载函数的定义带来了很大的不便,这不能不说是PowerBuilder的缺陷。(不过在即将发布的PowerBuilder5.0中,正是支持了函数重载这一特性。)

  对于对象的继承,PowerBuilder中所有对象都有其共同的基类PowerObject,从这一个基类下面分成继承Graph-icObject和NonVisualObject等。它们的继承关系和扩展函数及属性如下表:

多态性:

  在PowerBuilder中有大量的多态函数如print()、TriggerEvent()等,在运行过程中,您只需要指出对象和函数名即可。在有些函数中,即使不知道对象类,也可以用Class Name()函数得到对象类,或得到实例名,将对象名作为函数参数调用该函数。

封装性:

  封装的目的是为了实现数据隐藏和数据保护,封装的目标是为对象提供一个对外操作的接口,使其他对象通过函数来访问,而不允许直接操纵对象的属性。在PowerBuilder中有三种访问类型Public、Protect、Private,这三种访问控制类型可以用在对象的变量和函数上,缺省的实例变量和对象函数都是public类型的。为了保护数据,应尽可能多地使用private和protect类型,前者只允许对象内部的元素来访问,后者可以接受对象内部和继承类的元素访问。

PowerBuilder面向对象程序设计的过程

  事实上用户在运用Power-Builder进行程序设计的一开始,就已经开始进行对象类的设计:例如在建立窗口时可以用窗口画笔(painter)建立一个新窗口,命名为w_emp。建立的窗口就是从PowerBuilder的窗口对象继承下来的,所以窗口会自动具备一些属性,例如X和Y的坐标、高度、宽度、窗口类型、标题等。当用窗口画笔建立窗口时,您给这些属性赋了值,你还可以增加窗口的函数和事件。当窗口被保存时,你就建立了一个新的窗口继承类,称为:w_emp。输出对象的句法显示的部分程序如下:

global type w_emp from Window 

int X=200 

int Y=233 

int Width=2405 

int Height=1285 

boolean TitleBar=true 

string Title="Employee Mainte-nance" 

string MenuName="m_emp" 

long BackColor=12632256 

boolean ControlMenu=true 

boolean MinBox=true 

boolean MaxBox=true 

boolean Resizable=true 

. 

. 

. 

end type 

global w_emp w_emp 

  请注意系统在这里做了什么:首先定义了w_emp窗口类是从window类继承而来,接着定义这一对象类的各属性值,在句法的最后一行声明了一个全局变量,变量的类型(对象类)是w_emp,变量名(对象实例)也是w_emp。也就是说在您建立了w_emp这一窗口对象后,系统就具有了w_emp这一对象类和w_emp这一全局变量。这个变量是引用变量,也就是在有些语言称之为指针的变量类型。引用变量并不真正含有窗口实例的属性,而是包含了一个位置或是内存中的一个地址,在那儿你可以找到实例的实际属性和程序。但在应用的开始时这一指针为空,因为在内存中并没有一个这样的窗口实例。当系统执行了Open(w_emp)后,系统在内存中复制了一份w_emp对象类的拷贝或实例,w_emp这一参照变量指向了这一地址。由于窗口对象的visible等属性都是Public型,所以继承类也都具有了这些属性。


[办公软件]在sybase中插入图片、PDF、文本文件  [办公软件]安装Sybase ASE
[办公软件]linux指令大全(完整篇)  [办公软件]Linux新手入门常用命令大全
[办公软件]在RedHat Linux 9里安装gaim0.80  [办公软件]浅谈Linux 下Java 1.5 汉字方块问题解决方法
[办公软件]Linux程序员必读:中文化与GB18030标准  [办公软件]linux指令大全
[办公软件]制作Linux启动盘的四种方法  [办公软件]Linux文件系统的反删除方法
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · 办公软件  · 系统软件
    · 常用软件  · 聊天工具
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台