- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PB面向对象编程研究
PB面向对象编程研究
前言
众所周知,PowerBuilder是第四代面向对象开发语言。
面向对象程序设计的根本目的是实现数据的封装和隐藏。面向对象主要有三大特点,即封装性、继承性和多态性。
面向对象的封装性将数据与函数组织在同一个结构单元中,从而,实现数据和函数的关联以及数据对结构单元外的隐藏。进而实现结构单元与结构单元之间的弱耦合性。这里所说的结构单元就是类。
面向对象的继承性可以理解为类之间的遗传和变异。子类具有父类的性质同时又有区别于父类的性质,无论是属性还是方法。
面向对象的多态性实现的根本基础是类继承性背后的ISA关系。一个基类以及其所有派生类之间都存在ISA关系,他们的类型都属于基类类型。在实际使用中,根据对象实际的类型程序可以实现动态的方法调用。
本文主要叙述PowerBuilder面向对象的实现和特性。
封装性
对象
类,在PowerBuilder集成开发环境中,被称为对象(Object)。在编程过程中,我们所定义的对象变量被称为该对象的一个实例(Instance)。本文按照PB的习惯将类称为对象,将类的变量称为实例。
所谓的对象,我们可以认为是世间万物中任何一样东西,这件东西具有这样或者那样的特性,同时,这件东西还具有各种不同的行为。所谓的特性和行为就是我们在开发时我们所定义的数据和处理数据的函数。在面向对象的设计中,数据成员又称为属性,函数又称为方法。
属性
属性即对象的特性,是编程过程中我们要处理的数据。在PB中,属性的表现形式为对象的实例变量(instance variable)access right),即:
Public: 公共
Protected: 保护
Private: 私有
公共访问权限指不仅对象内部方法可以直接访问该属性,对象外部的代码也可以直接该属性,就像我们在C/C++中使用结构体数据成员一样;保护的访问权限指对于外部代码该属性是受保护的,不允许访问,对于对象本身以及对象的后续继承对象都是公开的,可以直接访问该属性;私有访问属性是指不仅不允许外部代码访问该属性,该对象的后续继承对象也不能访问该属性,该属性为本对象的私有数据,只有对象本身可以访问。从这三种访问权限来看,似乎我们不应该定义属性的Public访问权限,因为,它违反了数据的封装和隐藏特性,我们应该定义Protected或者Private访问权限的属性,为了满足外部对特性的访问,我们只需要为该属性实现特定的访问方法。
下面几小节通过具体例子来体会一下属性访问以及初始化。
访问权限
首先,我们演示在对象外部访问各种不同权限的属性。具体演示步骤如下图。我们创建一个uo_test自定义类的对象。
在uo_test的变量声明窗口中声明如下图变量。
接下来,我们在Application的open事件中创建一个uo_test对象uo_test_1的实例,然后分别访问三个实例变量。如下图。
保存时PB提示我们发现错误:没有足够权限访问类uo_test的属性。
其次,我们演示在对象的派生对象中访问不同权限的属性。由于目前还没有涉及到如何实现继承,所以以下演示省略了派生的过程。
在下图中,我们可以从标题看出uo_test_inherited是从uo_test继承过来的。
在这个演示部分,我们发现,PB在Private访问权限上与C++有所不同,虽然,PB禁止在派生类中访问Private权限的属性,但是PB的错误提示是:没有定义的变量。那么,是不是我们可以在派生类中定一个和基类中一样的属性ii_private呢?答案是否定的,PB认为在派生类中定义的这个试图覆盖基类的Private属性的变量在名字上是冲突的。如下图所示。
看上去很令人奇怪,提示没有定义,定义了又提示冲突,有些矛盾!而C++中的提示很明确,
如下图所示:
可视初始化
创建一个窗口,将uo_test拖放到窗口中,查看non-visual object list窗口中uo_test_1的属性,可以看到ii_public和ii_protected两个属性。这足以证明PB将实例变量作为面向对象的属性来使用的。因此,我们在PB中可以实现在可视化属性窗口中实现对象的属性初始化。如下图。
可能有些朋友会有疑问,为什么没有ii_private?大家可以从属性窗口的标题看出来,uo_test_1是从uo_test继承而来,所以,uo_test_1是不能访问ii_private属性的。所以,可视初始化仅针对Public和Protected访问权限的属性而言。
私有属性初始化
那么私有属性该怎么初始化,那就是在基类中。
方法
方法即对象的行为,是用来处理对象属性的函数。方法与属性一样,具有三种访问权限:Public、Protected、Private。方法
您可能关注的文档
最近下载
- 02S701 砖砌化粪池图集.pdf VIP
- 文献检索与科技论文写作 课件全套 第1--9章 绪论、科技文献检索基础知识---科技论文的投稿.pdf VIP
- 中国数字经济现状及未来发展.docx VIP
- 常用起重索具、吊具计算.doc VIP
- 桥头跳车防治技术.pptx VIP
- 厨师安全教育培训考试题及答案.docx VIP
- 12.《总也倒不了的老屋》课件(共12张PPT).pptx VIP
- 施工安全隐患排查治理方案.docx VIP
- 全套课件-科技文献检索与论文写作..pptx VIP
- Python程序设计基础 课件全套 傅彬 项目1--10 Python语言及编程环境---正则表达式.pptx
文档评论(0)