1.1.3 程序设计方法
程序设计技术的发展,是一个逐步提高的过程,是一个与实际应用需要互相制约和促进的螺旋式的发展进程。程序设计技术的不断进步,导致了计算机应用水平的飞跃;反之,计算机应用领域的扩展、软件规模和复杂度的提高又促进了程序设计技术的升级。在这个过程中,主要出现了结构化程序设计(SP,Structured Programming)方法和面向对象程序设计(OOP,Object-Oriented Programming)方法。
1.结构化程序设计
高级语言的开发和使用,使计算机的应用进入了一个新时期。20世纪60年代出现的“软件危机”和关于“goto语句应从高级语言中去掉”的讨论,促使人们重视对程序设计方法学的研究。随着一些规模大、复杂度高、使用周期长,以及投入人力、物力较多的大型程序设计任务的提出,程序设计的目标把可靠性、可维护性的要求放在了比高效率更重要的位置上,并促使人们研究程序设计的方法和风格,最终形成了结构化程序设计的基本思想。
结构化程序设计是一种设计程序的技术,主要采用自顶向下、逐步求精的设计方法和单入口、单出口的控制结构。自顶向下、逐步求精的设计方法符合人们解决复杂问题的普遍规则,可以提高软件开发的成功率。由此开发出的程序具有清晰的层次结构,易于阅读理解和修改调试扩充。结构化程序设计只包括顺序、选择和循环3种基本控制结构,并建议程序员不用或少用goto语句。
2.面向对象程序设计
结构化程序设计对于确定的问题来说,无疑是一种很好的方法,但对于千变万化的世界,特别是当今信息化的世界,一个成为产品的程序很难适应形势的变化,因为在程序的设计阶段问题是确定的,其数据结构、数据模型也可以确定,所以设计出的程序使用、操作没有问题,但当表示问题的数据结构发生变化时,程序就可能会出现问题,而维护起来也相当困难。原因就是当初的设计是面向数据进行自顶向下设计的,要修改就需要全部修改。本来客观世界就是由许许多多、各种各样的对象组成的,每个对象都有各自的内部状态(属性)和运动规律(行为方式),不同对象的相互作用和联系构成了各种各样不同的系统,构成了我们所面对的客观世界。如果按照客观世界对象的特点进行程序设计,就会适应形势的发展,这就是自20世纪80年代开始流行,现已广泛应用的面向对象的程序设计方法。
面向对象的程序设计方法吸取了结构化程序设计的基本思想和主要优点,将数据与对数据的操作放在一起作为一个相互依存、不可分割的整体来处理,这个整体称为对象。对象的内部状态(属性)用数据表示,运动规律用所谓的方法(也称成员函数)表示。对象是一个整体,所以我们说把数据隐藏在这个整体中了。对象之间的相互作用通过所谓的消息与对象的对外接口(成员函数的调用形式)实现。这个系统通过不断地向对象发送消息而使对象从初始状态到达终止状态,从而实现了问题的求解。
如果问题的数据结构发生了变化,只要描述问题的对象的对外接口不变,所有涉及这些数据结构的地方都不需要修改,而只需修改对象中的方法就行了。
对象是各种各样的,但总有相似性。例如,一匹白马和一匹黑马是两个对象,但它们都具有马的特性,只是颜色有差异而已。将对象进行抽象、划分便得到了类。类描述了属于该类型的所有对象的性质,包括外部特征和内部实现,实际上是抽象数据类型的具体实现。反之,对象是类的具体实例。
20世纪90年代的程序设计方式,由于有了面向对象程序设计技术的支持,发生了质的变化,未来的软件开发将向着可重用部件的组装方式发展,而可重用部件的存在形式就是类及其派生系统。