西安石油大学大二(上)C++面向对象程序设计课件各章习题

(8)关于面向对象系统分析,下列说法中不正确的是( )。 A. 术语“面向对象分析”可以用缩写OOA表示

B. 面向对象分析阶段对问题域的描述比实现阶段更详细 C. 面向对象分析包括问题域分析和应用分析两个步骤 D. 面向对象分析需要识别对象的内部和外部特征 9.3 简述面向过程程序设计的基本思想。 9.4 简述面向过程软件开发方法的主要问题。

9.5 简述例2.1的C语言面向过程程序和C++语言面向对象程序的不同。 9.6 什么叫类?什么叫类的实例?类和类的实例的关系是怎样的? 9.7 什么叫消息?什么叫事件?

9.8 解释面向对象的抽象性、封装性、继承性和多态性。 9.9 多态性有几种?各自的定义是什么?

9.10 什么叫整体——部分模式?什么叫一般——特殊模式?

9.11 叙述子类对父类中方法的继承中,完全继承、扩充继承和覆盖继承三种不同的设计方法各有什么意义?

9.12 面向对象分析阶段要完成怎样的工作? 9.13 面向对象设计阶段要完成怎样的工作? 9.14 面向对象实现阶段要完成怎样的工作? 9.15 简述面向对象程序设计的优点。

复杂概念题:

9.16 分析复数在实际应用中的应用情况,用面向对象方法分析复数。要求画出复数的对象模型图,即画出复数类的类名、属性和行为。

9.17 学习过数据结构课程的学生已经熟悉堆栈的概念,用面向对象方法分析一个堆栈。要求画出堆栈的对象模型图,即画出堆栈类的类名、属性和行为。 9.18 学习过数据结构课程的学生已经熟悉队列的概念,用面向对象方法分析一个队列。要求画出队列的对象模型图,即画出队列类的类名、属性和行为。 9.19 调查学校图书馆的管理和使用方法,用面向对象方法分析一个简单的图书管理系统。要求画出图书管理系统的对象模型图,即画出所有的类(包括类名、属性和行为)以及类之间的联系方式。

9.20 调查学校教务处的管理和学生学籍查询方法,用面向对象方法分析一个简单的教务管理系统。要求画出教务管理系统的对象模型图,即画出所有的类(包括类名、属性和行为)以及类之间的联系方式。

程序设计题:

9.21 在例2.1的基础上,分别设计完成实现复数乘除功能的C语言程序和C++语言面向对象程序。并要求完成复数(1,1)和复数(2,2)的乘除运算并输出运算结果。

9

习题3

基本概念题: 9.1 填空题:

(1)类定义中,既包含成员变量,也包含________。 (2)类中成员变量的访问属性通常定义为________。

(3)类中的供外部调用定义的成员函数,其访问属性通常被定义为________。 (4)对于类中定义的任何成员,其隐含访问权限为________。 (5)对于结构体中定义的任何成员,其隐含访问权限为________。

(6)若在类的定义体中给出了一个成员函数的完整定义,则该成员函数属于________函数。

(7)若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上________和两个冒号分隔符。

(8)若要把类外定义的成员函数规定为内联函数,则必须把________关键字放到函数原型或函数头的前面。

(9)把一个类的定义体和所有成员函数的定义体所构成的程序范围叫做该类的____________。

(10)假定AA是一个类,“AA* abc();”是该类中一个成员函数的原型,则在类外定义时的函数头为__________________。

(11)成员函数的所有参数在类的作用域中,成员函数的返回值________类作用域。

(12)若只需要通过一个成员函数读取成员变量的值,而不需要修改它,则应在函数头的后面加上________关键字。

(13)一个类的__________函数实现对该类对象的初始化功能。

(14)一个类的__________函数通常用于实现释放该类对象中指针成员所指向的动态存储空间的任务。

(15)创建类的动态对象数组时,其元素只能靠自动调用该类的____________来进行初始化。

(16)在一个类中定义拷贝构造函数的目的,是为了当利用该类的一个对象初始化另一个对象时,能够避免这两个对象的同一指针同时指向同一块__________。

(17)假定AB类中只包含一个整型成员变量a,并且它是一个常量成员,若利用参数aa对其进行初始化,则该类的构造函数的定义为____________________。

(18)假定指针p指向一个动态分配的类对象,则当执行“delete p;”语句时,在释放p所指向的动态存储空间之前将自动调用该类的____________。

(19)假定用户为类AB定义了一个构造函数“AB(int aa) {a=aa;}”,则系统(会/不会)_________为该类自动定义一个无参构造函数\。

(20)假定用户为类AB定义了一个构造函数“AB(int aa, char

10

*bb=NULL):a(aa),b(bb){}”,则该类中至少包含有__________个成员变量。

(21)假定用户为类AB定义了一个构造函数“AB(int aa) {a=aa;}”,该构造函数实现对成员变量_________的初始化。

(22)假定用户为类AB定义了一个构造函数“AB(int aa=0):a(aa){}”,则创建该类的对象时,可以有________种不同的格式。

(23)假定用户只为类AB定义了一个构造函数“AB(int aa, int bb=0) {a=aa; b=bb;}”,则创建该类的对象时,其实参表中至多带有_________个实参。

(24)假定用户只为类AB定义了一个构造函数“AB(int aa, int bb=0) {a=aa; b=bb;}”,则创建该类的对象时,其实参表中至少带有_________个实参。

(25)假定用户为类AB定义了一个构造函数“AB(int aa=0, int bb=0) {a=aa; b=bb;}”,则创建该类的对象时,可以有________种不同的格式。

(26)假定用户只为类AB定义了一个构造函数“AB():a(0),b(0){}”,则创建该类对象x的语句“AB x();”是_________(正确/错误)的。

(27)假定用户只为类AB定义了一个构造函数“AB():a(0),b(0){}”,则创建该类对象x的语句“AB x;”是_________(正确/错误)的。

(28)假定用户只为类AB定义了一个构造函数“AB():a(0),b(0){}”,则创建该类对象x的语句“AB x(5);”是_________(正确/错误)的。

(29)假定AB为一个类,则该类的拷贝构造函数的函数头为_____________。 (30)假定AB为一个类,该类中含有一个指向动态数组空间的指针成员pa,则在该类的析构函数中应该包含有一条______________语句。

(31) 静态成员函数 ____访问类的静态成员变量, ____ 访问类的非静态成员变量。

(32)静态成员变量必须在所有函数的定义体外进行__________。 9.2 选择题:

(1)在类作用域中能够通过直接使用该类的( )成员名进行访问。 A. 私有 B. 公有 C. 保护 D. 任何 (2)在关键字public后面定义的成员为类的( )成员。 A. 私有 B. 公有 C. 保护 D. 任何 (3)在关键字private后面定义的成员为类的( )成员。 A. 私有 B. 公有 C. 保护 D. 任何

(4)假定AA为一个类,a为该类公有的成员变量,x为该类的一个对象,则访问x对象中成员变量a的格式为( )。

A. x(a) B. x[a] C. x->a D. x.a

(5)假定AA为一个类,a()为该类公有的成员函数,x为该类的一个对象,则访问x对象中成员函数a()的格式为( )。

A. x.a B. x.a() C. x->a D. x->a()

(6)假定AA为一个类,a为该类公有的成员变量,px为指向该类对象的一个指针,则访问px所指对象中成员变量a的格式为( )。

11

A. px(a) B. px[a] C. px->a D. px.a

(7)假定AA为一个类,a为该类私有的成员变量,GetValue()为该类公有成员函数,它返回a的值,x为该类的一个对象,则访问x对象中成员变量a的格式为( )。

A. x.a B. x.a() C. x->GetValue() D. x.GetValue() (8)假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为( )。

A. int AA::a() B. int AA:a() C. AA::a() D. AA::int a()

(9)假定AA为一个类,a为该类公有的成员变量,若要在该类的一个成员函数中访问它,则书写格式为( )。

A. a B. AA::a C. a() D. AA::a() (10)假定AA是一个类,“AA* abc()const;”是该类中一个成员函数的原型,若该函数返回this值,当用x.abc()调用该成员函数后,x的值( )。

A. 已经被改变 B. 可能被改变

C. 不变 D. 受到函数调用的影响 (11)类中定义的成员默认为( )访问属性。

A. public B. private C. protected D. friend (12)结构体中定义的成员默认为( )访问属性。

A. public B. private C. protected D. friend (13)对于一个类的构造函数,其函数名与类名( )。

A. 完全相同 B. 基本相同 C. 不相同 D. 无关系 (14)对于一个类的析构函数,其函数名与类名( )。

A. 完全相同 B. 完全不同 C. 只相差一个字符 D. 无关系 (15)类的构造函数是在定义该类的一个( )时被自动调用执行的。 A. 成员函数 B. 成员变量 C. 对象 D. 友元函数 (16)类的析构函数是一个对象被( )时自动调用的。 A. 建立 B. 撤消 C. 赋值 D. 引用 (17)一个类的构造函数通常被定义为该类的( )成员。 A. 公有 B. 保护 C. 私有 D. 友元 (18) 一个类的析构函数通常被定义为该类的( )成员。 A. 私有 B. 保护 C. 公有 D. 友元

(19)假定AB为一个类,则执行 “AB x;”语句时将自动调用该类的( )。 A. 带参构造函数 B. 无参构造函数

C. 拷贝构造函数 D. 赋值重载函数

(20)假定AB为一个类,则执行 “AB x(a,5);”语句时将自动调用该类的( )。 A. 带参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值重载函数

(21)假定AB为一个类,则执行 “AB *s=new AB(a,5);”语句时得到的一个动态

12

联系客服:779662525#qq.com(#替换为@)