面向对象程序设计总复习资料(2008-秋)
- 格式:doc
- 大小:67.50 KB
- 文档页数:15
复习资料计算机科学与技术《面向对象程序设计》(高本)一、填空(每空1分,共22分)1、属性行为2、对象3、关联聚合泛化4、抽象性封装性继承性多态性5、主类6、application applet7、108、”wang”9、public private 10、间接继承 11、true false 12、105 13、0二、名词解释(每题5分,共30分)1、抽象:所谓抽象是指从许多事物中舍弃个别的、非本质的属性,抽取出共同的、本质的属性的过程,它是形成概念的必要手段。
2、对象:对象是用来描述现实世界中客体的部件,是面向对象软件系统在运行时刻的基本单位。
在程序设计中,对象是现实世界中的客体在应用程序中的具体体现,其中封装了客体的属性信息和行为方式,并用数据表示属性,用方法表示行为方式。
3、消息:消息是一个对象要求另一个对象实施某项操作的请求。
在一条消息中,需要包含消息的接收者和要求接收者执行哪项操作的请求,但并没有说明应该怎样做。
具体的操作过程由接收者自行决定,这样可以很好的保证系统的模块性。
4、继承:所谓继承是指一个类的定义可以基于另外一个已经存在的类,即子类基于从而实现父类代码的重用。
5、多态:所谓多态是指不同的类对象收到同一个消息可以产生完全不同的响应效果的现象。
6、软件工程:“软件工程”是应用计算机科学、数学与管理科学等原理,借鉴传统工程的原则和方法,研究如何有计划、高效率、低成本地开发能够在计算机上正确运行的软件,并试图从理论上和技术上提出一整套适合于软件开发的工程方法学。
四、简答(每题15分,共30分)1、答:软件的生命周期是指从某个软件的需求被提出并开始着手开发到这个软件被最终废弃的整个过程。
通常在这个过程中,应该包括制定计划、需求分析、系统设计、程序编码、系统测试、系统运行及维护阶段。
下面概要地介绍这几个阶段的主要任务。
(1)制定计划在正式开始开发软件项目之前,充分地研究、分析待开发项目的最终目标,整理出其功能、性能、可靠性及接口等方面的需求,计算出所需人力、物力的资源开销,推测日后可能获取的经济效益,提供支持该项目的技术能力以及给出开发该项目的工作计划是这个阶段需要完成的主要任务。
《面向对象程序设计》总复习第一部分各章复习要点第1章C++一、基本知识1.面向对象程序设计的基本概念●类、对象、属性、方法2.面向对象程序设计的特点●封装、继承、多态二、基本技能1.VC++6.0编程环境的使用●编辑、编译、运行、查错●调试由多个文件组成的程序2.cin和cout的使用第2章数据类型与表达式1.数据的存储●基本类型:整型、实型、字符型、布尔型●构造类型:结构、联合、枚举2.数据的表示●常量、变量3.符号的表示●运算符、表达式第3章C++控制结构一、基本知识1.语句概述●控制语句●函数语句●表达式语句●空语句2.语句要点●格式、执行过程、注意事项二、基本技能1.递推法程序设计●前项推后项●外加循环控制2.穷举法程序设计●用循环列出所有情况●找出满足条件的情况第4章函数一、基本知识1.函数的概念●函数的声明●函数的定义●函数的调用2.函数●数据传递:主函数→子函数,子函数→主函数3.变量的存储类型●动态●静态●寄存器4.变量的作用域●全局变量●局部变量二、基本技能1.嵌套函数设计●并列定义嵌套调用2.递归函数设计●由未知推向已知的递推公式●格式:If 已知else 递推3.重载函数设计●相同:函数名●不同:函数类型、参数(个数或类型)4.函数技巧●内联函数、外联函数●带默认参数值的函数●引用第5章数组、指针与字符串一、基本知识1.数组的概念●一维数组●二维数组●字符数组2.指针●如何获取各种数据的指针●如何用指针表示各种数据●用指针处理数据的优势二、基本技能1.排序●选择法排序●冒泡法排序2.字符串处理●输入●处理:比较、赋值、连接●输出3.指针●指针的定义●指针的获取●用指针表示数据第6章类和对象一、基本知识1.类2.对象3.构造函数4.析构函数5.拷贝构造函数6.友元7.组合类二、基本技能1.构造类●数据●函数(构造函数、析构函数、拷贝构造函数)2.友元函数●定义与使用3.静态成员●定义与使用4.对象数组5.对象指针第7章继承与派生一、基本知识1.继承2.继承方式3.继承的分类4.继承的二义性5.虚基类6.虚函数与纯虚函数7.抽象类二、基本技能1.构造派生类●构造函数、析构函数、拷贝构造函数2.继承要点●子类的对象如何使用基类的成员●子类的成员如何使用基类的成员第8章多态性一、基本知识1.多态性2.运算符重载二、基本技能1.单目运算符重载●前置运算符重载●后置运算符重载2.双目运算符重载3.运算符重载为友元函数●解决重载的二义性第9章模板一、基本知识1.函数模板2.类模板二、基本技能1.函数模板●定义和使用2.类模板●定义和使用第10章输入输出流一、基本知识1.控制格式2.文件二、基本技能文件编程要点●定义文件对象●打开文件●读写数据●关闭文件第二部分复习要点(一)基本概念1.类(构造函数、析构函数、拷贝构造函数)和对象2.面向对象程序的特点3.重载函数4.友元函数5.虚基类6.虚函数、纯虚函数7.抽象类8.模板函数、模板类9.文件类(二)基本技能1.构造类2.构造派生类(单继承、多继承)3.构造抽象类4.定义重载函数5.定义友元函数6.定义运算符的重载7.定义模板函数8.文件对象的使用第三部分主要问题(一)基本概念1.面向对象程序设计的特点是什么?2.类有哪些成分组成?3.构造函数、析构函数和拷贝构造函数的作用?4.重载函数、友元函数的作用?5.类的继承方式有哪些?对子类的对象有何影响?6.虚基类的作用?7.虚函数、纯虚函数的作用?8.运算符重载的作用?9.模板函数、模板类的作用?10.抽象类的作用?(二)基本技能1.面向对象程序设计的技巧有哪些?2.面向对象程序实现软件复用的方法有哪些?3.面向对象程序设计的多态性体现在哪些方面?。
面向对象程序设计复习1. 函数重载是指两个或两个以上的函数取相同的函数名,但形参的个数或类型不同。
2.若有指针p指向变量x,则*p与x的表示是等价的。
3.假定AA为一个类,a为该类公有的数据成员,若要在该类的一个成员函数中访问它,则书写格式为a。
4.执行int *p= new int[10]操作,使p指向的元素可表示为p[0](或*p )5.除了能通过构造函数的函数体内赋值语句对数据成员实现初始化外,C++还提供一种初始化数据成员的方法参数初始化表。
6.假定p所指向对象为25,p+1指向对象为42,则执行*p++运算后,p所指向对象值为42.7.在调用成员函数时,this指针被初始化成被调函数所在类的对象的地址。
8.为了使指针值始终保持为初始值,可以将指针变量声明为const型(常指针)9.静态数据成员可以初始化,但只能在类体外进行初始化。
10.私有继承中,基类中的保护成员在私有派生类中的访问属性是私有11.预处理命令在程序中都是以#符号开头的。
12.当一个函数调用表达式只能与一个模板函数相符合时,将首先根据模板函数生成一个实例函数,然后再调用它执行。
13.假定用户没有给一个名为AB的类定义析构函数,则系统为其隐含定义的析构函数为~AB(){}14.派生类的成员函数不能直接访问基类的私有成员。
15.若需要定义基类中的一个成员函数为虚函数,则必须在函数头的开始使用virtual保留字。
16.为了实现运算符重载,必须定义一个叫做operator的运算符函数。
17.Time为类名,有定义void Time::fun()const,fun称为常成员函数18.对象的指针就是对象空间的地址19.保护继承中,基类中的公用成员在保护派生类中的访问属性是保护20.假定p所指向对象为2,p+1指向对象为3,则执行*++p运算后,p所指向对象值为3 完成程序题31.下列函数的功能是实现两个数的最小公倍数,请填空:#include<iostream>_ ①_;using namespace stdint lcd(int x,int y){②;}return x*y/hcf(x,y)32. 下面函数的功能是:统计子字符串substr在字符串str中出现的次数。
面向对象程序设计1. 代码public class Test {public int aMethod() {static int i = 0;i++;return i;}public static void main (String args[]) {Test test = new Test();test.aMethod();int j = test.aMethod();System.out.println(j);}}输出结果为编译失败,static用来修饰全局变量,不能修饰局部变量2. 下面的程序中,temp的最终值是1long temp=(int)3.9;temp%=2;3.在J2EE中属于Web层的组件有:Servlet4. 派生类中的成员不能直接访问基类中的private成员。
5.以public修饰的类如:public class Car{…}则Car可被其它程序包中的类使用6.paint( )方法使用 Graphics 类型的参数7. 下面数据插入语言(DIL)不属于SQL语句的子类8. 实现运行时的多态性要使用虚函数。
9. 创建对象时构造函数被调用10. 如下代码:class Base {Base() { System.out.print(“Base”); }}public class Alpha extends Base {public static void main( String[] args ) {new Alpha();-----调用父类无参的构造方法new Base();}}结果是BaseBase。
11.如果希望控件在界面上按表格行分列排列,应使用GridLayout布局管理器12. 声明抽象方法不可写出大括号叙述正确13. 线程交互中不提倡使用stop()方法14.当检索一个压缩文件时,首先要建立压缩文件输入流对象,该对象以 FileInputStream 对象为参数15.jsp指令中isELIgnored="boolean"的意思是决定是否支持EL表示。
⾯向对象的程序设计复习资料⾯向对象复习资料·········⼀、名词解释1、软件⼯程——建⽴在系统化、规范化、数量化等⼯程原则和⽅法上的,关于软件开发各阶段的定义、任务和作⽤的⼯程学科。
包括软件开发技术、软件项⽬管理两⽅⾯内容。
2、模型——对现实的简化,提供系统的蓝图,包含架构[总体]设计和组件[详细]设计;包含重要的因素忽略不相⼲的细节;⼀个系统可以从不同视⾓使⽤不同模型进⾏描述;模型可以是架构的[侧重于组织]、也可以关注⾏为[系统的动作]3、对象——现实世界中具有静态特征和动态特征的某个具体的实际事物。
4、封装——把属性和操作封在⼀个对象⾥,不允许外界直接存取和使⽤。
包含属性与⾏为的结合和信息屏蔽两层含义。
5、消息——向对象发出的[服务]请求,包括服务的对象标识、服务标识、输⼊信息和回答信息等。
定义对象之间单路通信,是从发送⽅到接收⽅的控制流,激发某操作、唤醒信号或导致对象的创建或撤消。
⽤箭头表⽰,符号见表6、继承——派⽣类或⼦类⾃动拥有基类或⽗类的全部属性和操作的类创建⽅法7、多态——同⼀操作作⽤于不同对象,有不同解释或不同的执⾏结果。
两种——编译时、运⾏时;3实现⽅式——接⼝、继承、抽象类。
8、UML——⼀种功能强⼤的、⾯向对象的可视化系统分析的建模语⾔[对⾯向对象系统进⾏可视化、详述、构造和⽂档化的⼯具,已成为软件建模的⼯业标准。
] 9、视图——从某个⽅⾯或⾓度出发描述系统,或表达系统某个⽅⾯特征的⼀个或多个图。
10、动作事物——时间、空间上的动作,模型的动词;最基本的是交互与状态机11、交互——⼀组对象在特定上下⽂、为达到特定⽬的进⾏⼀系列消息交换组成的动作,要列出每个操作的消息、动作次序、连接关系。
12、状态——13、⽤例——14、事件流——15、对象关联——16、可见性——描述属性和操作是否可被其他类引⽤17、活动——对象被占⽤以完成某任务,⽤矩形条表⽰。
1.对象(1)从概念层面讲,对象是某种拥有责任的抽象。
(2)从规格层面讲,对象是一系列可以被其他对象使用的公共接口。
(3)从语言实现层面讲,对象封装了代码和数据。
2.软件开发中的经典阶段:需求、分析、设计、规范、实现、测试、部署、维护。
3.设计7原则:开闭原则、里氏代换原则、依赖倒转原则、合成/聚合复用原则、迪M特原则、接口隔离原则、单一职责原则。
4.面向对象的方法学:UML(统一建模语言)、RUP(统一软件开发过程)、XP(极限编程)。
开发方法:Booch、Coad、OMT、UML、OOSE、Wirfs—Brock 5.OOA——运用面向对象方法进行需求分析。
OOD——运用面向对象方法进行系统设计。
OOP——运用面向对象方法进行程序设计。
6.OOA的基本任务:是运用面向对象的方法,对问题域和系统责任进行分析和理解,对其中的事物和它们之间的关系产生正确的认识,找出描述问题域及系统责任所需的类及对象,定义这些类和对象的属性和操作,以及它们之间所形成的结构、静态联系和动态联系。
最终目的:是产生一个符合用户需求,并能够直接反映问题域和系统责任的OOA模型及其详细说明。
优点:(1)加强了对问题域和系统责任的理解。
(2)改进与分析有关的各类人员之间的交流。
(3)对需求的变化具有较强的适应性。
(4)支持软件复用。
OOA的三大策略是:属性策略、方法策略、对象策略。
7.(1)封装:是指对象在其操作中隐藏属性。
它是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。
封装的目的是使对象的使用者和生产者分开,使对象的定义和实现分开。
例如:要从同事那里借钱,在商店购买食物,就不会抢夺同事的钱包,大翻一通,看看里面是否有足够的钱。
而应该询问他们是否可以借你一些钱,他们就会自己翻钱包。
以表示圆的一个对象作为封装的例子。
圆的操作应能计算出半径、直径、周长和面积。
假定选择存储直径,要访问直径的程序员都会选择存储直径属性,而不是通过“获取直径”的操作来访问。
面向对象程序设计复习课(2008_秋)一、对照书本(或上课课件),搞懂有关概念1. 面向对象程序设计的基本概念面向对象(O-O)程序设计是一种新的程序设计范型。
这种范型的主要特征是:程序=对象+消息面向对象程序的主要结构特点是:第一,程序一般由类的定义和类的使用两部分组成,在主程序中定义对象并规定它们之间传递消息的规律;第二,程序中的一切操作都是通过向对象发送消息来实现的,对象接收到后,启动有关方法完成相应操作。
第三,类由继承关系产生相互间的联系。
2. 对象是现实世界的一个实体,其特性是:(1) 每一个必须有一个名字以区别于其他对象;(2) 用属性(或叫状态)来描述它的某些特征;(3) 有一组操作,每一个操作决定对象的一种行为。
(4) 对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。
类是:一组具有共同的属性特征和行为特征的对象的抽象。
类与对象的关系是抽象和具体的关系。
3. 面向对象系统的特征是:封装性、继承性和多态性(1). 将数据结构和作用于数据结构上的操作组成一个实体,数据的表示方式和对数的操作细节被隐藏起来,用户通过操作接口对数据进行操作。
这就是数据的封装。
(2). 继承机制允许派生类继承基类的数据和操作(即数据成员和成员函数),也就是说,允许派生类使用基类的数据和操作。
同时派生类还可以增加新的操作和数据。
从继承源上分,继承分为单继承和多继承。
(3). 面向对象系统的多态性是指不同的对象收到相同的消息时产生多种不同的行为方式。
重载的概念4. 新的I/O流cin是标准输入流,在程序中用于代表标准输入设备,即键盘。
运算符“>>”表示向右cout是标准输出流,在程序中用于代表标准输出设备,即屏幕。
运算符“<<”表示向左使用cin或cout进行I/O操作时,在程序中必须嵌入头文件iostream.h5. new和delete6. 引用引用可为变量起别名,它主要用作函数参数以及函数的返回类型。
面向对象程序设计复习资料(一)单项选择题1.Java是一门()语言。
A. 机器B. 汇编C. 面向过程的高级D. 面向对象的高级2. 具有相同属性和服务的一组对象的共同模板称为()。
A. 程序B. 类C. 代码D. 概念3.在Java程序中包含主方法的类被称为主类,主方法的访问控制修饰符为()。
A. privateB. protectedC. publicD. static4.Java语言中的switch语句属于()语句。
A. 数据输入B. 数据输出C. 分支处理D. 循环控制5.在类的定义中,实现接口的子句所使用的关键字为()。
A. extendsB. implementsC. publicD. abstract6.在派生类的定义中,继承父类的子句所使用的关键字为()。
A. extendsB. implementsC. publicD. abstract7.下列能表示栈(stack)s1长度的是( )。
A.s1.length()B.s1.lengthC.s1.sizeD.s1.size()8.下面的异常()为文件没有找到异常。
A. NullPointerExceptionB. FileNotFoundExceptionC. ArrayIndexOutOfBoundsExceptionD. IOException9.下列不是InputStream 类的子类的是()。
A. FileInputStreamB. ObjectInputStreamC、 FileOutputStream D. DataInputStream10.进行文件输入输出操作时,最常用的系统包是()。
A. B. java.ioC. java.utilD. java.awt11.类是对具有共同属性和行为的对象的抽象描述,每个对象称为该类的一个()。
A. 产品B. 元素C. 成分D. 实例12.使用JDK运行Java程序时使用的命令是()。
《面向对象程序设计》课程复习资料一、单项选择题:1.C#中每个 int 类型的变量占用()个字节的内存。
[ ]A.1B.2C.4D.82.C#应用程序中,用主方法指明程序执行的开始点,主方法的名字规定为 [ ]A. classB. mainC. MainD. MainWay3.下面所列的C#自定义标识符中,正确的是 [ ]A.@double B. $double C. #double D. ~double4.C#语言是微软.NET公共语言运行环境中内置的核心程序设计语言,是一种 [ ]A.面向过程程序设计语言B.面向对象程序设计语言C.跨平台程序设计语言D.机器语言5.C#语言中,双精度实型数据类型(double)所占用的存储空间为()个字节。
[ ]A.1B.2C.4D.86.C#应用程序中,导入其他系统预定义元素部分可以使用关键字 [ ]A. useB. namespaceC. importD. using7.下面的运算符中,优先级别最低的是 [ ]A. newB. !=C. ?:D. =8.设有整型变量x,则表达式x=5/8运算后,变量x的值为 [ ]A.0B.0.625C.0.6D.0.639.执行C#语句序列:int i; for (i = 0; i++ < 4; );后,变量i的值是 [ ]A.5B.4C.1D.010.在默认的情况下,省略的类访问修饰符是 [ ]A. privateB. publicC. protectedD. internal11.在下面的类声明中,属于私有字段的是 [ ]class Person{public string name;public string sex;private int age;double weight;}A. name sexB. ageC. weightD. age weight12.下面所列选项中,能够正确定义2行3列二维整型数组a的是 [ ]A. int [][] a = new int [2][3]B. int [ ,] a = new int [2,3]C. int [2][3]D. int [ ,] a = int [2,3]13.下面所列选项中,不能正确定义并初始化二维数组a的是 [ ]A. int [ ,] a = new int [2,3]{{1,2,3},{4,5,6}}B. int [ ,] a = new int [,]{{1,2,3},{4,5,6}}C. int [ ,] a = new int [2,3]{1,2,3,4,5,6}D. int [ ,] a = {{1,2,3},{4,5,6}}14.在C#中,下列()语句能创建一个具有 3 个初始值为""的元素的字符串数组。
面向对象程序设计复习资料第2章面向对象思维建立面向对象程序设计的特征:①模块化;②抽象化;③封装;④可组合;⑤继承;⑥软件持续使用时间更长。
面向对象思维分为两步:一是需求分析,识别出有哪些对象,它们分别做什么事(who&&what );二是如何利用对象协作完成一件完整的事情(howb•类与对象的概念和关系:1)类是面向对象程序设计方法的核心,利用类可以实现对数据的封装和隐蔽。
在面向对象程序设计中,程序模块是由类构成。
类是对逻辑相关的函数与数据的封装,它是对问题的抽象描述。
C++的语法提供了对自定义类型的支持,这就是类。
正如基本数据类型中隐含的数据和操作,因此在定义一个类时也要说明数据和操作。
2)类实际上是一种抽象机制,它描述了一类为问题的属性和行为,即类描述了一类对象的数据存储和操作特征。
每一个怪物都有一些共同的静态特征,这些共同的特征抽象到类中统称为该类的属性,属性通过声明普通变量来实现。
每一个怪物都有一些共同的动态行为,这些共同的行为抽象到类中统称为该类的操作, 操作通过声明普通变量来实现。
还能调用对象中的函数(构造函数和析构函数除外)・对象间的协作实现如果函数在类外实现,那么必须在函数名前加上类名,否那么不能实现“::"是作用域限定符,用来声明函数属于哪一类;类必须先在类中做原型声明,然后才能在类外实现;system(”psudr”):等待用户按键然后返回,按任意键继续;system(”cls”):清屏操作关键字new :①在堆上获得一块内存空间、②调用构造函数、③返回正确的指针栈(堆栈)是限定仅在表尾进行插入和删除操作的线性表。
单独存放数据的那块内存称为“堆”,存储指针那块内存称为“栈”User *Lucy = new User():声明一个指针对象Lucy ,在名称堆区保存Lucy这个对象的所有信息,在栈中保存Lucy的堆地址。
delete对象名;|销毁之前引用的对象第6章深入学习面对对象函数成员函数:属于一个类的函数;用于完成对象的初始化类函数:类的成员函数,属于一个类的成员,出现在类体中。
《面向对象程序设计》课程期末复习资料《面向对象程序设计》课程讲稿章节目录:第一章、C++基础(16个知识点)01 计算机求解问题的过程02 编程的步骤03 程序设计方法04 程序设计基本概念05 C++程序集成开发环境简介06 C++程序实例07 C++源程序的组成08 C++源程序的组成元素09 C++与C的主要差异–符号常量和标准输入输出流10 C++与C的主要差异–联函数11 C++与C的主要差异–带默认形参值的函数12 C++与C的主要差异–函数重载13 C++与C的主要差异–动态存分配和释放14 C++与C的主要差异–动态存分配和释放程序实例15 C++与C的主要差异–引用和返回引用的函数16 C++与C的主要差异–函数的引用调用第二章、面向对象方法(27个知识点)01 面向对象方法基本概念–对象、类、实例和消息02 面向对象方法基本概念–封装、继承和多态03 类的定义04 构造函数05 对象的定义和访问06 对象的定义和访问程序实例07 类成员的访问控制08 类成员的访问控制程序实例09 析构函数11 类声明和类实现的分离12 类的常量成员13 类的静态数据成员14 类的静态成员函数15 this指针16 类的友元17 类的对象成员–基本概念18 类的对象成员–对象成员的声明、初始化和访问19 自定义类的运算符重载概述20 类成员函数形式的运算符重载21 类友元形式的运算符重载22 赋值运算符和下标运算符重载程序实例23 类设计实例24 面向对象方法程序实例–类和对象的基本定义、构造函数和析构函数25 面向对象方法程序实例–静态成员和多文件结构26 面向对象方法程序实例–友元和运算符重载27 面向对象方法程序实例–对象成员第三章、继承与多态(17个知识点)01 继承概述02 派生类定义03 派生类构造函数和析构函数04 派生类构造函数和析构函数程序实例05 函数重定义和派生类的继承方式06 多重继承下的派生类定义07 多重继承中的二义性问题08 虚拟继承和虚基类09 类型兼容10 多态性的概念和实现原理11 虚函数13 纯虚函数和抽象类14 继承与多态程序实例–派生类定义和函数重定义15 继承与多态程序实例–多重继承16 继承与多态程序实例–虚拟继承和虚函数17 继承与多态程序实例–抽象类和纯虚函数第四章、输入输出流(16个知识点)01 输入输出流概述02 输入输出流对象03 输入输出流的插入和提取运算符04 输入输出流的插入和提取运算符程序实例05 输入输出流的put函数06 输入输出流的get函数07 输入输出流的getline函数08 输入输出流的write函数09 输入输出流的read函数10 输入输出流的write、read函数程序实例11 文件随机读写概述和相关函数12 文件随机读写程序实例13 自定义类型数据的标准输入输出和文本文件输入输出14 自定义类型数据的二进制文件输入输出15 输入输出流程序实例–输入输出流操作16 输入输出流程序实例–插入运算符和提取运算符重载第五章、模板(7个知识点)01 函数模板的定义和使用02 函数模板程序实例03 类模板的定义04 类模板的使用05 类模板的静态成员06 模板程序实例–函数模板07 模板程序实例–类模板一、客观部分:(单项选择、多项选择、不定项选择、判断)(一)、选择部分1、面向对象方法的基本观点是一切系统都是由( C )构成的。
《面向对象程序设计》复习要点及复习题(一)复习要点1.标识符、基本数据类型(字节数)、构造数据类型、运算符的种类、运算符的优先级和结合性、控制台输入和输出2.三种基本控制结构、if…else语句、switch语句、for语句、while语句、do…while语句、跳转语句;函数参数传递、函数重载、内联函数;标识符的作用域和生存期。
3.类的定义和使用、this指针、构造函数和析构函数、组合技术、静态成员、友元、运算符重载4.指针与数组、二级指针、动态内存的分配与释放、深复制与浅复制、递归。
5.派生类的构造与析构、派生类与基类的赋值兼容、多重继承与虚基类。
6.虚函数与动态绑定、纯虚函数与抽象类(二) 复习题一、单项选择题。
1.在switch语句中,为了结束分支,一般应在每个分支的结尾处加上语句(C)。
A. continueB. gotoC. breakD. default2.说明友元函数的关键字是(D)。
A. inlineB. virtualC. staticD. friend3.下面对指向常量的指针描述正确的是(C)。
A. 只能指向常量B. 指向的数据可以被修改C. 可以指向普通变量D. 必须进行初始化4.友元函数没有(A)。
A. this指针B. 返回类型C. 函数名D. 参数5.关于重载,(A)不正确。
A. 类名可以重载B. 函数名可以重载C. 运算符可以重载D. 缺省参数是重载的一种方式6.用new分配n维数组空间,首地址赋予指针p,则p应为指向(C)维数组的指针。
A. 0B. 1C. n-1D. n7.为类X重载前缀自增运算,则函数返回类型应为(C)。
A. XB. X*C. X&D. int8.以下(A)未调用构造函数(X为类名)。
A. X*p;B. X obj;C. X obj(1);D. X obj=2;9.若在类外有函数调用X::func();则函数func是类X的(C)函数。
面向对象程序设计复习资料(2328)一、单项选择题1.假设P是指针, 声明指针s引用指针p正确方法是( )A.int* s&=p B.int &*s=p C.int *&s=pD.int s* &=p2.在C+ +中, 能够为类的所有成员共享的是( )A、枚举成员B、公有数据成员C、私有函数成员D、公有函数成员3.C+ +中, 下列哪个关键字不能提供封装。
( )A、 structB、 unionC、 classD、 case4.下而关于类的复制构造函数的说法正确的是( )A.一个类只能有一个复制构造函数B.能够为void类型C.不能有返回类型D.不能使用缺省参数5.下面叙述正确的是: ( )A.派生类不能够使用私有派生B.保护派生时, 基类的保护成员在派生类中是公有的C.对基类成员的访问能够允许两义性D.赋值兼容规则也适用于多重继承的组合6.定义虚函数使用关键字( )A.: : B.virtual C.& D.->7.在下面几项中, 运算符在C++中能被重载的是( )A .= B.? : C.sizeof D. : :A.结构B.类C.继承D.引用8.在执行下面程序语句之后, num的值为( )int num = 500;int& ref= num;ref = = ref -50;A.450 B.500 C.-50D.无法确定9.所有在函数外面定义的变量, 连同形式参数, 都属于( )A、局部变量B、全局变量C、静态变量D、寄存器变量10.面向对象的程序中, 哪项不是对象的特点。
( )A、多态性B、抽象性和封装性C、中断D、继承性11.下面在半初始化说法正确的是( )A.初始化列表能够初始化任何类B.初始化列表也也能够初始化具有私有成员的类C.初始化列表只能初始化公有数据成员D.初始化列表能够初始化所有数据成员12.产生编译时的多态性的必要条件是使用( )A.静态成员 B.友元函数 C.重载成员函数D.虚函数13.operator经常和C++的一个运算符连用,构成一个运算符函数名.运算符函数的返回类型不能是( )A.voidB.charC.intD.float14.下面是对C++运算符的叙述, 正确的叙述是( )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.下面叙述不正确的是( )A.成员的访问能力取决于派生方式B.基类的私有成员在公有派生类中不可访问C.对象能够访问所有成员D.公有基类成员在保护派生中保护的20.成为抽象类的一个条件是这个类( )A.至少有一个纯虚函数 B.至少有一个虚函数C.只含有一个纯虚函数 D.只含有一个虚函数21.下列叙述正确的是( )A.有1个运算符不能被重载 B.有2个运算符不能被重载C.有3个运算符不能被重载 D.有4个运算符不能被重载22.在以下选项中, 不属于模板特点的选项是( )A.处理数据时, 处理的是不同类型的相同操作B.声明不需要给出数据类型C.对于相同的数据类型产生不同的实例D.对于不同的数据类型能够产生不同的实例23.经过什么建立类树( )A.类B.虚函数C.多重继承D.单一继承24.C++使用新的分配动态内存的函数是( )A . malloc ( ) B. free( ) C. delete D. new 25.以下关于C+ +对象特点叙述不正确的是( )A、对象能够进行四则运算 C、对象能够用作数组的元素C、对象能够用作函数参数D、对象之间能够相互赋值26.有关复制构造函数说法错误的是( )A.复制构造函数不能使用初始化列表B. 复制构造函数不能有返回值C. 复制构造函数名与类名相同并能够有多个复制构造函数D. 复制构造函数的参数能够为引用对象27.对友元函数描述正确的是( )A.一个类的友元函数是该类的一个特殊成员函数B.一个类的友元函数能够访问类的所有数据成员C.友元函数只允许访问该类对象的私有成员D.友元函数只允许访问该类的公有成员28.进行文件操作时需要包含的头问家是( )A.iostream.h B. fstream.h C.stdio.h D. stdlib.h29.下面关于类模板叙述不正确的是( )A.声明类模板”; ”号结束B.不能重载运算符C.能够使用友元函数D.能使用虚函数30.系统不会为类自动建立什么成员函数( )A.默认构造函数 B.默认析构函数C.默认虚析构函数D.默认赋值运算赋二、填空题:1.函数 int * func(void)的返回类型是__ _ __.2.C+ +中, 关键字用作联合.3.关键字virtual能够用来声明类.4.抽象类至少要含有一个 ,这种函数属于虚函数5.成员函数”void print( )const;”是类的函数, 它只能被const对象调用。
面向对象程序设计复习课(2008_秋)一、对照书本(或上课课件),搞懂有关概念1. 面向对象程序设计的基本概念面向对象(O-O)程序设计是一种新的程序设计范型。
这种范型的主要特征是:程序=对象+消息面向对象程序的主要结构特点是:第一,程序一般由类的定义和类的使用两部分组成,在主程序中定义对象并规定它们之间传递消息的规律;第二,程序中的一切操作都是通过向对象发送消息来实现的,对象接收到后,启动有关方法完成相应操作。
第三,类由继承关系产生相互间的联系。
2. 对象是现实世界的一个实体,其特性是:(1) 每一个必须有一个名字以区别于其他对象;(2) 用属性(或叫状态)来描述它的某些特征;(3) 有一组操作,每一个操作决定对象的一种行为。
(4) 对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。
类是:一组具有共同的属性特征和行为特征的对象的抽象。
类与对象的关系是抽象和具体的关系。
3. 面向对象系统的特征是:封装性、继承性和多态性(1). 将数据结构和作用于数据结构上的操作组成一个实体,数据的表示方式和对数的操作细节被隐藏起来,用户通过操作接口对数据进行操作。
这就是数据的封装。
(2). 继承机制允许派生类继承基类的数据和操作(即数据成员和成员函数),也就是说,允许派生类使用基类的数据和操作。
同时派生类还可以增加新的操作和数据。
从继承源上分,继承分为单继承和多继承。
(3). 面向对象系统的多态性是指不同的对象收到相同的消息时产生多种不同的行为方式。
重载的概念4. 新的I/O流cin是标准输入流,在程序中用于代表标准输入设备,即键盘。
运算符“>>”表示向右cout是标准输出流,在程序中用于代表标准输出设备,即屏幕。
运算符“<<”表示向左使用cin或cout进行I/O操作时,在程序中必须嵌入头文件iostream.h5. new和delete6. 引用引用可为变量起别名,它主要用作函数参数以及函数的返回类型。
有变量的引用、参数引用和返回值引用。
7. 类的定义clsaa 类名{ private: (可缺省)私有数据成员和函数成员protected:1 / 15保护段数据成员和函数成员public:公有数据成员和函数成员};成员函数的定义第一种方式是在类定义中只给出成员函数的原形,而成员函数体在类的外部定义。
第二种方式是将成员函数定义在类的内部,即定义为内置函数。
(1) 隐式定义(2) 显式定义8.对象中成员的访问不论是数据成员,还是成员函数,只要是公有的,就可以被外部函数直接访问,访问的一般格式是:对象名. 数据成员名或对象名. 成员函数名(实参表)外部函数不能引用对象的私有成员类成员的访问属性类的公有成员不但可以被类中成员函数访问,还可以在类的外部通过类的对象进行访问。
类的私有成员只能被类中成员函数访问,不能在类的外部通过类的对象进行访问。
9. 构造函数的特点:(1)构造函数的名字必须与类名相同。
(2)构造函数可以有任意类型的参数,但不能具有返回类型。
(3)定义对象时,编译系统会自动地调用构造函数。
(4)构造函数也是成员函数,函数体可写在类体内,也可写在类体外。
(5)构造函数被声明为公有函数,但它不能象其他成员函数那样被显式地调用,它是在定义对象的同时被调用的。
10. 析构函数也是特殊成员函数,用于释放对象。
(1)析构函数与构造函数名字相同,但它前面必须加一个波浪号(~)。
(2)析构函数没有参数,也没有返回值,而且不能重载,因此在一个类中只能有一个析构函数。
(3)当撤消对象时,编译系统会自动地调用析构函数。
11. 友元:不属于任何类的一般函数,另一个类的成员函数,整个的一个类。
(1) 友元函数不属于任何类的一般函数(2) 友元成员该函数是另一个类的成员函数,前加上friend表示该另类的成员函数,又是本类的友元成员。
(3). 友元类在类内说明一个类(该类前面已定义),前加上friend表示该类是本类的友元类。
友元类的所有成员函数可以访问它自己类私有成员又可本类的私有成员12. 派生类的定义基类:class 类名{类的内容};2 / 15声明派生类:class 派生类名: 继承方式基类名{//派生类新增的数据成员和函数成员};继承方式可为公有继承(用public)、私有继承(用private或缺省)和保护继承(用protected)13. 基类成员在派生类中的访问属性(重点)14. 派生类对基类成员的访问规则(重点)15. 派生类的构造函数和析构函数(1) 派生类的构造函数和析构函数执行顺序当创建派生类对象时,首先执行基类的构造函数,随后再执行派生类的构造函数;当撤消派生类对象时,则先执行派生类的析构函数,随后再执行基类的析构函数。
(2). 派生类的构造函数和析构函数的构造规则一般格式为:派生类名(参数总表):基类名(参数表){//派生类新增成员的初始化语句}其中基类构造函数参数,来源于派生类的构造函数的参数总表,也可以用常数值。
16. 编译时的多态性与运行时的多态性静态联编(前期联编)静态联编要求在程序编译时就知道调用哪个函数,就决定如何实现某一动作。
动态联编(后期联编、滞后联编)一直要到程序运行时才能确定调用哪个函数。
系统在运行时才动态完成的联编。
静态联编支持的多态性称为编译时多态性,也称静态多态性。
在C++中,编译时多态性是通过函数重载和运算符重载实现的。
动态联编支持的多态性称为运行时多态性,也称动态多态性。
在C++中,运行时多态性是通过继承和虚函数来实现的。
函数重载:类外的一般的函数、成员函数和构造函数都可以重载17.运算符重载:除了可以对函数重载外,还可以对大多数运算符实施重载。
外部函数类的友元函数是类的成员函数成员运算符函数定义的语法形式成员运算符函数的原型在类的内部声明格式为:class X{//...返回类型 operator 运算符(形参表);//...};18.引入派生类后的对象指针引入派生类后,由于派生类是由基类派生出来的,因此指向基类的指针和指向派生类的指针是相关的。
3 / 15(1)基类的指针可以指向它的公有派生类的对象。
但不允许指向它的私有派生类的对象。
(2)派生类的指针不允许指向它的基类的对象。
(3)基类的指针指向它的公有派生类的对象时,只能用它来直接访问派生类中从基类继承来的成员,而不能直接访问公有派生类中定义的新成员。
19. 模板的概念(1).函数模板与模板函数所谓函数模板,就是写一个函数模子,用这个模子套印出许多功能相同,参数类型和返回类型不同的函数。
模板函数:函数模板实例化后的具体函数。
(2)类模板和模板类类模板(也称为类属类或类生成类)是:允许用户为类定义一种模子,使得类中的某些数据成员,某些成员函数的参数或者返回值,能取任意数据类型20. 文件的输入输出在含有文件操作的程序中,必须有如下的预处理命令:# include <fstream.h>复习思考题、即考试的A、B、C、D选择题和填空题一、分清下面的概念,那些是正确的,那些是错误的1. 面向对象程序的主要结构特点之一√程序一般由类的定义和类的使用两部分组成。
程序一般由函数定义和函数的使用两部分组成。
程序一般由变量的定义和变量的使用两部分组成。
程序一般由对象的定义和对象的使用两部分组成。
√程序中的一切操作都是通过调用函数来实现的。
程序中的一切操作都是通过定义函数来实现的。
√程序中的一切操作都是通过向对象发送消息来实现的。
程序中的一切操作都是通过定义类来实现的。
2.对象是现实世界中的一个实体,其特性√每个对象必须有一个名字。
有属性描述。
有一组操作。
√必须有一个关键字,以示区别。
√定义对象时会自动调用构造函数。
一定要定义一个构造函数。
一定要有二个以上数据。
3.面向对象系统的特性是√封装性√继承性√多态性完整性唯一性二义性可重用性安全性4.类和对象之间的关系是定义和被定义的关系。
调用和被调用的关系。
类即是对象数组。
√抽象和具体的关系。
√类型和变量之间的关系。
型和值的关系。
结构类型和结构体的关系。
指针和所指的对象的关系。
5.类的概念是对同一类整型数据的集合。
√对一组具有共同的属性特征和行为特征的对象的抽象。
类即是对象数组。
各种对象的集合。
√同一类数据的集合。
同一记录的集合。
同类函数的集合。
现实世界中所有对象的集合。
6.构造函数的特征√构造函数的函数名与类名相同。
构造函数必须说明返回类型。
√编译系统会自动调用构造函数。
√构造函数可以重载。
构造函数的函数名与类名不相同。
程序中要有调用构造函数的语句。
7.析构函数的特征√一个类中只能定义一个析构函数。
析构函数名与类名不同。
析构函数的定义只能在类体内析构函数可以有多个参数。
一个类中能定义多个析构函数。
√析构函数名与类名相同并加~。
√编译系统会自动调用析构函数。
析构函数可以有多个参数8.关于成员函数特征的下述描述成员函数一定是内置函数。
√成员函数可以重载。
√成员函数可以设置参数的缺省值。
√成员4 / 15函数可以是静态的。
√类定义中只给出成员函数的原型,而成员函数在类外定义。
√类定义中只给出成员函数的原型,而成员函数在类外定义并在之前加inline。
成员函数一定要在类内定义。
可在类内定义。
9.下列的各类函数中,不是类的成员函数构造函数析构函数友元函数拷贝构造函数√主函数√一般函数√标准函数缺省参数的构造函数10.友元的作用是什么,一个类的友元可以访问该类的什么√提高程序的运行效率。
加强类的封装性。
√实现数据的隐藏性。
增加成员函数的种类√私有成员和公有成员只能是私有成员只能是公有成员成员函数11.对基类和派生类的关系描述中派生类是基类的具体化。
√派生类是基类的子集。
√派生类是基类定义的扩延。
派生类是基类的组合。
√无论哪种派生,基类的私有成员不允许派生类的成员函数访问。
无论哪种派生,基类的公有成员允许派生类的成员函数访问。
√无论哪种派生,基类的保护成员允许派生类的成员函数访问。
√无论哪种派生,基类的保护成员不允许派生类的成员函数访问。
12.派生类的对象对它的基类成员中,可以访问的是√公有继承的公有成员。
公有继承的私有成员。
公有继承的所有成员。
私有继承的公有成员。
私有继承的私有成员。
私有继承的所有成员。
√公有继承的保护成员。
私有继承的保护成员。
13.对定义几个重载函数的要求中,错误的是。
不可重载的函数的是。
√要求参数的个数不同。
要求参数中至少有一个类型不同。
要求函数名相同。
√要求函数的返回值类型一定不同。
普通的成员函数。
友元函数。
外部函数。
√析构函数14.可定义作运算符重载函数的是构造函数。
√成员函数。
√友元函数。
√类以外的函数。
析构函数。
无返回值的函数。
15.设置虚基类的目的是,对虚基类的论述,正确的是简化程序。