本文和大家重点讨论一下Perl面向对象编程(OOP)的概念,主要包括模块简介,Perl中的类,创建类,构造函数,方法,方法的输出和方法的调用等内容,相信通过本文的学习你对Perl面向对象的概念一定会有深刻的认识。
创新互联公司网站建设公司,提供成都做网站、成都网站设计,网页设计,建网站,PHP网站建设等专业做网站服务;可快速的进行网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,是专业的做网站团队,希望更多企业前来合作!
Perl面向对象编程(OOP)
介绍如何使用Perl的Perl面向对象编程(OOP)特性及如何构建对象,还包括继承、方法重载和数据封装等内容。
一、模块简介
模块(module)就是Perl包(pachage)。Perl中的对象基于对包中数据项的引用。(引用见第x章引用)。
详见http://www.nease.net/tppmsgs/msgs0.htm#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(Exporter);
Perl面向对象中Perl类的继承是通过@ISA数组实现的。@ISA数组无需在任何包中定义,然而,一旦他被定义,Perl就把他看作目录名的特别数组。他和@INC数组类似,@INC是包含文档的寻找路径。@ISA数组含有类(包)名,当一个方法在当前包中未找到时就到@ISA中的包去寻找。@ISA中还含有当前类继承的基类名。
类中调用的任何方法必须属于同一个类或@ISA数组定义的基类。假如一个方法在@ISA数组中未找到,Perl就到AUTOLOAD()子程式中寻找,这个可选的子程式在当前包中用sub定义。若使用AUTOLOAD子程式,必须用useAutoload;语句调用autoload.pm包。AUTOLOAD子程式尝试从已安装的Perl库中装载调用的方法。假如AUTOLOAD也失败了,Perl再到UNIVERSAL类做***一次尝试,假如仍失败,Perl就生成关于该无法解析函数的错误。..
七、方法的调用
调用一个对象的方法有两种方法,一是通过该象的引用(虚方法),一是直接使用类名(静态方法)。。
本文名称:深入剖析Perl面向对象编程
URL网址:http://www.gawzjz.com/qtweb2/news1/15251.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联