C++面向对象程序设计练习题及答案.doc
第一章习题答案
1.什么是结构化程序设计方法?这种方法有哪些优点和缺点?
【解答】结构化程序设计方法是指20世纪60年代开始出现的高级语言程序设计方法,由于采用了数据结构化、语句结构化、数据抽象和过程抽象等概念,使程序设计在符合客观事物与逻辑的基础上更进了一步。结构化程序设计的思路是:自顶向下、逐步求精。程序结构由具有一定功能的若干独立的基本模块(单元)组成,各模块之间形成一个树状结构,模块之间的关系比较简单,其功能相对独立,模块化通过子程序的方式实现。结构化程序设计方法使高级语言程序设计开始变得普及,并促进了计算机技术的深入应用。
优点:结构化程序设计方法采用了功能抽象、模块分解与组合,以及自顶向下、逐步求精的方法,能有效地将各种复杂的任务分解为一系列相对容易实现的子任务,有利于软件开发和维护;
缺点:结构化程序设计存在的主要问题是,程序的数据和对数据的操作相互分离,若数据结构改变,程序的大部分甚至所有相关的处理过程都要进行修改。因此,对于开发大型程序具有一定的难度,软件的可重用性差,维护工作量大,不完全符合人类认识世界的客观规律。
什么面向对象程序设计方法?有哪些优点?
【解答】面向对象程序设计方法采用与客观世界相一致的方法设计软件,其设计方法是模拟人类习惯的思维方式,使软件开发的方法与过程尽可能接近人类认识世界、解决问题的方法与过程,从而使描述问题的问题空间(即问题域)与实现解法的解空间(即求解域)在结构上尽可能一致。是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。
优点:面向对象程序设计方法使得开发的软件产品易重用、易修改、易测试、易维护、易扩充,降低了软件开发的复杂度。达到了软件工程的3个主要目标:重用性、灵活性和扩展性。适合大型的、复杂的软件开发。
3.面向对象与面向过程程序设计有哪些不同点?
【解答】面向过程的程序设计方法将客观事物中本质上密切相关、相互依赖的数据和对数据的操作相互分离,这种实质上的依赖与形式上的分离使得大型程序既难以编写,也难以调试、修改和维护,代码的可重用性和共享性差。
而面向对象程序设计方法是一种以对象为基础,以事件或消息来驱动对象执行相应处理的程序设计方法。它将数据及对数据的操作封装在一起,作为一个相互依存、不可分离的整体——对象;它采用数据抽象和信息隐蔽技术,将这个整体抽象成一种新的数据类型——类。类中的大多数数据,只能通过本类方法进行操作和处理。面向对象程序设计以数据为中心而不是以功能为中心来描述系统,因而非常适合于大型应用程序与系统程序的开发。
在程序结构上,面向对象程序与面向过程程序也有很大的不同。面向过程的程序主要由顺序结构、选择结构和循环结构组成,程序的基本单位是函数,程序的执行顺序也是确定的。而面向对象程序由类的定义和类的使用两部分组成,程序的基本单位是类,在主程序内定义对象,并确定对象之间消息的传递规律,程序中的所有操作都是通过向对象发送消息来实现的,对象接到消息后,通过消息处理函数完成相应的操作。
4.面向对象程序设计有哪些重要特征?
【解答】面向对象程序设计的基本特征主要有抽象性、封装性、继承性和多态性。
抽象性:面向对象程序设计的基本要素是抽象。抽象就是从众多事物中抽取出共同的、本质的特征,形成类。在面向对象程序设计中,抽象包含两个方面:数据抽象和过程抽象。数据抽象是针对对象的属性,实现数据封装,在类外不可能被访问;过程抽象是针对对象的行为特征,实现信息隐藏。
封装性:封装是面向对象程序设计方法的一个重要特征,它是将对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。封装有两个含义:一是把对象的全部属性和行为结合在一起,形成一个不可分割的独立单位。对象的属性值(除了公有的属性值)只能由这个对象的行为来读取和修改;二是尽可能隐蔽对象的内部细节,对外形成一道屏障,与外部的联系只能通过外部接口实现。
继承性:继承是面向对象程序设计方法的一个重要特征,是实现软件复用的一个重要手段。继承反映的是对象之间的相互关系,它允许一个新类从现有类派生而出,新类能够继承现有类的属性和行为,并且能够修改或增加新的属性和行为,成为一个功能更强大、更满足应用需求的类。
在软件开发过程中,继承性实现了软件模块的可重用性、独立性,缩短了开发周期,提高了软件开发的效率,同时使软件易于维护和修改。
多态性:是面向对象程序设计的另一个重要的特征对象根据所接收的消息而做出动作。“一个接口,多种形态”,即同一消息为不同的对象接收时可产生完全不同的行为,这种现象称为多态性。
5.什么是面向对象方法的封装性?它有何优缺点?
【解答】封装性指将对象的属性和行为代码封装在对象的内部,形成一个独立的单位,并尽可能隐蔽对象的内部细节。封装性是面向对象方法