第一章:你首先需要知道的(面向对象入门)
译者:boyeestudio 欢迎批评指正!
为了理解在Perl中,面向对象是如何工作的,我们首先就需要明白什么是真正的面向对象。令人惊讶的是,这是很难做到。面向对象编程到现在已有近三十多年了,在那段时间里,有很多看法,理论,甚至意识形态都在这方面有所表现。但大多数之间不一致。没有两个是绝对的相似。
然而,基本的面向对象的思想是简单明显的,易于解释。这一章将在这些基本的思想上作一个快速的学习。如果你已经对本主题很熟悉,你可以跳过或忽视下面的部分。如果你面向对象的思想很脆弱(或者已生锈了。),那么本章能点燃你对Perl下面向对象编程的理解。
如果你确实是一个完完全全的面向对象思想的新手,你将发现很多信息,有效地带你快速理解一些概念的本质,或者你也可以从本章后面所建议的那些优秀的介绍文本开始着手。
1.1面向对象编程本质.
为理解面向对象理论的90%,你真正需要记住的仅仅五件事:
..一个对象是指某一事物,用来提供某种可以定位,访问,修改和保护数据的方式;
..一个类是描述什么数据是可以通过一个特定的对象访问,如何访问;
..一个方法表示对象的数据靠某种方式访问,修改,或者操作;
..继承是这样一种方式,已存在的对象类能够提供额外的数据或方法;
..多态表明在不同的对象间,依据它们所属的类,对相同的消息有不同的响应;
这一章将讨论这些理论.
1.1.1对象
对象是一种数据访问的机制。在大多数面向对象语言中,这意味着对象扮演着数据容器的着色,至少,是数据指针的容器。然而在更多的情况下,提供访问数据的事物----变量,子例程,文件句柄----可能被认为是对象。
一个对象可以访问的数据就是对象的属性值。容器存储这些属性值被称为属性。属性通常专有地关联一个指定的对象。
对象不仅仅是指变量的集合,然而,在大多数语言中,对象有一个额外的性质就是封装。封装意味着对象的属性不能直接被整个程序访问。相反,它们仅仅能被与这个对象相关的子例程访问。这些子例程就叫方法,并且它们通常具有大部分可访问性。从间接的层面上来说,这意味着方法能用来限制某些对象属性值可以访问或修改的方式。换言之,对象的属性值能够被获得或修改仅仅在这个对象的方法许可的情况下。
让我们看一个现实世界中有关对象的例子:一个自动取款机。取款机可以看作一个对象,因为它提供(被控地)访问一些属性值,比如你的帐单,或者银行供给的现金。其中一些属性储存在机器自身的属性中----它的提款盘----其它的储存在别处----在银行的中心帐目计算机中。从顾客的角度来看,属性值具体在什么地方无关紧要,只要他们可以通过自动取款机访问就行。访问自动取款机的属性是靠机器的接口获得的。也就是,按钮,屏幕,ATM的插槽控制着被封装的属性值如何----现金,信息,等等----可被访问。设置这些限制是用来确保对象维护内部持久一致的状态,任何外部与其属性的交互是有效,合理的。