面向过程与面向对象

━╅点滴╆━ | 2007-03-02 07:19:00 | 阅读 4158 次 | 评论(0)
先说一下面向过程和面向对象,这是两种思想,它们都能达到用程序来完成一件事情的能力。
只不过思维方式不一样而已。

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

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

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

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

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

函数一()
{
……;
}

函数二()
{
……;
}

……

主函数()
{
……;
}




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

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.玩游戏();
}



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

说了这么多,自己感觉还是没说明白,真有点只可意味不可言传的感觉。
其实要是书看的多了,真正认真地写上几个东西,就能够理解了,无形之中就会有感觉的。
文章评论,共0条
游客请输入验证码
浏览331860次