第12章类与对象精选文档.ppt
《第12章类与对象精选文档.ppt》由会员分享,可在线阅读,更多相关《第12章类与对象精选文档.ppt(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第12章类与对象本讲稿第一页,共二十一页12.1 面向对象与面向过程本节首先来介绍下什么是面向过程编程、什么是面向对象编程。然后比较二者在:代码执行效率方面、代码可重用方面以及代码扩展性等方面的差异。本讲稿第二页,共二十一页12.1.1 面向对象与面向过程面向对象是以对象和消息为基础的编程方法。面向过程则是以算法过程为基础的编程方法。本书所使用的代码基本上全部采用面向过程的方式。面向过程的代码一般看起来如所下所示。这种方式代码从上到下一句一句的执行。本讲稿第三页,共二十一页12.1.2 两者之间的比较通过上一节的对面向对象与面向过程的介绍,可以发现二者存在以下方面的关系:面向过程程序设计方法采
2、用函数(或过程)来描述对数据的操作,但又将函数与其操作的数据分离开来;面向对象程序设计方法将数据和对数据的操作封装在一起,作为一个整体来处理。面向过程程序设计方法以功能为中心来设计功能模块,难于维护;而面向对象程序设计方法以数据为中心来描述系统,数据相对于功能而言具有较强的稳定性,因此更易于维护。面向过程程序的控制流程由程序中预定顺序来决定;面向对象程序的控制流程由运行时各种事件的实际发生来触发,而不再由预定顺序来决定,更符合实际需要。面向对象程序设计方法可以利用框架产品(如MFC,Microsoft Foundation Classes)进行编程。面向对象的优点有:面向对象技术具有程序结构清
3、晰,自动生成程序框架,实现简单,可有效地减少程序的维护工作量,代码重用率高,软件开发效率高等优点。面向对象技术中的封装性的缺点:封装将对象有关的数据和行为封装成整体来处理,使得对象以外的部分不能随意存取对象的内部属性,从而有效地避免了外部错误对它的影响,大大减小了查错和排错的难度。另一方面,当进行修改对象内部时,由于只有少量的外部接口对外提供服务,因此同样减小了内部的修改对外部的影响。本讲稿第四页,共二十一页12.2 使用类与对象本节来介绍如何在PHP中使用类与对象。在本书第四章曾经提到过,类也属于变量的一种但它不同于一般的变量,和数组一样它是一种特殊的变量。它的定义方法以及它的构成及调用方法
4、都与一般的变量有所不同。要使用对象需要先定义一个类,然后为所定义的类初始化一个对象。然后通过使用对象的属性与方法来实现具体的操作。本节就来介绍如何进行这一过程。本讲稿第五页,共二十一页12.2.1 定义一个类对象是类的实例,类是对象是根本,使用对象必须以类为前提。所以,定义一个类是使用类与对象的一个最基本的前提。PHP中定义一个类要使用这样的语法格式:class classname var$var function functionname()在PHP中定义一个类需要使用“class”关键字,该关键字指定开始定义一个类。后面跟上类的名称。注意类的名称与普通变量命名规则相同,但名称前并不加代表变
5、量的“$”符号。在变量名后面是成对出现的“”大括号标记,在大括号中即为定义的类的具体内容。其中即可以有变名也可以有函数。本讲稿第六页,共二十一页12.2.2 为类初始化一个对象类在创建完成之后,就需要为类初始化对象。如果创建之后而不为类初始化对象就好比手上只有一份汽车的介绍广告,而没有汽车。所以要想操作类的属性方法,就需要对象。本节来介绍如何为类初始化一个对象并操作类的属性与方法。在PHP中创建类之后,为类初始化对象要使用如下语法格式:class classname var$var function functionname()/以上为定义类的代码$myobj=new classname;/初
6、始化对象$myobj-var=value;/调用类的属性$myobj-functionname();/调用类的方法本讲稿第七页,共二十一页12.2.3 类的继承类的继承是指一个类(如类A)可以使用另一个类(如类B)中所有属性与方法。这样就是类B对类A的继承,类B就可以叫做是类A的子类,反过来类A也可以叫做类B的父类。在PHP中要实现类的继承,需要使用以下语法样式:class Aclass B extends A要实现继承最为关键的一步就是在定义子类(即以上代码中的类B)时,在类名后使用extends关键字再加上父类名称(即以上代码中的类A)即可。这样在类B中就可以使用类A中所定义的所有属性与方
7、法,同时在类B中还可以定义自身特有的属性与方法。本讲稿第八页,共二十一页12.2.4 类的重载在进行类的继承时,可能会出现这样的情况:子类中出现了与父类中同名的属性与方法。属性名相同没什么问题,都只是一个变量而已,而方法名相同就不同了,因为两个不同的函数可能会执行不同的内容。所以类的重载其实是指类的方法的重载,如果执行子类中与父类同名的方法,只是执行子类的方法并不影响父类的方法庖还叹徒凶隼嗟闹卦亍在子类中也可以访问父类中的方法,在子类中访问父类中的方法的语法格式如下代码所示。class A function f_name()class B extends A function f_name()
8、parent:f_name()本讲稿第九页,共二十一页12.2.5 类的引用类在定义以后并不是相互独立的,一个类可以调用另一个已知类中的属性与方法。笔者事实上并不提倡这样做,因为使用类的目的就是为了有效的封装变量与函数。如果类与类之间还有着复杂的调用关系,就丧失了使用类的方便之处。反对归反对,但作为知识还是有必要了解一下,在PHP中实现类的引用可以采用这样的形式:class A var$var;function f_name()class B A:f_name();A:$var;本讲稿第十页,共二十一页12.2.6 类的构造函数如果类中定义的方法名即函数名与类的名称相同,则为类初始化对象时与类
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 12 对象 精选 文档
限制150内