Perl 教程 之 Perl 面向对象 3

简介: Perl的面向对象编程涉及两种实现:匿名哈希表引用和数组引用。对象是类(Perl包)中数据项的引用,方法是接收类名或对象作首参的子程序。

Perl 教程 之 Perl 面向对象 3

Perl 面向对象

Perl 中有两种不同地面向对象编程的实现:

一是基于匿名哈希表的方式,每个对象实例的实质就是一个指向匿名哈希表的引用。在这个匿名哈希表中,存储了所有的实例属性。

二是基于数组的方式,在定义一个类的时候,我们将为每一个实例属性创建一个数组,而每一个对象实例的实质就是一个指向这些数组中某一行索引的引用。在这些数组中,存储着所有的实例属性。

面向对象基础概念

面向对象有很多基础概念,这里我们接收三个:对象、类和方法。

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

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

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

Perl 提供了 bless() 函数,bless 是用来构造对象的, 通过 bless 把一个引用和这个类名相关联,返回这个引用就构造出一个对象。

创建和使用对象

创建一个类的实例 (对象) 我们需要定义一个构造函数,大多数程序使用类名作为构造函数,Perl 中可以使用任何名字。

你可以使用多种 Perl 的变量作为 Perl 的对象。大多数情况下我们会使用引用数组或哈希。

接下来我们为 Person 类创建一个构造函数,使用了 Perl 的哈希引用。

在创建对象时,你需要提供一个构造函数,它是一个子程序,返回对象的引用。

实例如下:

实例
package Person;
sub new
{
my $class = shift;
my $self = {
_firstName => shift,
_lastName => shift,
_ssn => shift,
};

# 输出用户信息
print "名字:$self->{_firstName}\n";
print "姓氏:$self->{_lastName}\n";
print "编号:$self->{_ssn}\n";
bless $self, $class;
return $self;

}
接下来我们创建一个对象:

$object = new Person( "小明", "王", 23234345);

目录
相关文章
|
6月前
|
存储 索引 Perl
Perl 教程 之 Perl 面向对象 5
Perl的面向对象编程涉及匿名哈希表或数组来存储对象属性。类通过`@ISA`数组实现继承,如Employee继承Person。在Employee.pm中声明`@ISA = qw(Person)`。在main.pl中,创建Employee对象并调用方法,显示继承功能。程序输出显示姓名的变化。
64 0
|
6月前
|
存储 索引 Perl
Perl 教程 之 Perl 面向对象 6
Perl 面向对象编程有两种实现:匿名哈希表和数组方式。教程中展示了基于哈希表的继承示例,Employee 类继承并重写了 Person 类的方法。在Employee中,`new`构造函数被重写,添加了新属性,`getFirstName`被重写,还新增了`setLastName`和`getLastName`方法。在主程序中,创建Employee对象并调用这些方法,显示了方法重写和辅助函数的使用效果。
43 3
|
6月前
|
存储 索引 Perl
Perl 教程 之 Perl 面向对象 1
Perl的面向对象编程涉及两种实现:使用匿名哈希表存储对象属性的引用,或使用数组为每个属性创建行索引。对象是类的实例,类是包含方法的Perl包。方法是接受对象或类名作为首参的子程序。`bless()`函数用于构建对象,将引用与类关联。
28 3
|
6月前
|
存储 索引 Perl
Perl 教程 之 Perl 面向对象 4
Perl的面向对象涉及两种对象实现:匿名哈希表和数组。对象是类的实例,类是包含方法的Perl包。方法是接收对象引用作为首参的子程序。`bless()`函数用于构造对象。以下是一个Person类的例子,包含`new`构造器、`getFirstName`和`setFirstName`方法。在`employee.pl`脚本中,创建Person对象并演示了方法的使用。输出显示了姓名的设置和获取过程。
38 2
|
6月前
|
存储 Java 索引
Perl 教程 之 Perl 面向对象 7
在Perl OOP中,对象基于匿名哈希或数组实现,存储实例属性。当调用不存在的方法时,Perl查找AUTOLOAD来动态处理。析构函数DESTROY在对象销毁时自动调用,允许执行清理操作。不能修改传递给DESTROY的只读引用,但可写入对象本身。析构器可调用基类或其他类的DESTROY,但通常不手动调用。对象释放时,其所含对象也会自动销毁。
36 1
|
6月前
|
存储 索引 Perl
Perl 教程 之 Perl 面向对象 8
Perl面向对象教程展示了两种实现:通过匿名哈希表或数组存储对象属性。示例中,`MyClass`与子类`MySubClass`被定义,后者继承并扩展了父类方法。在主程序中,创建并调用了对象,演示了构造、方法调用、继承及自动调用析构函数的过程。
49 1
|
6月前
|
存储 索引 Perl
Perl 教程 之 Perl 面向对象 2
Perl的面向对象编程涉及两种实现:匿名哈希表引用和数组引用。对象是类数据的引用,类是包含方法的Perl包。方法是接收类名作为首参的子程序。`bless()`函数用于构造对象。类定义为包,提供独立命名空间,文件通常以`.pm`结尾。例如: ```markdown .package Person # 类代码... .end ``` 简而言之,Perl的OOP基于引用,类是包,方法是子程序,`bless`构造对象,类定义创建命名空间。
32 2
|
6月前
|
移动开发 数据安全/隐私保护 Perl
Perl 教程 之 Perl CGI编程 8
Perl CGI编程教程讲解了如何通过CGI接口与HTTP服务器交互。文章介绍了CGI的概念,强调使用POST方法传递敏感数据的安全性。示例脚本`test.cgi`演示了处理POST表单数据的方法,读取并显示输入的站点名称和URL。同时,给出了一个HTML表单`test.html`,用于通过POST方法向`test.cgi`提交数据。
44 2
|
6月前
|
移动开发 Perl
Perl 教程 之 Perl CGI编程 9
Perl CGI教程讲解了如何通过CGI程序处理HTML表单中的checkbox数据。在示例中,HTML表单包含两个checkbox(百度和Google),提交后,CGI脚本`test.cgi`读取并解析POST数据,判断每个选项是否被选中,并生成相应HTML响应显示选中状态。
32 1
|
6月前
|
移动开发 Perl
Perl 教程 之 Perl CGI编程 3
**Perl CGI教程摘要:** CGI是NCSA维护的通用网关接口,让服务器与HTML客户端交互。HTTP头部如`Content-type:text/html`指示内容类型。常见头部包括`Content-type`定义MIME类型,`Expires`设定过期时间,`Location`用于重定向,`Last-modified`标记最后修改日期,`Content-length`表示内容长度,和`Set-Cookie`用于设置Cookie。
35 1

相关实验场景

更多