第六章面向对象I_第1页
第六章面向对象I_第2页
第六章面向对象I_第3页
第六章面向对象I_第4页
第六章面向对象I_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PHP WEB开发技术 2第六章第六章 面向对象面向对象I 面向对象编程的概念; 基本的面向对象,如何实现类和对象。 OOP(Object-Oriented Programming,面向对象的编程)技术为编程人员敞开了一扇大门,使其编写的代码更简洁、更易于维护,并且具有更强的可重用性。 (对象 类 继承 多态性 )3 课前回顾1.学习PHP中的文件包含方式,与ASP做比较2.PHP中两种文件包含的方式的比较3.如何规划我们的站点4第一节第一节 什么是面向对象编程什么是面向对象编程对象是一个封装数据属性和操作行为的实体.PHP的WEB技术面向对象是仿造现实对象建立的,他们也有状态和行为。软件对象

2、在一个 或多个变量中维护它的状态。变量是一个由标识符命名的数据项。变成对象用方法实现它的行为。方法是与一个对象相关联的函数(子过程)。对象有二个性质:状态状态(state)和行为行为(behavior)。面对对象技术的基本观点如下:(1)客观世界由对象组成。(2)具有相同数据和操作的对象可归纳成类。(3)类可以派生出子类,子类除了继承除了继承父类的全部特性外还可以有自己的特性(4)对象之间的联系通过消息传递来维系。一、什么是对象一、什么是对象5将相关的变量和方法封装进一个简洁的软件组合是一种简单而强大的思想,它给软件开发人员提供了两个主要的好处:模块化模块化:一个对象的源代码可以独立于其他对象

3、的源代码进行编写和维护。另外,对象很容易地在系统中传递。你可以将你的自行车对象交给其他人,而它仍然会正常工作。 隐藏信息隐藏信息:对象有一个公共接口,其他对象可以使用这个接口与它通信。对象可以维护私有的信息和方法,可以在任何时候改变这些信息和方法,而不影响依赖于它的其他对象。你不需要理解你自行车使用的变速齿轮机制就能够使用它。软件对象 6对象属性型号价格里程行为起动停车行驶属性车轮数量档的数量行为加速换档刹车属性名称颜色品种行为摇尾巴吃东西犬 吠 7二、什么是类二、什么是类 类是一组具有相同数据结构相同数据结构和相同操作对象相同操作对象的集合。 在现实世界中,常常有相同类型的许多对象。例如,你

4、的自行车只是世界上的许多自行车之一。用面向对象的术语来说,你的自行车对象是自行车类的一个实例。自行车有一些共有的状态(当前的变速齿轮、当前的步调、两个轮子)和行为(改变变速齿轮、刹车)。但是,每辆自行车状态独立于其他自行车状态,也就说每辆自行车的状态可以互不相同。 三、什么是继承三、什么是继承 继承性是面向对象程序设计语言不同于其他语言的最主要的特点.继承是指子类可以自动拥有父类的全部发属性与操作的机制.继承带来了以下的好处:1.子类在超类提供的共有元素的基础上提供特殊化的行为。通过使用继承,程序员可以多次重用超类中的代码。2.程序员可以实现称为“抽象类(abstract class)”的超类

5、,它定义了“通用的”行为和共同拥有的状态。抽象超类定义并可能部分实现了这些行为,但是类的一部分未被定义并且未被实现。其他程序员可以在特殊化子类中填充细节。8三、什么是多态性三、什么是多态性 多态性分为两种:(1)编译时的多态性(2)运行时的多态生多态性大致分为3种实现方式:(1)通过接口实现多态性(2)通过继承实现多态性(3)通过抽象类实现多态性三、什么是接口三、什么是接口 在PHP编程中,接口(interface)是指无关对象用来进行彼此交互的设备(无关对象在类层次结构中没有相关性)。接口可以与协议(关于行为的规定)进行类比。实际上,其他面向对象语言也有接口功能,但是它们将其他接口称为协议。

6、接口对于以下情况有用:(1)获得无关类之间的类似之处,而不必勉强地实施类关系。(2)声明一个或多个类可能要实现的方法。(3)显露对象的编程接口,而不必显露它的类。9第二节第二节 面向对象的面向对象的PHP I 一、创建类:一、创建类:创建一个类:class创建对象:我们使用关键字new用给定的类创建一个对象:$object = new Class;假定我们已经定义了一个Person类,以下代码将创建一个Person对象:$rasmus = new Person;二、类的实例化:二、类的实例化:10?phpclass myNamefunction _ _construct($myName) /构

7、造函数echo(我的名字是:$myName);/下面创建类实例$name1=new myName(周洲);$name2=new myName(周阳);$name3=new myName(周文);?实例:浏览器输出结果:我的名字是:周洲我的名字是:周阳我的名字是:周文11三、使用类的属性三、使用类的属性 方法是在类中定义的函数。虽然PHP没有什么特殊的要求,但是大多数方法只对其所属对象中的数据进行操作。所有以两个下划线(_)开头的方法可能在将来被PHP使用(构造函数构造函数_construct()和析构函数析构函数_destruct()使用),所以建议你在为方法命名时不要以双下划线开头。 访问类

8、成员变量有一个特殊的一指针$this。通过该指针,可以方便地访问类属性或者给类属性赋值。 class Person var $name; /定义属性 function get_name() /无参数 return $this-name; /$this去访问和设置当前对象的$name属性 function set_name($new_name) / 有参数 $this-name = $new_name; /同上注释 echo $this-name; 12四、属性的声明四、属性的声明下面是一种Person类,它含有一个没有声明的$name属性:class Person /创建Person类 fun

9、ction get_name() return $this-name; function set_name($new_name) $this-name = $new_name; 13五、构造函数五、构造函数在实例化一个对象时,可以在类名后提供一个参数列表:这些参数将被传递给这个类的构造函数(_ _constructor),这个特殊函数用来初始化类的属性。class Person function _Person($name,$age) $this-name = $name; $this-age = $age; echo $this-name; $person = new Person(Fred

10、,35);14六、继承六、继承在类定义中使用extends关键字,其后是超类基类的名称:class Person var $name,$address,$age;class Employee extends Person var $position,$salary;Employee 类中包含属性$position 和 $salary ,以及从Person类中继承来的属性$name、$address和$age。15第三节第三节 控制对类的成员访问控制对类的成员访问 在我们长期学习面向对象的过程中,大家也许会碰到一些问题是:数据成员是公共可读和可写的,这是由变量前的public或PHP4中的var

11、句顶的。我们真正希望的是找到对象存储数据的一种限制性途径,只通过一种方法修改数据,并且提供其他的方式使外部设计者(业务逻辑层)能够查询他们的值。(1)public :在任何位置都可以读取和修改这个成员变量或者调用这个方法。这个修饰符在外部代码使用,由给定类中的代码使用,或者在扩展给定类的功能的类中使用。(2)private : 只有这个类中的代码才能读取和修改私有变量或者调用私有成员函数。其他代码、类或者扩展这个类的功能类(子类)不能使用私有条目。(3)protected : 外部代码与给定类不相关的其他类不能读取或者修改使用了关键字protected的成员变量,也不能调用受保护的成员函数。 16?phpclass Productprotected $id;protected $name;protected $desc;protected $price_per_unit;protected $location;public function _construct( $in_prodid,$in_prodname,$in_proddesc,$in_price_pu,$in_location ) /形参列表参见P99页17总结 在本章中,我们了解了面对对象的程序设计,这是通过在脚本中定义类型的新

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论