《面向对象分析与设计》复习提要软件学院2010.12.25.第一部分面向对象技术的基本概念和基本方法1.1软件开发方法的发展计算机诞生之后,计算机技术一直处于高速发展状态,计算机科学技术的发展由原来只依靠硬件的发展逐渐变为更多地依靠软件的发展。事实上,软件技术的发展经历了多代历程。第一代(20世纪50-60年代),是以FORTRAN和ALGOL等编程语言为标志的算法技术时代。那时,程序设计全靠人们发挥创造才能,全靠技巧和窍门。基于这种算法技术的软件生产率非常低,程序很难看懂,甚至程序员自己写的程序过一段时间后自己也看不懂,这给软件的修改、维护带来极大的困难。于是60年代末出现了“软件危机”。第二代(20世纪70年代末开始到80年代盛行的),以PASCAL、COBOL等编程语言和关系数据库管理系统为标志的结构化系统分析和设计技术。为了克服软件危机,人们主要从如下两个方向做了努力:一是从管理的角度改进软件开发方法,提出了软件工程方法,大大改善了软件的质量与可维护性。二是侧重于对软件开发过程中分析与设计方法的研究和改进。这方面的重要成果就是在70年代出现了风靡一时的结构化开发方法—结构化系统分析和设计技术。。为了改进基于算法技术的软件开发方法,人们提出了软件工程方法,使软件开发工作从只考虑程序的编写技巧转变到利用软件工程的方法,使软件系统的生产过程遵循一系列的规范化步骤:计划→需求分析→设计→编码→测试→运行维护每个阶段都有其明确的任务,任务完成后都将交付给下一阶段一定规格的文档,作为下一阶段开发的依据。这种开发过程直观上就像一级一级的瀑布,所以系统开发生命周期也称为“瀑布模型”。软件工程方法大大改善了软件的质量与可维护性。•瀑布模型的缺点:1)在项目各个阶段之间极少有反馈。只有在项目生命周期的后期才能看到结果。2)由于软件开发过程是一个非常复杂的过程,在软件开发的每一阶段都有可能留下隐患和错误,如果等到系统已经开发完毕,在测试阶段发现了重大问题,这时的返工就会造成人力、物力、财力及时间上的巨大浪费。当软件需求不明确或不准确时容易出现问题。其他模型:原型模型增量模型螺旋模型。第三代(80年代开始至今还盛行的)以Smalltalk、C++等为代表的面向对象软件开发方法(OO)。(问题1:面向对象软件开发方法发展的动因是什么?)传统的结构化程序设计以算法为核心,把本来密切相关的数据和对数据的操作分离开来,很难保持数据和操作的一致性,其软件开发方法也不符合人们的自然思维习惯,设计出来的软件系统其解空间与问题空间不一致,致使程序难以理解、修改和扩充,最终导致程序复杂性问题和软件危机。为了超越程序复杂性障碍,克服软件危机,人们提出了面向对象软件开发方法。(问题2:面向对象软件开发方法的优点有哪些?)面向对象开发方法一改过去传统的以功能分析和功能分解为基础的面向过程的结构化分析与设计方法,面向对象开发方法模拟人们理解和处理客观世界的方式来分析问题,把系统视为一系列对象的集合,其面向对象的设计又将分析的结果映射到某种面向对象实现工具的结构上,使映射过程有着比较直接的对应关系,使分析者、设计者和编程者都可使用相同的概念,从而使面向对象的软件开发能比较自然地模拟客观世界的活动,使问题描述空间与解空间在结构上尽可能一致。因此,采用面向对象方法可以更有效地开发大型软件系统。面向对象方法的封装、继承、多态等机制不仅支持软件复用,而且使软件维护工作可靠有效,可实现软件系统的柔性制造,更好地克服软件危机。因此,它已成为成熟的广为采用的软件开发方法。到20世纪末,面向对象软件工程逐渐发展成熟,特别是统一建模语言(UML)标准的形成和广泛使用,使面向对象软件开发方法已成为软件开发的主流技术。1.2面向对象的基本概念(1)对象:对象是客观实体的抽象表示,是由描述对象的属性数据和对这些数据进行的操作行为两部分组成。(2)类类是具有相同属性和行为的对象集合的抽象描述;类的内部包括属性和行为两个主要部分。(3)实例:类是对具有相同属性和行为的一组对象的抽象描述。因此,类可作为一种用户自...