《C++语言与面向对象的设计》习题及参考解答

2020-06-05 09:12

C++语言与面向对象的设计 第1至13章习题参考答案

习题1参考答案

1 用最简练的语言解释下列词汇在面向对象程序设计中的含义:对象,类,方法,接口,消息,封装,继承,服务

答:对象是客观世界中的实体在计算机中的表示。是一组数据成员和方法成员的封装体。是类类型的实例。

类是一种抽象数据类型。是一组对象共性的描述。

方法是在一个类中定义的过程或函数,实现类的功能的代码。

接口是对象封装体向外部公布的一组具有公有属性的方法。是从对象外部与对象通信的唯一途径。

消息是对象之间的通信机制,对象的客户通过接口方法调用请求对象服务称为消息调用。对象之间通过消息传递,互相协调、配合,共同实现软件系统的整体设计目标。消息的载体是对象提供的公有方法,即对象的接口。

封装有以下两重含义:首先,是指将描述客观实体数据特征的数据和方法特征的代码组织在一起,作为一个整体,并为该整体命名标识,以区别于其它数据和程序代码。其次,通过对该整体内成员的访问属性的规定,使一部分成员的隐藏起来,对于封装体外成为不可见的,同时使另一部分成员对外开放,作为与外部交流的接口。

继承是面向对象程序设计方法中描述的两个类之间一种增量包含关系。这两个类具有一种父子关系,子类通过为父类添加新的成员而创建。继承提供了利用一个类的代码创建新类的重用方法。继承关系也是对客观世界分类层次关系的一种模拟。 服务即对象通过公有方法向外部提供功能。

1. 2 试列举过程化、模块化、结构化等程序设计方法的主要特点。面向对象程序设计是如何包容和吸收其它几种程序设计方法的有用成分的。

答:过程化程序设计方法以过程或函数作为程序的基本构造单位。侧重于算法表达和过程间参数传递的组织。

模块化程序设计方法以独立编译的源程序模块作为大型应用程序的基本组织单位。注重于应用程序的开发管理。包括系统开发的任务分解、模块间通信管理、可重用代码库的组织、由不同语言生成的目标模块的连接等方面。

结构化等程序设计方法以单入口单出口的可嵌套基本控制结构作为程序构造单位。提倡自顶向下的分析和自底向上的设计相结合的软件系统构造方法。重点关注程序结构清晰,以获得程序的可理解性和可维护性。

面向对象程序设计方法包容了以上三种方法的所有积极成分。对象中包含的方法实际上就是过程或函数,方法的参数传递与过程或函数的传递都是利用堆栈进行的。在方法的实现时仍然用单入口单出口的基本控制结构编程。系统构造仍然使用自顶向下的分析和自底向上的设计过程。并用模块化方法管理整个系统的开发,整个软件系统由若干独立编译的源程序文件组成。面向对象方法对于以前程序设计方法的质的跃变在于将中算法与数据结构的多对多依赖变成了相互间的单一依赖关系。

1. 3面向对象程序设计方法成功地取代其它程序设计方法在程序设计领域的主导地位有哪些根本原

1

因?

答:面向对象程序设计方法成功地取代其它程序设计方法的主要原因是(1)计算机软硬件技术的超高速发展,促进了计算机应用领域的迅速扩展,带来了大规模复杂系统的开发需求。 (2) 程序设计方法研究中不断提高的数据抽象技术为复杂系统的开发带来了更有效、更能自然表示问题世界的系统构造模型。(3) 硬件设备的性能提高,足以支付新方法的存储空间冗余和时间开销的代价。 1. 4 有人说对象是一个“黑盒子”,应该怎样看待这种说法?

答:对象是一个“黑盒子”,这种说法是一个很贴切的比喻。所谓“黑盒子”,是指从用户的观点来看一个器件或产品时,并不关心其内部构造和原理,而只关心它的功能及如何使用这些功能。对象的封装性使对象的属性及功能的具体实现代码对于对象的客户是不可见的。客户只能通过接口方法使用对象功能。

1. 5 试分析“对象与其所属的应用程序”和“对象与其所属的类”这两种关系的区别。

答:对象与其所属的应用程序的关系是个别和整体的关系,对象与其所属的类的关系是具体实例和它所对应的抽象概念的关系,二者不可混为一谈。

1. 6试归纳总结子程序、过程、函数、方法、对象接口等概念的共同点及各自的特点。

答:它们都是实现程序功能的代码块。子程序相对主程序而言,过程则关注本身的整体性。有时过程也特指无返回值的子程序。函数是有返回值的子程序,而且函数与数学中的函数概念一致,函数返回值与输入参数是“一一对应”或“一多对应”关系。函数的返回值与子程序的输出参数的概念是有区别的,一个函数只能有一个返回值而一个子程序可能有多个输出参数。方法特指对象封装体中的过程或函数。对象接口是对象的公有方法。

1. 7在一个医院里有医务人员、管理人员、后勤人员、临时工等人员。医务人员又分为医生、护士、化验员、药剂师。医生又有内科、外科、五官科、神经科之分。管理人员又分属为行政管理、设备管理、药品管理、财务管理等部门。请用面向对象的观点对上述信息进行分析,指出哪些是类,哪些是对象,并说明类与类之间存在的继承关系。若要根据上面的简要描述设计计算机医院人事管理系统,请画图表示上述人事关系。

答:题目中提到的都是类,没有一个是类的实例,所以没有一个是对象。其中医务人员是基类,医生、护士、化验员、药剂师是它的四个子类,而内科医生、外科医生、五官科医生、神经科医生又是医生的子类。另外管理人员是行政管理人员、设备管理人员、药品管理人员、财务管理人员等子类的基类。

2

习题2参考答案

2.1 C++与C语言的关系如何? 它们的本质区别是什么?

答:C++由C语言继承而来,并在C语言的基础上增加了对面向对象程序设计的支持,是传统的结构化程序设计方法和面向对象程序设计方法的结合。C++保留了C语言的全部精华、与C语言兼容,又比C语言更适宜于管理大型、复杂的程序。二者的本质区别是:C是面向过程的语言,而C++是面向对象的语言。C是战术语言,而C++是战略语言。 2.2 以下单词哪些是C++合法的标识符?

public array[I] x3.5 3rd get_name π num1 _sot hi! x-y what? _for

答:合法的标识符为:get_name、num1、_sot、_for。 2.3 保留字与一般标识符有什么不同?

答:

保留字又称关键字,是系统已预先定义的一些单词。这些单词虽然符合标识符的命名规则,但由于已经被C++语言预先赋予了特定的含义,因而不能被程序员用作一般的标识符来定义和使用。 2.4 文件包含命令的形式如何?有什么作用?

答: 文件包含命令的作用是让编译预处理器将指定文件的全部内容插入到当前源文件的该命令行处。它有两种形式:#include <文件名>和#include \文件名\。二者的区别在于,前者主要用于嵌入系统提供的头文件(一般存于C++系统所在目录的INCLUDE子目录下),后者主要用于嵌入用户自己定义的文件。对于前者,C++预处理器将在INCLUDE目录下搜索指定的头文件; 对于后者,C++预处理器先在当前目录中搜索指定文件,若找不到再到INCLUDE目录下去搜索。 2.5 什么叫源程序?C++程序在计算机上是如何实现的?

答:用C++等高级语言编写的程序称为源程序。源程序是不能被计算机直接识别和执行的。C++程序在计算机上的实现包括编辑、编译、连接、运行几个步骤。其中编辑是指将源程序由键盘输入并保存,得到源程序文件; 编译是一个翻译过程,将C++源程序翻译成计算机能直接识别的机器语言程

3

序,得到目标文件; 连接程序把各个目标文件和要用到的库文件连接在一起,生成可执行文件,可执行文件是计算机能直接运行的文件。 2.6 什么是空语句?它有什么作用?

答:空语句是只有一个分号的语句。它主要用于语法上需要有一条语句但实际上又没有任何操作可执行的场合。

2.7 什么是C++中的块?主要用于什么地方?

答:块即复合语句或称分程序,是括在一对花括号之间的语句序列,在语法上相当于一条单语句,凡是在单语句可用的地方都可以使用复合语句。复合语句主要用于语法上要求只能有一条语句,但又难以只用一条简单语句表达的情形,如循环语句的循环体等; 或者用于形成局部化的封装体。

2.8 判断下列描述的对与错:(1)C++和C语言都是面向对象的语言。 (2)一个C++源程序可以分别存放在几个源文件中。 (3)C++对标识符内的英文字母是区分大、小写的。 (4)预处理命令是在程序正常编译之后执行的。

(5)一个源程序若通过编译、连接得到了exe文件,执行后就能得到正确的结果。 (6)以下四种写法均是C++合法的注释语句: /* */ //

/* */ */ // /* 答:

(1)错 (2)对 (3)对 (4)错 (5)错 (6)错

2.9分析下面程序的功能。若输入为9和4,写出程序的运行结果。

#include void main()

{ int n1, n2 ;

cout << \ cin >> n1>>n2;

cout <<\

解答:程序的功能为:从键盘接收两个整数,计算输出整数部分它们的平均值的。若输入为9和4,运行结果为:(9 + 4 )/2=6 2.10 编一个小程序,完成小时数向秒数的转换。例如,若输入为2.5(小时),则输出为9000(秒)。 参考程序:#include void main()

{ float hours, seconds;

cout<<\ cin>>hours;

seconds=hours*3600;

cout<<\ }

4

习题3参考答案

3.1 指出下列常量的类型: 34.5L 0x345 89f .7E3 8ul -869

答:各常量的类型依次为:long double、int、float、double、unsigned long int、signed int。

3.2 判断下列描述的对错: (1)C++各基本类型的字宽和所能表示的数的范围在各种计算机上都是相同的。

(2)一个变量可以多次被赋值,所以可同时拥有不同的值。

(3)C++中的变量在使用之前必须先声明,而且必须在程序开头就声明。 (4)不同类型的指针分配到的内存空间的大小是一样的。 (5)将指针加1后,指针指向下一个字节。

(6)字符串\的长度为8,在内存中占据9个字节。

(7)字符串可作为一个整体进行输入、输出,但不能作为整体进行赋值、比较等。 (8)在对数据进行强制类型转换时,可以不遵循隐式转换的原则。

答: (1) 错(2)错(3)错(4)对(5)错(6)错(7)对(8)对

3.3 写一段语句,对如下变量或常量进行声明: (1) double型变量b1和b2,其中b2的初始值为98.3;

(2) int型的符号常量length,其值为5; (3) 字符串变量string,初始化为\ (4) 指向b1的指针b1_ptr ; 答案:(1) double b1 , b2 ( 98.3) ; (2) const int length(5 );

(3) char string[ ] = \ (4) double *b1_ptr = &b1 ;

3.4 在上题的基础上写一段语句完成下列操作:(1)在屏幕上显示string; (2)从键盘接收b1的值;

(3)将b2的值加上b1的值,仍赋给b2; (4)输出b1和b2的值;

(5)将b1_ptr所指单元的内容加1并输出; (1) 答:在屏幕上显示string; (4)输出b1和b2的值; cout << string <

b2 << endl ; (2)从键盘接收b1的值;

cin >> b1; (5)将b1_ptr所指单元的内容加1并输出;

cout << ++*b1_ptr <

b2 = b2 + b1;

3.5 分析下面程序的运行结果并上机验证。 #include double r=0.5; void main() cout<<\ {

const double pi(3.1415926),e(2.7182818); cout<<\

5


《C++语言与面向对象的设计》习题及参考解答.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:回复买家好评模板

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: