C++语言与面向对象的设计.docx
《C++语言与面向对象的设计.docx》由会员分享,可在线阅读,更多相关《C++语言与面向对象的设计.docx(105页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+噴言与面向对象的设计第1至13章习题参考答案1. 1用最简练的语言解释下列词汇在面向对象程序设计中的含义:对象,类,方法,接口,消息,封装,继承,服务答:对象是客观世界中的实体在计算机中的表示。是组数据成员和方法成员的封装体。是 类类型的实例。类是种抽象数据类型。是组对象共性的描述。方法是在个类中定义的过程或函数,实现类的功能的代码。接口馭掾封装体向外部公布的组具有公有属性的方法。是从对象外部与对象通信的 唯一途径。消息是对象之间的通信机制,对象的客户通过接口方法调用请求对象服务称为消息调 用。对象之间通过消息传递,互相协调、配合,共同实现软件系统的整体设计目标。消息的 载体是对提供的公有
2、方法,即对象的接口。封装有以两重含义:首先,是指将描述客观实体数据特征的数据和方法特征的代码组 织在起,作为个整体,并为该整体命名标识,以区别于其它数据和科利弋码。其次,通 过对该整体内成员的访问属性的规定,使一部分成员的隐藏起来,对于封装体外成为不可见 的,同时使另 部分成员対外开放,作为与外部交流的接口。继承是面向对象程序设计方法中描述的两个类之间一种增量包含关系。这两个类具有一种 父子关系,子类通过为父类添加新的成员而创建。继承提供了利用个类的代码创建新类的重 用方法。继承关系也是对客观世界分类层次关系的一种模拟。服务即对象通过公有方法向外部提供功能。1. 2试列W程化、模块化、结构化等
3、程序设计方法的主要特点。面向对象程序设计 是如何包容和吸收其它厩限序设计方法的有用成分的。答:过程化程序设计方法以过程或函数作为程序的基本构造单位。侧重于算法表达和过程间参 数传递的组织。模块化程序设计方法以独立编译的源程序模块作为大型应用程序的基本组织单位。注重于 应用程序的开发管理。包括系统开发的任务分解、模块间通信管理、可重用代码库的组织、由 不同语言生成的目标模块的连接等方面。结构化等程序设计方法以单入口单出口的可嵌套基本控制结构作为程序构造单位。提倡 自顶向下的分析和自底向上的设计相结合的软件系统构造方法。有点关注程序结构清晰,以 获得程序的可理解性和可维护性。面向对象程序设计方法包
4、容了以匸种方法的所有积极成分。对象中包含的方法实际上 就是过程或函数,方法的参数传递过程或函数的传递都是利用堆栈进行的。在方法的实现 时仍然用单入口单出口的基本控制结构编程。系统构造仍然使用自顶向下的分析和自底向h的设封过程。并用模块化方法管理整个系统的开发,整个软件系统由若干独立.编译的源程序 文件组成。面向対象方法对于以前程序设计方法的质的跃变在于将中算法与数据结构的多对 多依赖变成了相互间的单一依赖关系。1. 3面向对象程序设计方法成功地取便它程序设计方法程序设计领域的主导地位有哪 些根本原因?答:面向对象程序设计方法成功地取代其它程序设计方法的主要原因是(D计算机软硬件 技术的超高速发
5、展,促进了计财U应用领域的迅速扩展,带来了大规模复杂系统的开发需求。 (2)程序设计方法研究屮不断提髙的数据抽象技术为复杂系统的开发带来了更有效、更能 自然表示问题世界的系统构造模型。(3)硬件设备的性能提高,足以支付新方法的存储空间 冗和时间端的代价。1. 4有人说对象b “黑盒子”,应该怎样看融种说法?答;对象是个“黑盒子”,这种说法是一个很贴切的比喻。所i胃“黑盒子”,是指从用户的 观点来看个器件或产品时,并不关心其内部构造和原理,而只关心它的功能及如何使用这 些功能。对象的封装性使对象的属性及功能的具体实现代码对于对象的客户是不可见的。客 户只能通过接口方法使用对象功能。1. 5试分析
6、“对象与其所属的应用程序”和“对象与其所属的类”这酬关系的区别。答:対象与其所属的应用程序的关系是个别和整体的关系,慘与其所属的类的关系是具体 实例和它所对应的抽象概念的关系,二者不可混为淡。1. 6试归纳总结子程序、过程、函数、方法、对象接口等概念的共同点及各自的特点。答:它们都是实现程序功能的代码块。子程序相对主程序而言,过程则关注本身的整体性。 有时过程也特指无返回值的子程序。函数是有返回值的子程J手,而且函数数学中的函数概 念致,函数返回值与输入参数是“ 对应”或“多对应”关系。函数的返回值与子程 序的输出参数的概念是有区别的,个函数只能有一个返回值而一个子程序可能有多个输出 参数。方
7、法特指对象封装体中的过程或函数。对象接口是对象的公有方法。1. 7在个医院里有医务人员、管理人员、后勤人员、临时等人员。医务人员又分为医 生、护士、例銅、药剂师。医生又有内科、外科、五官科、神经科之分。血人员又分属 为行政管理、设备管理、药品管理、财务管理等部门。请用面向对象的观点对上述信息进行 分析,指出哪些是类,哪些是对象,并说明类与类之间存在的继承关系。若要根据上面的简 要就事!理MgE,嗣上人事。答:题目中提到的都是类,没有一个是类的实例,所以没有一个是对象。其中医务人员是 基类,医生、护上、化验员、药剂师是它的四个子类,而内科医生、外科医生、五官科医2. 1 C+与C语言的关系如何?
8、它们的本质区别是什么?答:C+由C语言继承而来,并在C语言的基础上增加了对面向対象程序设计的支持,是传 统的结构化程序设计方法和面向对象程序设计方法的结合。C+保留了 C语言的全部精华、 与C语言兼容,乂比C语言更适宜于管理大型、复杂的程序。二者的本质区别是:C是面向 过程的语言,而C+是面向对象的语言。C是战术语言,而C+是战略语言。2. 2以下单词哪些是C+合法的标识符?public arrayI x35 3rd get_name nnuml _sothi! x-y what?_fbr答:合法的标识符为:get_name、numl、_sot、_fbr。2. 3保留字与符有什么不同?答:保留
9、字乂称关键字,是系统已预先定义的一些单词。这些单词虽然符合标识符的命名规 则,但由于已经被C+语言预先赋予了特定的含义,因而不能被程序员用作一般的标识符来 定义和使用。2. 4文件包含命令的形式如何?有什么作用?答:文件包含命令的作用是让编译预处理器将指定文件的全部内容插入到当前源文件的该 命令行处。它有两种形式:include文件名和#include文件名。二者的区别在于,前者主 要用于嵌入系统提供的头文件(一般存于C+系统所在目录的!NCLUDE子目录下),后者 主要用:!淑入用户自己定义的文件。对于前者,C+预处理器将在tNCLUDE目录搜索指 定的头文件;对于后者,C+预处理器先在当前
10、目录中搜索指定文件,若找不到再到 INCLUDE目录下去搜索。2. 5什么叫鹼手? C+程序演算机上是如何实现的?答:川C+等高级语言编写的程序称为源程序。源程序是不能被计珈接谢和执行的。 C+程在计算Ml:的实现包括编辑、编译、连接、运行几个步骤。其中编辑是指将源程序 由键盘输入并保存,得至嗨程序文件;编译是个翻译过程,将C+源程序翻译成计算机能 直接识别的机器语言程)芋,得到目标文件;连接程序把各个目标文件和要用到的库文件连接 在一起,生成可执行文件,可执行文件是计算机能宜接运行的文件。2. 6什么是空语句?它有什么作用?答:空语句是只有一个分号的语句。它主要用丁语法上需要有一条语句但实际
11、上又没有任何 操作可执行的场合。2. 7什么是C+中的块?主要用于什么地方?答:块即复合语句或称分程序,是括在对花括号之间的语句序列,在语法上相当于一条单 语句,凡是在单语句可用的地方都可以使用复合语句。复合语句主要用于语法上要求只能有 条语句,但乂难以只用条简单语句表达的情形,如循环语句的循环体等;或者用于形成 局部化的封装体。2. 8判断下列描述的对与错:(1) C+和C语言都是面向对象的语言。(2) 个C+源程序可以分别存放在几个源文件中。(3) C+对标识符内的英文字母是区分大、小写的。(4)预处理命令是在程序正常编译之后执行的。(5) 一个源程序若通过编译、连接得到了 exe文件,执
12、行后就能得到正确的结果。(6)以下四种写法均是C+合法的注释语句:/*/*/*/Z*答:错对对(4)错错(6)错2. 9分析下醃序的功能。若输入为9和4写出程序的运行结果。#includevoid mainOint nl,n2;coutPlease enter two integers:cinnln2;cout( nl + n2 )/2=(nl + n2 )/2endl;解答:程序的功能为:从键盘接收两个整数,计算输出整数部分它们的平均值的。方输入为9 和4,运行结果为:(9 + 4)72=62. 10编个小程序,完成小时数向秒数的转换。例如,若输入为2.5 (小时),则输出为9000 (秒)
13、。参考程序:#includevoid main()(float hours, seconds;coutPlease enter the hour:;cinhours;seconds=hours*3600;coutHThe second is: nsecondsendl;)3. 1指出下列常量的麵:34.5L0x34589f.7E3 8ul -869答:各常量的类型依次为:long double、int、float, double, unsigned long int, signed int3. 2判断F列描述的对错:(1) C+各基本类型的字宽和所能表示的数的范围在各种计算机上都是相同的。(2
14、) 个变量可以多次被赋值,所以可同H寸拥有不同的值。(3) C+中的变量在使用之前必须先声明,而且必须在程序开头就声明。(4)不同类型的指针分配到的内存空间的大小是样的。(5)将指针加1后,指针指向下个字节。(6)字符串 abx43xy”的长度为8,在内存中占据9个字节。(7)字符串可作为个整体进行输入、输出,但不能作为整体进行赋值、匕较等。(8)在对数据进行强制段型转换时,可以不遵循隐式转换的原则。答:(1) 错(2)错(3)错(4)对(5)错(6)错(7)对(8)对3. 3写一段语句,对如下变量或常量进行声明:(1) double型变量bl和b2,其中b2的初始值为98.3;(2) int
15、型的符号常量length,其值为5;(3)字符串变量string,初始化为Please enter bl:(3) 指向bl的指针bl_ptr;答案:(4) double bl ,b2(98.3);(5) const int length(5);(6) char string = Please enter bl:;(7) double *bl_ptr = &bl ;3. 4在上题的基础上写一段语句完成下臊作:(1) 在屏幕上显示string;(2) 从健盘接收bl的值;(3) 将b2的值加上bl的值,仍赋给b2;(4) 输出bl和b2的值;(5) 将bl_ptr所指单元的内容加1并输出;答:(6
16、) 在屏幕 牌示string;cout string endl;(7) 从键盘接收bl的值;cinbl;(8) 将b2的值加上b 1的值,仍赋给b2;b2 = b2 + bl;(9) 输出bl和b2的值;corn bl= bl b2 = b2 endl(10) 将bl_ptr所指单元的内容加1并输出;cout-H-*b 1 _ptr endl;3. 5分析下礎序的运行结果并上机验证。#includevoid main()const double pi(3.1415926),e(2.7182818);double =0.5;cout,(int)pi*r:r=(int)pi*r*rendl;cou
17、tMint(e* 1 (XX)=nint(e* 1000)endl; cout,pi=pin e=e endl;答:(int)pi*r*n=0.75int(e* 1000)=2718pi=3.14159 =2.718284. 1飕能T列问题:(1) 一个表达式中,各运算符的运算次序由什么决定?(2) break语句的作用是什么? continue语句的作用是什么?(3) C+4提供了哪几种循环语句,各有什么特点?答:(1)表达式中各运算符的运算次序取决于它们的优先级和结合性。(2) break语句可用在switch语句或循环语句中,作用是跳出整个switch语句或循环语 句的循环体。conti
18、nue语句用在循环语句中,它的作用是忽略循环体中位于它之后的语句, 重新冋到条件表达式的判断,提前开始次循环。(3) C+提供了三种循环语句:while语句、do_while语句和for语句。while语句的 特点是“先判断,后执行,循环体有可能一次也不被执行。do while语句是“先执行,后 判断”,循环体至少会被执行一次。C+的for语句也属于“先判断,后执行”的循环语句, 与、vhile语句可以相互代替,不过当循环次数确定的时候,用for语句更直观些。4. 2判断下列描述的对错:(1)C+中关系表达式和逻辑表达式的运算结果只有两种可能:零和凄。(2)算术运算符、关系运算符、逻辑运算符的
19、优先级从高到低依次为算术运算符,逻辑运 算符,关系运算符。(3) C+中用while语句书写的循环可以和用do_while语句书写的循环相互.转换。(4) if语句只能处理双分支的情况,不能处理多分支情况。(5) C+中,fbr语句只能用于已知循环次数的情况。(6)只有使用同一种循环语句的循环可以嵌套在起。答:对错 (3)错 (4)错错错4. 3树以下变量声明:int x=3, y=5, z = 0;int *p = &x;char c = *A;float a=3, b=72;(1) !(73=73)(2) (x!=y)ll(cB,)(3) z & y II x y(4) zlly&xy(5
20、 ) 200*x/y(6) double(x)/y+23(7) x/y + 23(8) c + y%x(9) x *= int(b/a) + y(10)c = 2lly%-x0(11) +x y coutxelse cout y;(3) int x=l;while (x+0)cout,*M;(4)下面程序段用于计算23除以5的余数:float x = 23, y = 5, z;z = x % y;cout23 % 5 =11 z endl;(5) int i=0, j=9;fbr(; i+ !=j-;)couthi*;(6)面程序段用于从键盘接收个数,若此数为1,就将x加上10;若此数为2,就
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 语言 面向 对象 设计
限制150内