摘要
通过本章的学习,读者应对“面向对象”的程序设计有一个整体的熟悉,理解一些相关的术语,为学习Java语言编程打下基础。
--------------------------------------------------------------------------------
本章目标:
通过本章的学习,读者应对“面向对象”的程序设计有一个整体的熟悉,理解一些相关的术语,为学习Java语言编程打下基础。
2.1 什么是面向对象的程序设计
最早的程序设计工作,是直接使用机器码进行编程的,要利用计算机完成一件事,就得画上无数个0和1,编程不仅需要知识,还需要足够的耐心。第一代程序员们都是这样完成程序编写的,程序出错时,就不得不在众多的0与1之间寻寻觅觅,真的就象是在找虫子呀(Bug,表示错误)。这样的工作方法不仅需要花费大量的时间,还得付出不菲的金钱,不过这对于当时天价的计算机来说,是微不足道的。
随着计算机应用的不断增多,软件开发任务也与日俱增。这时直接使用机器码来编程已经无法应付需要。这时汇编语言诞生了,它使用一些类似MOV、ADD、SUB等助记符来代替一长串0和1。我们先使用这样的语言写出源程序,再用汇编程序将它们翻译成为机器可以运行的机器码,这样使得软件开发变得更简单一些了。
人类总是“发明工具”、“使用工具”、“完善工具”、“再使用”、“再完善”,循序渐进,不断地向前发展。使用汇编语言提高了软件开发的效率,但人类并未满足,又在汇编语言的基础上发展了更贴近人类语言的高级语言,如BASIC、Fortran、Cobol、C等。
在高级语言出现时,计算机已经逐渐普通,正在以“摩尔定律”高速发展(计算速度越来越快,价钱越来越低),计算机的价格已不再是制约计算机应用的要害因素。人类需要大量的计算机软件来提高计算机的应用水平。而在这个时代,计算机硬件已经进入了有序、产业化的发展,但计算机软件却曾一度陷入失控的状态。如何让计算机软件更加可控制,可治理成为了一个十分重要的课题。
小知识:
在这个时代曾经暴发了一场“软件危机”,许多重要的软件项目都陷入失控的状态,如何使得软件项目胜利的完成,成为整个产业最为头痛的一个问题。曾经有一本闻名的书籍《神秘的人月》将这描写成为:“失控的软件项目就象陷入泥潭的骆驼,越挣扎就陷得越深”。有爱好的读者可以阅读一些相关的书籍。
这一切“创就”了一门新的学科:《软件工程学》,将软件开发工作分成了“系统分析”、“设计”、“编程”、“测试”、“维护”等几个组成部分,一改以往“软件开发就是写程序”的熟悉。原来,软件开发工作就是充分发挥程序员的聪明才智解决问题,正如一句俗话所说的:“不管黑猫白猫,能逮着老鼠就是好猫”,在软件开发中,曾经奉行着一句矢志不渝的真理“只要能够解决问题的程序就是好程序”。这样,写出来的程序别说别人看不懂,有时连自己一段时间后都看不懂自己的程序了。试想,这样如何能够集众人力量共同完成一个软件项目呢,如何能够对一个软件项目提供有效的维护呢?
通过了一段时间的摸索后,就形成了一套大家都很熟悉的面向过程的“结构化”软件方法学,包括结构化设计、结构化编程等软件开发方法学。假如大家在阅读这本书之前,有一些程序设计的经验的话,对这个应该还是有一些了解的。为了能够让大家理解“结构化”编程与我们在这里要说明的“面向对象”的程序设计的区别,在此我就用“伪代码”写一段程序(在本例中,我主要是用于讲解语法,而不考虑本程序是否有现实作用)。
伪代码:
伪代码,是指不能够直接编译运行的程序代码,它是用于语法结构讲解的一个工具,它比真正的程序代码更简明,更贴近自然语言。
源程序:一个“结构化”程序示例:
铅笔数=5
钢笔数=6
圆珠笔数=4
其它笔数=7
……
// 销售程序段
铅笔数=铅笔数-1 // 卖出了1支铅笔
其它笔数=其它笔数-2 // 卖出了2支其它笔
// 采购程序段
钢笔数=钢笔数+20 // 新进了20支钢笔
圆珠笔数=圆珠笔数+10 // 新进了10支圆珠笔
……
正如上面的程序段所示,在结构化的程序我们通常是:
1) 定义变量及其初始值;
2) 根据事件发展顺序,进行相对应的处理。
在上面的程序中,我们先定义了各种笔的初始总数,然后这些数量会在销售、采购时改变。这种程序的编写思路是随着事件,按照一定的过程来进行的。这种方法是一种“解题”的思维方式,把所有的需求,当作一个“应用题”一样来“解答”。
可以看出,从机器语言、汇编语言到高级语言,程序设计越来越贴近人类的语言,但是它们又都有一个通病,就是它们都需要程序使用机器的思路,而不是人的思路,为什么这么说呢?那么人的思路是什么呢??
人类熟悉世界的思路总是针对一个个具体的客观事物来熟悉,包括它的外形、大小等属性,以及行为、功能、动作等。就象一说到猫,就马上知道它是4只脚的、“喵喵”叫的,而且猫的行为动作大家也很熟悉,比如,我们说“猫抓老鼠”,大家应该马上就会在脑海中出现一个相应的图象吧。
这时,人们忽然发现,假如编写程序也采用这样的思维的话,那么将使得程序更加清楚,写起程序来也会变得更加简单了。软件工程学家便开始了坚持不懈的研究,终于创建了“面向对象”方法学,这一方法学的出现,使得软件工程又向前迈了一大步了。“面向对象”方法学其实包括:“面向对象的系统分析”、“面向对象的系统设计”、“面向对象的程序设计”……,而在本章中则主要探讨“面向对象的程序设计”。
一些提示:
熟悉Visaul Basic的读者,您应该记得在使用VB开发程序时,大家将一个个控件拖到界面上,然后修改它们的属性,使它们符合程序的需要,接着在这个控件的相应事件中填入代码。