当前软件开发领域有两大编程思想,一个是面向过程的编程思想,一个是面向对象的编程思想。依据编程思想的不同,编程语言也分为面向过程的语言和面向对象的语言。Java、NET等是面向对象的语言,C语言、Fortran等是面向过程的语言。
面向过程的编程思想在考虑问题时,是以一个具体的流程为单位,考虑程序的实现方法,关心的是功能的实现。分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
例如设计一个五子棋程序,面向过程的设计思路是首先分析问题的步骤:
1、开始游戏;
2、黑子先走;
3、绘制画面;
4、判断输赢;
5、轮到白子;
6、绘制画面;
7、判断输赢;
8、返回步骤2;
9、输出最后结果。
把上面每个步骤分别用函数来实现,问题就解决了。面向过程的设计思想,每一个环节只关注行为动作和功能实现,没有考虑数据的状态,而且各个行为之间的耦合性比较强,不利于程序的扩展和模块化。
面向对象的编程思想在考虑问题时,以具体的事物(对象)为单位,考虑它的属性(特性)及动作(行为),关注整体,就好比观察一个人一样,不仅要关注他怎样说话,怎样走路,还要关注他的身高、体重、长相等属性特征。
同样是设计五子棋程序,面向对象的设计则是以事物(对象)的思路来解决问题。
整个五子棋可以分为:
1、玩家对象,这两方的行为是一模一样的;
2、棋盘对象,负责绘制画面;
3、控制对象,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(控制对象)来对棋局进行判定。
对象交互图
面向对象的编程思想更加接近于现实的事物,从现实中抽象出的(事物)对象自身是内聚的,对象有自身的数据(属性)和操作(行为),因此面向对象可以更好地实现开闭原则,即程序对外扩展是开放的,对内修改是关闭的,当程序的需求改变时,可以对模块进行扩展,使其具有满足那些改变的新行为,而无需改动原有的代码。
总的说来,面向对象的设计思想有如下特点:
(1)可扩展:新特性能够很容易的添加到现有系统中,不会影响原有的代码。
(2)可修改:当修改某一部分的代码时,不会影响到其它不相关的部分。
(3)可替代:将系统中某部分的代码用其它有相同接口的类替换时,不会影响到现有系统。
面向对象的编程思想是目前应用最广泛的编程思想,使用面向对象的编程思想适用于规模较大的应用程序。Java面向对象的编程思想引入了许多概念和机制,归纳总结为抽象、封装、继承和多态。采用面向对象的编程思想并不是全部弃用面向过程的编程思想,相对而言,面向过程的编程思想面向对象编程的基础,面向对象编程的程序里面一定有面向过程的程序片段。在程序中,面向过程的编程思想,通过方法来实现,面向对象的编程思想通过类来封装方法和数据。