面向对象程序设计教程答案.docx
- 文档编号:23768564
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:29
- 大小:25.94KB
面向对象程序设计教程答案.docx
《面向对象程序设计教程答案.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计教程答案.docx(29页珍藏版)》请在冰豆网上搜索。
面向对象程序设计教程答案
面向对象程序设计教程(C++语言描述)题解与课程设计指引
第1章
面向对象程序设计概论
一、名词解释
抽象封装消息
【问题解答】
面向对象办法中抽象是指对详细问题(对象)进行概括,抽出一类对象公共性质并加以描述过程。
面向对象办法中封装就是把抽象出来对象属性和行为结合成一种独立单位,并尽量隐蔽对象内部细节。
消息是面向对象程序设计用来描述对象之间通信机制。
一种消息就是一种对象规定另一种对象实行某种操作一种祈求。
二、填空题
(1)当前有面向过程构造化程序设计办法和面向对象程序设计办法两种重要程序设计办法。
(2)构造化程序设计办法中模块由顺序、选取和循环3种基本构造构成。
(3)在构造化程序设计办法中,程序可表达为程序=数据构造+算法;而面向对象程序设计办法,程序可表达为程序=对象+消息。
(4)构造化程序设计办法中基本模块是过程;而面向对象程序设计办法中基本模块是类。
(5)面向对象程序设计办法具备抽象性、封装性、继承性和多态性等特点。
三、选取题(至少选一种,可以多选)
(1)面向对象程序设计着重于(B)设计。
A.对象B.类C.算法D.数据
(2)面向对象程序设计中,把对象属性和行为组织在同一种模块内机制叫做(C)。
A.抽象B.继承C.封装D.多态
(3)在面向对象程序设计中,类通过(D)与外界发生关系。
A.对象B.类C.消息D.接口
(4)面向对象程序设计中,对象与对象之间通信机制是(C)。
A.对象B.类C.消息D.接口
(5)关于C++与C语言关系描述中,(D)是错误。
A.C语言是C++一种子集B.C语言与C++是兼容
C.C++对C语言进行了某些改进D.C++和C语言都是面向对象
【成果分析】
C语言是面向过程。
C++语言是一种通过改进更为优化C语言,是一种混合型语言,既面向过程也面向对象。
(6)面向对象程序设计将数据构造与(A)放在一起,作为一种互相依存、不可分割整体来解决。
A.算法B.信息C.数据隐藏D.数据抽象
(7)下面(A)不是面向对象系统所包括要素。
A.重载B.对象C.类D.继承
【成果分析】
面向对象=对象+类+继承+消息+多态
(8)下面说法对的是(BC)。
A.将数据构造和算法置于同一种函数内,即为数据封装
B.一种类通过继承可以获得另一种类特性
C.面向对象规定程序员集中于事物本质特性,用抽象观点看待程序
D.同一消息为不同对象接受时,产生行为是同样,这称为一致性
【成果分析】
面向对象程序设计办法具备抽象性、封装性、继承性和多态性等特点。
将数据构造和算法置于同一种类内,即为数据封装。
同一消息为不同对象接受时,产生行为也许是不同样,这称为多态性。
(9)下面说法对的是(AD)。
A.对象是计算机内存中一块区域,它可以存储代码和数据
B.对象实际是功能相对独立一段程序
C.各个对象间数据可以共享是对象一大长处
D.在面向对象程序中,对象之间只能通过消息互相通信
【成果分析】
对象是计算机内存中一块区域。
在对象中,不但存有数据,并且存有代码,使得每个对象在功能上互相之间保持相对独立。
对象之间存在各种联系,但它们之间只能通过消息进行通信。
四、判断题
(1)在高档程序设计语言中,普通用类来实现对象,类是具备相似属性和行为一组对象集合,它是创立对象模板。
(√)
(2)C++语言只支持面向对象技术抽象性、封装性、继承性等特性,而不支持多态性。
(×)
【成果分析】
C++语言不但支持面向对象技术抽象性、封装性、继承性等特性,并且支持多态性。
(3)面向对象程序设计中消息应当包括“如何做”信息。
(×)
【成果分析】
消息是面向对象程序设计用来描述对象之间通信机制。
向对象“发送消息”只需告诉对象做什么,对象依照这个消息决定如何做。
(4)一种消息只能产生特定响应效果。
(×)
【成果分析】
当一种对象发出消息时,由于接受对象类型也许不同,因此,它们也许做出不同反映。
这样,一种消息可以产生不同响应效果,这种现象叫做多态。
(5)类设计和类继承机制实现了软件模块可重用性。
(√)
(6)C++语言和Java语言均不是一种纯正面向对象程序设计语言。
(×)
【成果分析】
Java语言是一种纯正面向对象程序设计语言。
(7)学习C++语言是学习面向对象程序设计办法唯一途径。
(×)
【成果分析】
程序设计办法是独立于详细程序设计语言一种技术,学习C++语言是学习面向对象程序设计办法重要途径之一。
(8)在C++语言中,类是支持数据封装工具。
(√)
五、简答题
(1)什么是构造化程序设计办法?
它有哪些长处和缺陷?
【问题解答】
构造化程序设计办法着眼于系统要实现功能,从系统输入输出出发,分析系统要做哪些事情,进而考虑如何做这些事情,自顶向下地对系统功能进行分解,来建立系统功能构造和相应程序模块构造,有效地将一种较复杂程序系统设计任务分解成许多易于控制和解决子任务,便于开发和维护。
随着程序规模与复杂性增长,这种面向过程构造化程序设计办法存在明显局限性之处。
一方面是数据安全性问题。
由于数据被每个模块所共用,因而是不安全,一旦出错,很难查明因素。
另一方面是可维护性及可重用性差。
它把数据构造和算法分离为互相独立实体,一旦数据构造需要变化时,经常要涉及整个程序,修改工作量极大并容易产生新错误。
每一种相对于老问题新办法都要带来额外开销。
此外,图形顾客界面应用程序,很难用过程来描述和实现,开发和维护也都很困难。
(2)什么是面向对象程序设计办法?
它有哪些长处?
【问题解答】
面向对象程序设计办法中,将程序设计为一组互相协作对象而不是一组互相协作函数。
在程序中,属性用数据表达,用来描述对象静态特性;行为用程序代码实现,用来描述对象动态特性。
可见,在面向对象程序设计办法中,对象是数据构造和算法封装体。
对象之间存在各种联系,它们之间通过消息进行通信。
程序可表达为:
程序=对象+消息
在面向对象程序设计中应着重于类设计。
类正是面向对象语言基本程序模块,通过类设计来完毕实体建模任务。
类通过一种简朴外部接口与外界发生关系。
一种类中操作不会解决到另一种类中数据,这样程序模块独立性、数据安全性就有了良好保障。
程序执行取决于事件发生顺序,由顺序产生消息来驱动程序执行。
不必预先拟定消息产生顺序,更符合客观世界实际。
并且面向对象程序设计办法提供了软件重用、解决大问题和复杂问题有效途径,具备抽象性、封装性、继承性和多态性等特点。
(3)构造化程序设计办法与面向对象程序设计办法在对待数据构造和算法关系上有什么不同?
【问题解答】
构造化程序设计办法中,把数据构造和算法分离为互相独立实体;而在面向对象程序设计中,数据构造和算法封装在一起,结合成一种独立单位,即对象,并尽量隐蔽对象内部细节。
对象私有属性只能由这个对象行为来读取和修改,与外部联系通过公有行为充当外部接口。
第
2
章
从C到C++
面向对象程序设计教程(C++语言描述)题解与课程设计指引
第2章
从C到
C++
一、名词解释
引用内联函数重载函数
【问题解答】
所谓引用就是给对象取一种别名,使用该别名可以存取该对象。
换句话说是使新对象和原对象共用一种地址。
内联函数是使用inline核心字声明函数。
重载函数指在同一种作用域内名字相似而参数不同函数。
重载函数通惯用来对具备相似行为而数据类型或数据个数不同操作提供—个通用名称。
二、填空题
(1)普通状况下,用C++语言编写程序是由函数加上类构成。
(2)C++有两种注释符号,一种是//,另一种是/*……*/。
(3)使用C++风格输入输出,在程序中必要包括头文献“iostream”。
(4)cin是预定义原则输入流对象,>>是输入操作符,也称提取运算符。
(5)cout是预定义原则输出流对象,<<是输出操作符,也称插入运算符。
(6)指针值是它所指向那个对象地址值。
指针类型是它所指向对象类型。
指针内容便是它所指向对象值。
(7)C++使用运算符&来定义一种引用,对引用存取都是对它所引用对象存取。
(8)当一种函数调用出当前函数定义之前时,必要先用函数原型对函数进行声明。
(9)C++有值传递和引用传递两种参数传递机制。
(10)使用核心字inline声明函数称为内联函数。
(11)运算符new用于进行动态内存分派,运算符delete用于释放动态分派内存。
(12)下面程序输出成果为x=10,y=10;
x=100,y=100。
#include
usingnamespacestd;
intmain()
{
intx=10,&y=x;
cout<<"x="< int*p=&y; *p=100; cout<<"x="< return0; } 三、选取题(至少选一种,可以多选) (1)在整型指针变量p2、p3定义中,错误是(A)。 A.intp1,*p2,p3;B.int*p2,p1,*p3; C.intp1,*p2=&p1,*p3;D.int*p2,p1,*p3=&p1; 【成果分析】 指针定义详细格式如下所示: <类型>*<指针名1>,*<指针名2>,…; (2)若有定义“doublexx=3.14,*pp=&xx;”,则*pp等价于(C)。 A.&xxB.*xxC.3.14D.xx 【成果分析】 pp指向xx所在内存单元,这样*pp和xx等价。 (3)下面对引用描述中(C)是错误。 A.引用是某个变量或对象别名 B.建立引用时,要对它初始化 C.对引用初始化可以使用任意类型变量 D.引用与其代表对象具备相似地址 【成果分析】 所谓引用就是给对象取一种别名,使用该别名可以存取该对象,因此对引用初始化必要使用同类型变量。 (4)函数没有返回值时候,应当选取(A)函数类型。 A.voidB.intC.不拟定D.float (5)在函数定义格式中,下面各构成某些中,(D)是可以省略。 A.函数名B.函数体C.返回值类型D.函数参数 【成果分析】 函数定义可以缺省形式参数,此时称为无参函数。 (6)对重载函数来说,下面论述不对的是(D)。 A.参数类型不同 B.参数顺序不同 C.参数个数不同 D.参数个数、类型、顺序都相似,但函数返回值类型不同 【成果分析】 对重载函数来说,编译系统将依照函数参数类型和个数来判断使用哪一种函数,因此重载函数参数个数、类型、顺序不能都相似。 (7)下列关于设立函数参数默认值描述中,(D)是对的。 A.对设立函数参数默认值顺序没有任何规定 B.函数具备一种参数时不能设立默认值 C.默认参数要设立在函数原型中,而不能设立在函数定义语句中 D.设立默认参数可使用表达式,但表达式中不可用局部变量 【成果分析】 在C++中,在函数原型中可觉得一种或各种参数指定默认值。 对函数参数设立默认值要注意如下几点。 ◆若没有声明函数原型,参数默认值可在函数定义头部进行设立,否则必要在函数原型中进行设立。 ◆在一种指定了默认值参数右边不能浮现没有指定默认值参数。 ◆设立默认参数可使用表达式,但表达式中不可用局部变量。 (8)下面说法对的是(BC)。 A.所有函数都可以阐明为内联函数 B.具备循环语句、switch语句函数不能阐明为内联函数 C.使用内联函数,可以加快程序执行速度,但会增长程序代码大小 D.使用内联函数,可以减小程序代码大小,但使程序执行速度减慢 【成果分析】 内联函数重要是解决程序运营效率问题。 在程序编译时,编译系统将程序中浮现内联函数调用地方用函数体进行替代,进而减少了程序运营时间,但会增长程序代码大小。 它是以空间换取时间,因而内联函数合用于功能不太复杂,但规定被频繁调用函数。 (9)一种函数功能不太复杂,但规定被频繁调用,应选用(A)。 A.内联函数B.重载函数C.递归函数D.嵌套函数 (10)C++对C语言做了诸多改进,下列描述中使得C语言发生了质变,即从面向过程变成面向对象是(D)。 A.增长了某些新运算符 B.容许函数重载,并容许设立默认参数 C.规定函数阐明必要用原型 D.引进了类和对象概念 【成果分析】 面向对象=对象+类+继承+消息+多态 四、判断题 (1)C++程序中,不得使用没有定义或阐明变量。 (√) (2)使用const阐明常量时,可以不必指出类型。 (×) 【成果分析】 如果用const定义是一种整型常量,则类型阐明符int可以省略。 (3)引用被创立时可以用任意变量进行初始化。 (×) 【成果分析】 对引用初始化必要使用同类型变量。 (4)一种返回引用调用函数可以作为左值。 (√) (5)函数可以没有参数,也可以没有返回值。 (√) (6)没有参数两个函数是不能重载。 (√) (7)函数可设立默认参数,但不容许将一种函数所有参数都设立为默认参数。 (×) 【成果分析】 函数可设立默认参数,且容许将一种函数所有参数都设立为默认参数。 (8)运算符new分派空间由运算符delete释放。 (√) 五、简答题 (1)名字空间用途是什么? 【问题解答】 名字空间用来防止命名冲突。 (2)引用有何用处? 【问题解答】 除了独立引用外,在C++程序中,引用重要用途是用作函数参数和函数返回值。 (3)比较值调用和引用调用相似点与不同点。 【问题解答】 在值调用机制中,作为实参表达式值被复制到由相应形参名所标记一种对象中,作为形参初始值。 函数体对形参访问、修改都是在这个标记对象上操作,与实参无关,即数据传递是单向。 使用引用作函数形参时,调用函数实参要用变量名。 实参传递给形参,相称于在被调用函数中使用了实参别名。 于是,在被调用函数中对形参操作实质是对实参直接操作,即数据传递是双向。 (4)内联函数有什么作用? 它有哪些特点? 【问题解答】 内联函数是使用inline核心字声明函数。 在程序编译时,编译系统将程序中浮现内联函数调用地方用函数体进行替代,进而减少了程序运营时间。 使用内联函数应注意如下几点。 ◆递归函数不能定义为内联函数。 ◆内联函数普通适合于不具有switch和while等复杂构造且只有1~5条语句小函数,否则编译系统将该函数视为普通函数。 ◆内联函数只能先定义后使用,否则编译系统也将该函数视为普通函数。 ◆对内联函数也不能进行异常接口声明。 (5)函数原型中参数名与函数定义中参数名以及函数调用中参数名必要一致吗? 【问题解答】 不必一致。 所有参数是依照位置和类型而不是名字来区别。 (6)重载函数时通过什么来区别? 【问题解答】 编译系统将依照函数参数类型和个数来判断使用哪一种函数。 六、程序分析题(写出程序输出成果,并分析成果) #include usingnamespacestd; intmain() { intnum=50; int&ref=num; ref=ref+10;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 教程 答案