怎么义结金兰:什么叫面相对象?

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 19:22:12

先说一下面向过程和面向对象,这是两种思想,它们都能达到用程序来完成一件事情的能力。
只不过思维方式不一样而已。

面向过程是把一件事一项工程分解成为一个个小的功能,用一个个函数来实现.
面向对象是把事情看成是一个个小的对象组成的,或者说一个个小部分组成的,这些对象之间的相互关系,构成了整个项目.

在面向对象的思想中,万物皆对象,我是,你是,他也是。
而"类",就是对象的抽象或者说是概括。比如,我你他都可以概括为人类。
总的来说,类是抽象的虚的,而对象是一个个活生生的具体的事物。
人是一个类,我你他就是对象。

一般的面向对象程序设计方法都是先设计一个类,然后由这个类产生一个对象。
之后是对这个对象进行相关操作。
要说明一点:操作是对对象进行的,没有对象就无所谓操作。

下面说说如何设计一个类,
类是有一些属性和功能封装起来的。

在面向过程的思想里,一个程序一般都是由一个个函数组成的,这些函数之间相互调用,
就形成了一个完整的程序,解决了一个问题。它的基本结构是:

函数一()
{
……;
}

函数二()
{
……;
}

……

主函数ǎ?
{
……;
}

但是在面向对象的思想中,是把这些都封装起来,形成一个类。

class 类名
{
函数一()
{
……;
}

函数二()
{
……;
}

……
}

然后由这个类产生一个对象,比如:我们把一个类的类名起为 student
那么产生对象的方法就是: student s1;
这里s1是一个对象,产生了这个对象以后,才可以进行相关操作。
操作方法如: s1.函数一();
等等。具体的细节在此就不说了,此文只说思想。

说得再明白一点就是,把具体的实现过程放在类里面,之后产生一个对象,有对象调用相关操作。
犹如把面向过程里的函数都封装进了类里,然后再由对象来操作。

一个类主要就是封装,一般把它当成一个模块,在需要的时候可以让其他类调用。
类是一个抽象,一个概括,把一些有共同特征的东西抽象化,提出它们的公共部分,封装在一起。
关于封装,上文已经说过,就是把一些属性和功能装在一个容器里面。
下面我用一个游戏来解说一下:

假设我们要做一个小游戏,类似于网游里面的打怪,为简单起见,认为怪不打人,只让人打,
他的血不断减少,直到死亡。

把所有怪物的共同特征抽象出来,于是我们得到一个类:怪物
class 怪物
{
char 怪物名;
int 血;

怪物(怪物名n,血n) /*构造函数*/
{
怪物名=怪物名n;
血=血n;
}

被打函数()
{
血减少;
}

判断函数()
{
if (血==0)
printf("你胜利了!");
}

玩游戏()
{
while (血 > 0)
{
被打函数();
判断函数();
}
}
}

这样,就定义了一个怪物类,他有属性:怪物名、血,有功能:构造、被打、判断
根据这个,就可以产生对象了。

一个类可以产生任意多的对象,这些对象根据构造函数的不同来区别。

我们先继续来写我们的程序
main主函数
void main()
{
/******产生对象******/
怪物 怪物1("狼",5000);
怪物 怪物2("虎",8000);
怪物 怪物3("蛇",3000);

/**有了几个对象以后才能开始我们的游戏**/
怪物1.玩游戏();
怪物2.玩游戏();
怪物3.玩游戏();
}

再这个主函数中,我们建立了三个对象,它们共用一个类。
可以看到,类相当于一个组件,一个模块,我们在需要的时候只要建立它的对象,就能实现他所封装的功
能。
这就是面向对象的优点,可以重用,不必每一次用到时都重写。

说了这么多,自己感觉还是没说明白,真有点只可意味不可言传的感觉。
其实要是书看的多了,真正认真地写上几个东西,就能够理解了,无形之中就会有感觉的。

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<br>
”);
echo (“性别:$this->str_Sex <br>
”);
echo (“学号:$this->int_Id <br>
”);
echo (“英语成绩:$this->int_English <br>
”);
echo (“数学成绩:$this->int_Maths <br>
”);
}

而定义好的类则必须使用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<br>
”);
echo (“性别:$this->str_Sex <br>
”);
echo (“学号:$this->int_Id <br>
”);
echo (“英语成绩:$this->int_English <br>
”);
echo (“数学成绩:$this->int_Maths <br>
”);
}
}

$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对面向对象编程语言提供的支持不但有利于我们设计程序的结构,对于对程序的维护也能提供很大的帮助。

很简单就是你把解决问题用的方法,属性,工具...都想好了,写好了放的一个容器内(类).然后当然一个容器(类)怎么行呢?于是你为了解决问题就想出了好多的容器(类),最后你就把这些容器(类)放到你的百宝箱里(程序).提着你的百宝箱到"问题"面前,你呀不服是不??用你的百宝箱砸它.

就是将许多具有相同的属性的东西抽象出来,然后再将它们通过实例化应用到具体的实体中.