深入剖析Perl面向对象编程.docxVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

本文和大家重点讨论一下Perl面向对象编程(OOP)的概念,主要包括模块简介,Perl中的类,创建类,构造函数,方法,方法的输出和方法的调用等内容,相信通过本文的学习你对Perl面向对象的概念一定会有深刻的认识。

Perl面向对象编程(OOP)

介绍如何使用Perl的Perl面向对象编程(OOP)特性及如何构建对象,还包括继承、方法重载和数据封装等内容。

一、模块简介

模块(module)就是Perl包(pachage)。Perl中的对象基于对包中数据项的引用。(引用见第x章引用)。

详见#28的perlmod和perlobj。

在用其他语言进行Perl面向对象编程时,先声明一个类然后创建该类的对象(实例),特定类任何对象的行为方式是相同的,由类方法确定,能够通过定义新类或从现存类继承来创建类。已熟悉Perl面向对象编程的人能够在此碰到许多熟悉的术语。Perl一直是个Perl面向对象的语言,在Perl5中,语法略有变动,更规范化了对象的使用。

下面三个定义对理解对象、类和方法在Perl中如何工作至关重要。

◆类是个Perl包,其中含提供对象方法的类。

◆方法是个Perl子程式,类名是其第一个参数。

◆对象是对类中数据项的引用。.

二、Perl中的类

再强调一下,一个Perl类是仅是个包而已。当您看到Perl文档中提到“类”时,把他看作“包”就行了。Perl5的语法能够创建类,假如您已熟悉C,那么大部分语法您已掌控了。和Perl4不同的概念是用双冒号(::)来标识基本类和继承类(子类)。

Perl面向对象的一个重要特性是继承。Perl中的继承特性和其他Perl面向对象语言不完全相同,他只继承方法,您必须用自己的机制来实现数据的继承。

因为每个类是个包,所以他有自己的名字空间及自己的符号名关联数组(详见第x章关联数组),每个类因而能够使用自己的单独符号名集。和包的引用结合,能够用单引号(\\)操作符来定位类中的变量,类中成员的定位形式如:$class\\$member。在Perl5中,可用双冒号替代单引号来获得引用,如:$class\\$member和$class::$member相同。.

三、创建类

本节介绍创建一个新类的必要步骤。下面使用的例子是创建一个称为Cocoa的简单的类,其功能是输出一个简单的Java应用的源码的必要部分。放心,这个例子无需您有Java的知识,但也不会使您成为Java专家,其目的是讲述创建类的概念。

首先,创建一个名为Cocoa.pm的包文档(扩展名pm是包的缺省扩展名,意为PerlModule)。一个模块就是个包,一个包就是个类。在做其他事之前,先加入“1;”这样一行,当您增加其他行时,记住保留“1;”为最后一行。这是Perl包的必需条件,否则该包就不会被Perl处理。.

四、构造函数

Perl面向对象中构造函数是类的子程式,他返回和类名相关的一个引用。将类名和引用相结合称为“祝福”一个对象,因为建立该结合的函数名为bless(),其语法为:

blessYeReference[,classname]

YeReference是对被“祝福”的对象的引用,classname是可选项,指定对象获取方法的包名,其缺省值为当前包名。

创建一个构建函数的方法为返回已和该类结合的内部结构的引用。如..

subnew{?

my$this={};#Createananonymoushash,and#selfpointstoit.?

bless$this;#ConnectthehashtothepackageCocoa.?

return$this;#Returnthereferencetothehash.?

}?

五、方法

Perl类的方法只但是是个Perl子程式而已,也即通常所说的成员函数。Perl面向对象中Perl的方法定义不提供任何特别语法,但规定方法的第一个参数为对象或其被引用的包。Perl有两种方法:静态方法和虚方法。

静态方法第一个参数为类名,虚方法第一个参数为对象的引用。方法处理第一个参数的方式决定了他是静态的还是虚的。静态方法一般忽略掉第一个参数,因为他们已知道自己在哪个类了,构造函数即静态方法。虚方法通常首先把第一个参数shift到变量self或this中,然后将该值作普通的引用使用。.

六、方法的输出

假如您现在想引用Cocoa.pm包,将会得到编译错误说未找到方法,这是因为Cocoa.pm的方法还没有输出。输出方法需要Exporter模块,在包的开始部分加上下列两行:

requireExporter;

@ISA=qw(Ex

您可能关注的文档

文档评论(0)

guanyulong + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档