(一)过程性编程和面向对象的编程
OOP,也就是面向对象的编程,与传统的面向过程的编程的差异是明显的,面向过程的编程,我们在意的是目标的实现过程,是算法,我们首先考虑要遵循的步骤,然后考虑要使用的数据。而面向对象的编程,我们在意的是数据,数据本身就带有处理方法,我们设计包括两个方面,一是描述对象的数据,二是我们对数据操作的接口。
面向对象的特征有如下几个方面:抽象;封装和数据隐藏;多态;继承;代码的可重用性。
使用OOP时,应该从用户角度来考虑对象,也就是:描述对象所需的数据,以及用户与数据交互所需的操作,也就是包括两部分:一是需要考虑数据占内存大小以及如何表示这些数据,二是对数据进行操作。
OOP面向对象的意义,世界是由一个个对象来构成,这些对象相互之间是有联系的,联系是通过接口来实现的。对象的某些功能,内部的实现我们不去考虑,因为过于复杂,我们只是抽象出了我们与对象或对象与对象之间的接口,通过这些接口实现交互作用,而不是直接关心对象内部的过程。比如我只是呼喊我的宠物的名字,它就会跑到我的身边,这里,名字就是宠物与我的接口,我只需要使用他就可以了,而不必考虑宠物是如何通过将声波转变为神经信号,怎样处理记忆,怎样控制肌肉收缩,怎样越过障碍等等。当然,如果我是上帝,是创造出生物的存在,那么这些细节是要考虑的,如同我们程序员需要做的一样,但当我们完成创造,留出接口的时候,那么别人再来使用或对象本身直接交互的时候,便可以不去涉及这些只有造物主才在意的细节。这就是面向对象的编程,我们是造物主,我们编的程序便是这个世界。
我们不考虑对象的细节,而只是考虑对象能与外界进行的交互:构成对象的数据描述了完整的对象,但只有能与外界交互的数据才是对象的参数;而对对象的操作是通过调用对象的方法来实现的,这也是一种交互。也就是说对象是通过接口交互来作用的,至于对象内部的特征则被封装了起来,我们是不可以直接知道的。