1.3.1 取代面向过程的面向对象程序设计语言
读者可能接触过传统的程序设计语言,如Fortran和C等。这些语言都属于面向过程的程序设计语言,其编程的主要思路专注于算法的实现。而随着计算机技术的发展,面向过程的语言产生了很多局限性。人们需要一种新的程序设计思想,使得基于该思想开发的应用程序在数据抽象、信息隐藏、关联处理等方面具有良好的特征。这种特征就是原始的面向对象的程序特征。
所有的计算机程序都由两类元素组成:代码和数据。从概念上讲,程序可以以它的代码或是数据为核心进行组织编写。目前有两种不同类型的程序开发方法。第一种方法被称为面向过程的编程(Process-Oriented Programming),用它编写的程序都具有线性执行的特点。面向过程的模型可认为是代码作用于数据,像C这样的过程式语言采用这个模型是相当成功的。然而,当程序变得更大并且更复杂时,就会出现问题。为了管理不断增加的复杂性,第二种方法,也就是面对对象的编程(Object-Oriented Programming)被构思出来了。面对对象的编程围绕它的数据(也就是对象)和为这个数据严格定义的接口来组织程序。面对对象的程序实际上是用数据控制对代码的访问。大量实践表明,将控制的实体变换为数据,会使程序在组织结构上更加优化。
纯粹的面向对象程序设计方法是这样的:
● 所有的东西都是对象。可以将对象想象成为一种新型变量,它保存着数据,而且还可以对自身的数据进行操作。例如类Max中保留着数据的最大值,同时还有方法updateMax根据新加入的price值产生最新的最大值,getMax方法返回数据的最大值。
● 程序是一大堆对象的组合。通过消息传递,各个对象知道自己应该做些什么。如果需要让对象做些事情,则必须向该对象“发送一条消息”。具体来说,可以将消息想象成为一个调用请求,它调用的是从属于目标对象的一个方法。例如上面面向对象的程序段应该是属于某个类的,比如说属于类Shopping,则Shopping中就包含了类Max的对象max,调用方法updateMax就相当于Shopping对象对max对象发出一条指令“updateMax”,要求对象max重新计算最大值。
● 每个对象都有自己的存储空间。一个对象可容纳其他对象,或者说通过封装现有的对象,可以产生新型对象。因此,尽管对象的概念非常简单,但是经过封装以后却可以在程序中达到任意高的复杂程度。
● 每个对象都属于某个类。根据语法,每个对象都是某个“类”的一个“实例”。一个类的最重要的的特征就是“能将什么消息发给它”,也就是类本身有哪些操作。
例如max是类Max的实例。