一般的,单纯从面向对象编程这方面来说,我们需要先理解对象的概念,以及为什么我们要使用面向对象编程,以及跟传统过程化编程之间的优劣。
对象(object),即将一组数据与这组数据有关操作组装在一起,形成一个实体,这个实体就是对象。
用通俗的话来讲,一个人也可以算是一个对象,这个对象可能包含一些属性(attribute),例如男性女性,这个对象也会有一些功能,例如让一个人去吃饭,他能去吃饭,这就是功能(function)。
我们在编程的时候,尽可能要让代码看起来更有可读性,举例当我们去写一款游戏,我们要创建人类这个类(class)
//以C++为例
class Person
{
//这段代码定义了人这个类
}
我们把人类的属性和功能输入进去
class Person
{
public:
String Name {get; set;}
int Age {get; set;}
void Eat(Food food){/** 吃点东西吧 **/}
privite:
int Height {get; set;}
}
到这时这还只是个类。当类创建完毕以后我们可以实例化这个类
Person p1;
这个实例化出来的实体p1就是一个对象,我们可以去单独改变这单个对象的属性数据或者是调用这个类的功能(或者说方法)
p1.Age = 20;
p1.Eat();
我们还可以创建另一个人
Person p2;
p2.Age = 22;
每一个对象都可以有不一样的属性,但是他们是属于一类的,就好比姚明跟郭敬明虽然身高不同但都是人类一样。
当理解了面向对象编程是为了解决何种问题以后,面向对象的编程将不是一个难题,而是一种更为丰富的编程玩法。
如果把面向对象跟面向过程比较有什么不同呢?
面向过程注重的是每个动作
比如我们来运行一台电脑,那么我们就得打开显示器,让后打开主机,当然前提是你已经插上电源,所以我们就得描述两个过程,然后我们打开电视机,只要按个按钮,这个动作其实和按电脑的显示器是同一个过程,当然我们又得描述这个过程,如果我们用面向过程开发的话,我们就要把开电脑和开电视分开描述,那么按视频按钮就重复了两次
然而我们如果用面向对象思想,把按视频按钮提取出来,然后开主机又是一个类,继承与按视频按钮,那么我们只要一次的描述按视频按钮就可以同时用于开电脑和电视机,原因是我们提取了开视频显示器的本质,所以面向对象就是我们把一件事情按一个一个动作来描述出来,而面向对象则是提取共有性质让后重复利用该类