面向对象

面向对象程序设计(P91-92)

面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。从根本上说,只要对象能够满足要求,就不必关心其功能的具体实现过程。在OOP中,不必关心对象的具体实现,只要能满足用户的需求即可。

传统的结构化程序设计通过设计一系列的过程(即算法)来求解问题。一旦确定了这些过程,就要开始考虑存储数据的方式。即算法是第一位,数据结构是第二位。这就明确地表述了程序员的工作方式。首先要确定如何操作数据,然后再决定如何组织数据,以便于数据操作。而OOP却调换了这个次序,将数据放在第一位,然后再考虑操作数据的算法。

对于一些规律较小的问题,将其分解为过程的开发方式比较理想。而面向对象更加适用于解决规模较大的问题。要想实现一个简单的Web浏览器可能需要大约2000个过程,这些过程可能需要对一组全局数据进行操作。采用面向对象的设计风格,可能只需要大约100个类,每个类平均包含20个方法。

我对面向对象的理解

面向对象三大特征,继承、封装、多态。借助Java中的Collection理解。

首先是继承,ArrayList与LinkedList均实现了list接口,因此具有了list接口的方法(如add、indexOf),虽然两个类实现有所不同,但是因为实现自同一个接口,所以实现的功能是一致的。将相同的部分向上抽取,然后由不同的子类去实现,这种设计的好处还要与多态联系起来。

然后是多态。在需要使用ArrayList时,我们倾向于将对象引用声明为list。这便是多态。当以后需要将ArrayList改为其他集合,只要这个集合实现了list,那么便无需大范围修改代码。

最后是封装,ArrayList中的size成员变量,在实际使用时无需设置,只需要查询其值。因此,Java开发人员在设计这个类时,用private修饰size,并且只提供了访问器方法,避免size遭到修改。

我所理解的面向对象,无非就是一套程序设计规范,按照这个规范,可以设计出扩展性、安全性都有不错表现的程序。

Last updated