什么叫面相对象??面向对象四大概念

什么叫面相对象?
http://www.jade-china.net/data/2005/1229/article_31.htm
转自图网[www.4ico.com]在阐述类的概念之前我们来先说说面向对象编程的概念:面向对象的程序设计(Object-Oriented Programming,简记为OOP)立意于创建软件重用代码,具备更好地模拟现实世界环境的能力,这使它被公认为是自上而下编程的优胜者 。它通过给程序中加入扩展语句,把函数“封装”进编程所必需的“对象”中 。面向对象的编程语言使得复杂的工作条理清晰、编写容易 。说它是一场革命,不是对对象本身而言,而是对它们处理工作的能力而言 。对象并不与传统程序设计和编程方法兼容,只是部分面向对象反而会使情形更糟 。除非整个开发环境都是面向对象的,否则对象产生的好处还没有带来的麻烦多 。有人可能会说PHP不是一个真正的面向对象编程的语言, PHP 是一个混合型 语言,你可以使用面向对象编程,也可以使用传统的过程化编程 。然而,对于大型项目的开发,你可能想需要在PHP中使用纯的面向对象编程去声明类,而且在你的项目开发只用对象和类 。随着项目越来越大,使用面向对象编程可能会有帮助,面向对象编程代码很容易维护,容易理解和重复使用,这些就是软件工程的基础 。在基于Web的项目中应用这些概念就成为将来网站成功的关键 。
对象(Object)是问题域或实现域中某些事物的一个抽象,它反映此事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体 。关于对象要从两方面理解:一方面指系统所要处理的现实世界中的对象;另一方面对象是计算机不直接处理的对象,而是处理相应的计算机表示,这种计算机表示也称为对象 。简单的来说,一个人就是一个对象,一个尺子也可以说是个对象 。当这些对象可以用数据直接表示时,我们就称他为属性,尺子的度量单位可以是厘米,公尺或英尺,这个度量单位就是尺子的属性 。
在PHP里我们可以定义一个类,类(Class)就是指变量与一些使用这些变量的函数的集合 。PHP是一种松散类型的语言,所以通过类型重载不起作用,通过参数的个数不同来重载也不起作用 。有时在面向中重载构造函数非常好,这样你可以通过不同的方法创建对象(传递不同数量的参数) 。在PHP中就是通过类来实现的 。
在PHP中是通过类来完成信息封装的,在PHP中定义类的语法是:
<?php
class Class_name // 在面向对象编程类中,习惯上类的第一个字符为大写,并且必须符合变量的命名规则 。
{
//函数与变量的集合
}
?>
在定义类时你可以按自已的喜好的格式进行定义,但最好能保持一种标准,这样开发起来会更有效些 。
数据成员在类中使用"var"声明来定义,在给数据成员赋值之前,它们是没有类型的 。一个数据成员可以是一个整数,一个数组,一个相关数组(Associative Array)或者是一个对象 。
下面是一个类定义的实际例子:
<?php
class Student
{
var $str_Name; //姓名
var $str_Sex; //性别
var $int_Id; //学号
var $int_English; //英语成绩
var $int_maths; //数学成绩
}
?>
这是一个很普通定义类的简单例子,用于显示学生的学习成绩,类名为Student,Student类包涵了一个学生的基本属性:姓名、性别、学号、英语成绩和数学成绩 。
function我们称之为在类中被定义的函数,在函数中访问类成员变量时,你应该使用$this->var_name,其中var_name指的是类中被声明的变量,否则对一个函数来说,它只能是局部变量 。我们先定义一个Input()的函数,用来给实例中的对象赋以初值:
function Input ( $Name, $Sex, $Id, $Englis, $Maths)
{
$this->str_Name=$Name;
$this->str_Sex =$Sex;
$this->int_Id =$Id;
$this->int_Englis=$English;
$this->int_Maths=$Maths;
}
现在我们再定义一个叫“ShowInfo()”的函数,用于打印学生的基本情况:
function ShowInfo() //定义ShowInfo()函数
{
echo (“姓名:$this->str_Name

”);
echo (“性别:$this->str_Sex

”);
echo (“学号:$this->int_Id

”);
echo (“英语成绩:$this->int_English

”);
echo (“数学成绩:$this->int_Maths

”);
}
而定义好的类则必须使用new关键词来生成对象:
$A_student=new Student;
例如我们要为一个名为$Wing的对象创建实例,并进行赋值,可以使用下面的代码:
$Wing =new Student; //用new关键词来生成对象
$Wing ->Input (“Wing”,”男”,33,95,87);
//分别输入Wing的姓名、性别、学号、英语成绩、数学成绩,其中姓名和性别是字符型变量,所以需要用双引号,其它为数值型变量则不需要 。
通过下面这段完整的源代码,我们就可以很清楚的看到类在PHP是怎么被运用的:
<?php
class Student
{
var $str_Name;
var $str_Sex;
var $int_Id;
var $int_English;
var $int_maths;
function Input ( $Name, $Sex, $Id, $English, $Maths)
{
$this->str_Name=$Name;
$this->str_Sex =$Sex;
$this->int_Id =$Id;
$this->int_English=$English;
$this->int_Maths=$Maths;
}
function ShowInfo()
{
echo (“姓名:$this->str_Name

”);
echo (“性别:$this->str_Sex

”);
echo (“学号:$this->int_Id

”);
echo (“英语成绩:$this->int_English

”);
echo (“数学成绩:$this->int_Maths

”);
}
}
$Wing = new Student;
$Wing->Input (“Wing”,”男”,33,95,87);
$Paladin = new Student;
$Paladin->Input (“paladin”,”女”,38,58,59.5);
$Wing->ShowInfo();
$Paladin->ShowInfo();
?>
执行结果应是这样的:
姓名:Wing
性别:男
学号:33
英语成绩:95
数学成绩:87
姓名:Paladin
性别:女
学号:38
英语成绩:58
数学成绩:59.5
PHP现有的版本较以前的版本在对面向对象编程的支持方面有了很大的改善,但支持的还不是很完整,不过现阶段PHP对面向对象编程语言提供的支持不但有利于我们设计程序的结构,对于对程序的维护也能提供很大的帮助 。
面向对象的基本概念及其理解 应该如何论述 求解
面向对象技术是目前流行的系统设计开发技术,它包括面向对象和面向对象程序设计 。面向对象程序设计技术的提出,主要是为了解决传统程序设计方法——结构化程序设计所不能解决的代码重用问题 。
面向对象的编程方法具有四个基本特征:
1.抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面 。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节 。比如,我们要设计一个学生成绩管理系统,考察学生这个对象时,我们只关心他的班级、学号、成绩等,而不用去关心他的身高、体重这些信息 。抽象包括两个方面,一是过程抽象,二是数据抽象 。过程抽象是指任何一个明确定义功能的操作都可被使用者看作单个的实体看待,尽管这个操作实际上可能由一系列更低级的操作来完成 。数据抽象定义了数据类型和施加于该类型对象上的操作,并限定了对象的值只能通过使用这些操作修改和观察 。
2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法 。对象的一个新类可以从现有的类中派生,这个过程称为类继承 。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类) 。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要 。这也体现了大自然中一般与特殊的关系 。继承性很好的解决了软件的可重用性问题 。比如说,所有的Windows应用程序都有一个窗口,它们可以看作都是从一个窗口类派生出来的 。但是有的应用程序用于文字处理,有的应用程序用于绘图,这是由于派生出了不同的子类,各个子类添加了不同的特性 。
3.封装:
封装是面向对象的特征之一,是对象和类概念的主要特性 。封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面 。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象 。一旦定义了一个对象的特性,则有必要决定这些特性的可见性,即哪些特性对外部世界是可见的,哪些特性用于表示内部状态 。在这个阶段定义对象的接口 。通常,应禁止直接访问一个对象的实际表示,而应通过操作接口访问对象,这称为信息隐藏 。事实上,信息隐藏是用户对封装性的认识,封装则为信息隐藏提供支持 。封装保证了模块具有较好的独立性,使得程序维护修改较为容易 。对应用程序的修改仅限于类的内部,因而可以将应用程序修改带来的影响减少到最低限度 。
4. 多态性:
多态性是指允许不同类的对象对同一消息作出响应 。比如同样的加法,把两个时间加在一起和把两个整数加在一起肯定完全不同 。又比如,同样的选择编辑-粘贴操作,在字处理程序和绘图程序中有不同的效果 。多态性包括参数化多态性和包含多态性 。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题 。
面向对象程序设计具有许多优点:
1、开发时间短,效率高,可靠性高,所开发的程序更强壮 。由于面向对象编程的可重用性,可以在应用程序中大量采用成熟的类库,从而缩短了开发时间 。
2、应用程序更易于维护、更新和升级 。继承和封装使得应用程序的修改带来的影响更加局部化 。