面向对象复习材料1
- 格式:doc
- 大小:113.50 KB
- 文档页数:8
《面向对象程序设计》总复习第一部分各章复习要点第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. 代码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表示。
一.选择题(20题,共30分)●作用域运算符的功能●设置虚基类的目的●构造函数的特征●析构函数的说法●重载函数在调用时选择的依据●静态成员的特性●友元●派生类的描述●运算符在C++中不能被重载?●动态联编的描述●纯虚函数和抽象类的描述●抽象类的使用●delete删除一个动态对象●new运算符的下列描述●C++与C语言关系的描述●类定义中,错误的语句书3.1.1(7)●自动调用该类构造函数次数●静态数据成员的描述●派生类的描述●派生类的构造函数的初始化列表中,不能包含●虚基类的声明●赋值兼容规则●虚函数●纯虚函数表述●抽象类表述●重载运算符函数●成员函数重载的运算符、友元函数重载的运算符●关键字class和typename●类模板表述●重载了运算符<< 书7.2节●语句ofstream f()二.填空题(15空,共30分)●标准输入输出流对象cin cout●类中的数据和成员函数●类都有一个隐含的指针指向:正在调用成员函数的对象●非成员函数访问类成员●虚基类的目的:解决二义性问题●基类数据成员的初始化●operator++●运算符函数调用格式●异常处理的保留字●异常错误处理函数terminate() 、set_terminate()三.程序的执行、填空(4题,共20分)四.编程题(3小题,共20分)一.选择题1.如果表达式++i*k中的“++”和“*”都是重载的友元运算符,若采用运算符函数调用格式,则表达式还可以表示为 A 。
A. operator*(i.operator++(),k)B. operator*(operator++(i),k)C. i.operator++().operator*(k)D. k.operator*(operator++(i))2.在下列成对的表达式中,运算符“/”的意义相同的一对是 D 。
A.8/3和8.0/3.0B.8/3.0和8/3C.8.0/3和8/3D.8.0/3.0和8.0/33.如果表达式y*x++中,“*”是作为成员函数重载的运算符,“++”是作为友元函数重载的运算符,采用运算符函数调用格式时,该表达式应表示为 C 。
软考系统分析师考试资料整理:面向对象(一)面向对象的模型·对象模型对象模型表示了静态的、结构化的系统数据性质,描述了系统的静态结构,它是从客观世界实体的对象关系角度来描述,表现了对象的相互关系。
该模型主要关心系统中对象的结构、属性和操作,它是分析阶段三个模型的核心,是其他两个模型的框架。
1.对象和类(1) 对象。
对象建模的目的就是描述对象。
(2) 类。
通过将对象抽象成类,我们可以使问题抽象化,抽象增强了模型的归纳能力。
(3) 属性。
属性指的是类中对象所具有的性质(数据值)。
(4) 操作和方法。
操作是类中对象所使用的一种功能或变换。
类中的各对象可以共享操作,每个操作都有一个目标对象作为其隐含参数。
方法是类的操作的实现步骤。
2.关联和链关联是建立类之间关系的一种手段,而链则是建立对象之间关系的一种手段。
(1) 关联和链的含义。
链表示对象间的物理与概念联结,关联表示类之间的一种关系,链是关联的实例,关联是链的抽象。
(2) 角色。
角色说明类在关联中的作用,它位于关联的端点。
(3) 受限关联。
受限关联由两个类及一个限定词组成,限定词是一种特定的属性,用来有效的减少关联的重数,限定词在关联的终端对象集中说明。
限定提高了语义的精确性,增强了查询能力,在现实世界中,常常出现限定词。
(4) 关联的多重性。
关联的多重性是指类中有多少个对象与关联的类的一个对象相关。
重数常描述为“一”或“多”。
3.类的层次结构(1) 聚集关系。
聚集是一种“整体-部分”关系。
在这种关系中,有整体类和部分类之分。
聚集最重要的性质是传递性,也具有逆对称性。
聚集可以有不同层次,可以把不同分类聚集起来得到一颗简单的聚集树,聚集树是一种简单表示,比画很多线来将部分类联系起来简单得多,对象模型应该容易地反映各级层次。
(2)一般化关系。
一般化关系是在保留对象差异的同时共享对象相似性的一种高度抽象方式。
它是“一般---具体”的关系。
一般化类称为你类,具体类又能称为子类,各子类继承了交类的性质,而各子类的一些共同性质和操作又归纳到你类中。
《面向对象程序设计》课程期末复习资料《面向对象程序设计》课程讲稿章节目录:第一章、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 )构成的。
面向对象程序设计复习资料(可编辑修改word版)面向对象程序设计期末总复习题一、单项选择题1.下面关于对象概念的描述中,是错误的。
(B)A.对象代表着正在创建的系统中的一个实体B.对象就是C 语言中的结构体变量C.对象是一个状态和操作(或方法)的封装体D.对象之间的信息传递是通过消息进行的2.继承机制的作用是:(C)A.信息隐藏B.数据封装C.定义新类D.数据抽象3.有关析构函数的说法不正确的是(D)A.析构函数有且只有一个B.析构函数无任何函数类型C.析构函数没有形参D.析构函数不能是虚函数4.友元的作用之一是(A)A.提高程序的运行效率B.加强类的封装性C.实现数据的隐藏性D.增加成员函数的种类5.通常拷贝构造函数的参数是。
(C)A.某个对象名B.某个对象的成员名C.某个对象的引用名D.某个对象的指针名6.如果在基类中将show 声明为不带返回值的纯虚函数,正确的写法是。
(C)A.irtual show()=0;B.virtual void show();C.virtual void show()=0;D.void show=0 virtual;7.下面关于友元的描述中,错误的是。
(D)A.友元函数可以访问该类的私有数据成员B.一个类的友元类中的成员函数都是这个类的友元函数C.友元可以提高程序的运行效率D.类与类之间的友元关系可以继承8.在C++中,运算符不能重载。
(B)A. +B.?:C.-D.<=9.下列关于运算符重载的描述中,是正确的。
(D)A.运算符重载可以改变操作数的个数B.运算符重载可以改变优先级C.运算符重载可以改变结合性D.运算符重载不可以改变语法结构10.在下列函数原型中,可以作为类AA 构造函数的是(D)A.void AA(int) ; B.int AA( ) ; C.AA(int)const; D.AA(int);11.在声明类时,下面的说法正确的是。
(C)A.可以在类的声明中给数据成员赋初值B.数据成员的数据类型可以是 registerC.private,public,protected 可以按任意顺序出现D.没有用private,public,protected 定义的数据成员是公有成员12.继承具有,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。
面向对象(OOP)三大特性1. 封装2. 多态3. 继承类和对象1. 什么是类?类是一类事务的统称,他是一个抽象的概念比如说人类,动物类,电器类2. 什么是对象?万物皆对象对象是类的一个实例,比如说人类是一个类,张学友是一个对象,张学友是人类中的一个实例3. 类和对象有什么关系?类是对象的模板一个类可以创建无数个对象4.类中可以定义什么元素?静态的特征:属性动态的行为: 方法5.属性的声明?语法 [访问修饰符] 数据类型属性名例如 public int age;6.方法的声明?7.方法的重载(overload)?在同一个类中方法名相同参数列表不同(顺序,个数,类型)和返回值无关8.方法的重写(overwrite)?两个方法,一个在父类中,一个在子类中方法名字相同,参数列表相同父类的返回值要么和子类相同,要么大于子类父类的访问修饰符要么和子类相同,要么小于子类9.构造方法的特点?方法名和类名相同构造方法没有返回值,连void也没有一个类中可以有多个构造方法,形成了重载的关系一个类中有一个默认的无参数的构造方法,当手动写了一个有参数的构造方法之后,无参数的构造方法就消失了,如果还需要使用,必须手动写出来几个关键字:1.package关键字?包的声明:package cn.zrgk.person;包的名字一般是公司域名的倒写方式,避免的别的包发生重名的现象包其实就相当于文件夹一样,这就说明同名的类文件,可以在不同的包里面出现package声明包,必须要在源文件的非注释性的第一条语句2.import关键字?包的导入:import cn.zrgk.person;当使用别的包中的类的时候,需要在程序的上方导入这个包名3.this关键字?在构造方法当中,当参数名字和属性名字相同的时候,区分属性和参数在同一个类中,调用其他的构造方法,this(name,age);调用当前这个类的属性和方法4.super关键字?调用父类的构造方法,super(name,age,sex);必须要在构造方法的第一句话调用父类的属性和方法5.static关键字?修饰属性: public static int age;修饰属性,这样的属性叫做:静态属性或类属性修饰属性调用:** 类名.属性名** 或对象名.属性名修饰方法: public static void show{ }修饰方法:这个方法叫做:静态方法或类方法修饰方法调用:类名.方法名或对象名.方法名静态的方法只能访问静态的属性或方法非静态的方法可以调用静态或者非静态访问修饰符:private: 本类default: 本类同包protected: 本类同包子类public: 本类同包子类其他继承场景:在多个类中,提取一个父类,把相同的属性或者是方法放到父类当中,特有的属性或者方法放到子类当中,使用继承的关系表示继承的关键字:extends继承满足:is a (Dog is a Animal)抽象类场景:父类是一个概念,一般的,创建对象没有意义,所以声明为抽象的,不让创建对象,父类中的方法也可以不实现,声明为抽象的方法抽象的关键字:abstract1.抽象类特点?抽象类不能实例化(不能创建对象)抽象类可以由普通的属性和方法,也可以有抽象方法抽象类中不一定有抽象方法抽象类中抽象方法在子类中一定要重写,不然就报错2.抽象方法?抽象方法没有方法体:public abstract void show();抽象方法在子类中一定要重写抽象方法一定要在抽象类中接口(interface)1.接口中可以定义:静态的常量:抽象的方法:2.Final关键字:修饰属性:修饰属性:常量:一旦定义里面的值不能改变。
一、名词解释1、面向对象方法答:面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO (Object-Oriented)方法,是建立在“对象”概念基础上的方法学。
面向对象方法不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系。
2、什么是继承、什么是对象、什么是类、什么是聚合?答:继承:继承是指特殊类自动地拥有或隐含地复制其一般类的全部属性与操作,这种机制也称作一般类对待特殊类的泛化。
对象:①现实世界中客观存在的任何事物都可以被看作是对象。
②对象是构成系统的一个基本单位,它由一组属性和对这组属性进行操纵的一组操作构成。
类:类是具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和操作两个主要部分。
类的作用是创建对象,对象是类的一个实例。
聚合:一个对象由其他若干对象作为其构成部分,把这种对象间的关系称为聚合。
聚合刻画了现实事物之间的构成关系。
3、什么是参与者、什么是用况、什么用例?答:参与者:一个参与者定义了一组在功能上密切相关的角色,当一个事物与系统交互时,该事物可以扮演这样的角色。
参与者是在系统之外的与系统进行交互的任何事物。
用况:一个用况是描述系统的一项功能的一组动作序列,这样的动作序列表示参与者与系统间的交互,系统执行该动作序列要为参与者产生结果。
用例图:用例图是一幅由一组参与者、一组用例以及这些元素之间的关系组成的图。
这些关系是参与者和用况之间的关联、参与者之间的继承,以及用例之间的包含、扩展和继承。
4、什么是类图、是顺序图、通讯图?答:类图:类图由许多(静态)说明性的模型元素(例如类、包和它们之间的关系,这些元素和它们的内容互相连接)组成。
类图可以组织在(并且属于)包中,仅显示特定包中的相关内容。
类图是最常用的UML图,显示出类、接口以及它们之间的静态结构和关系;它用于描述系统的结构化设计。
《面向对象程序设计》课程期末复习资料《面向对象程序设计》课程讲稿章节目录:第一章、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 )构成的。
面向对象程序设计C++复习资料(一)
面向对象程序设计C++复习资料(一)面向对象程序设计C++复习资料(一)一、名词解释
1、多态性
2、构造函数
3、继承性
4、友元
二、填空
1、类的三大基本特性__________、__________、__________。
2、c++语言的函数参数传递方式有__________。
3、含有虚函数的类称为__________,含有纯虚函数的类为__________,为克服重复继承的二义性,用__________声明的基类称为虚基类,用__________声明函数称为虚函数。
4、在含有对象成员的派生类中,构造函数的调用次序,基类的构造函数对象成员的构造函数,派生类的构造函数的调用次序?
5、派生类对基类继承控制访问有三种__________。
三、单项选择
1、那个不是c++的基本数据类型()。
2、c++语言中有哪些存放在动态存储区。
()
3、下面对于指针的描述不正确的是()。
a、指针是
1。
面向对象程序设计复习资料(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对象调用。
面向对象复习资料复习资料模拟题一一、单项选择题1.C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是( )A.增加了一些新的运算符B.允许函数重载,并允许设置缺省参数C.规定函数说明符必须用原型D.引进了类和对象的概念2.下列符号不能组成标识符的是( )A.连接符B.下划线C.大小写字母D.数字字符3.类型修饰符unsigned不能修饰( )A. charB. intC. long intD. float4.在int a=3,int *p=&a;中,*p的值是( )A.变量a的地址值B.无意义C.变量p的地址值D.35.下列关于指针的操作中,错误的是( )A.两个同类型的指针可以进行比较运算B.可以用一个空指针赋给某个指针C.一个指针可以加上两个整数之差D.两个同类型的指针可以相加6.重载函数在调用时选择的依据中,错误的是( )A.函数的参数B.参数的类型C.函数的名字D.函数的类型7.一个函数功能不太复杂,但要求被频繁调用,选用( )A.内联函数B.重载函数C.递归函数D.嵌套函数8.下列不是描述类的成员函数的是( )A.构造函数B.析构函数C.友元函数D.复制构造函数9.构造函数不具备的特征的是( )A.构造函数的函数名与类名相同B.构造函数可以重载C.构造函数可以设置默认参数D.构造函数必须指定类型说明10.通常,拷贝构造函数的参数是( )A.某个对象名B.某个对象的成员名C.某个对象的引用名D.某个对象的指针名11.继承机制的作用是( )A.信息隐藏B.数据封装C.定义新类D.数据抽象12.类的析构函数的作用是( )A.一般成员函数B.类的初始化C.对象的初始化D.撤消对象时所做的清理工作13.类的析构函数是在( )调用的。
A.类创建时B.创建对象时C.删除对象时D.不自动调用14.在( )情况下适宜采用inline定义内联函数。
A.函数体含有循环语句B.函数体含有递归语句C.函数代码少、频繁调用D.函数代码多、不常调用15.如果类A被说明成类B的友元,则( )A.类A的成员即类B的成员B.类B的成员即类A的成员C.类A的成员函数不得访问类B的成员D.类B不一定是类A的友元二、填空题1.对象的三大基本特性是多态性、___ ____、封装性。
1、面向对象程序设计将描述事物的数据与封装在一起,作为一个相互依存、不可分割的整体来处理。
A) 信息B) 数据隐藏C) 对数据的操作D) 数据抽象2、下列语句中,错误的是。
A) int *p=new int(5);B) int *p=new int[5];C) int *p=new int [20][(0);D) int *p=new int;3、下面有关类和对象的说法中,正确的是。
A) 系统为类和对象分配内存空间B) 类和对象没有区别C) 系统为类分配存储空间,不为对象分配存储空间D) 类与对象的关系和数据类型与变量的关系类似4、下列有关类和对象的说法中,不正确的是。
A) 任何一个对象只能属于一个类B) 对象是类的一个实例C) 类实质上是一种数据类型D) 一个类只能有一个对象5、下列说法中,不正确的是。
A) 要在类的外部直接使用类的私有成员是错误的B) 一个对象数组中的所有数组元素属于同一个类C) 当在类外部定义成员函数时,必须在函数名前加上类名和作用域运算符D) 同一个类的两个对象占用相同的内存空间6、在声明类时,下面的说法正确的是。
A) 数据成员的数据类型可以是registerB) 可以在类的声明中给数据成员赋初值C) 没有用private,public,protected定义的数据成员是公有成员D) 定义时,private,public,protected可以按任意顺序出现7、下列关于构造函数的描述中,正确的是。
A) 构造函数必须带有参数B) 构造函数可以带有返回值C) 构造函数的名字与类名完全相同D) 构造函数必须定义,不能默认8、下列有关析构函数叙述中,不正确的是。
A) 析构函数必须与类名相同,并在其前面加上符号~,以便和构造函数名区别B) 析构函数不能带有任何参数,不能有返回值C) 析构函数可以重载D) 对于全局定义的对象,在程序开始时调用构造函数,到程序结束时调用析构函数9、关于成员函数特征的下列叙述中,是错误的。
一、填空题1. 以面向对象方法构造的系统,其基本单位是__________。
对象2. 对象将其大部分实现细节隐藏起来,这种机制称为__________。
封装3. 类中的数据成员的访问属性通常被指明为________。
私有4. 假定x=5,y=6,则表达式x++*++y的值为__________。
355. 把一个类的定义体和所有成员函数的定义体所构成的程序范围叫做该类的____________。
作用域6. 静态数据成员必须在所有函数的定义体外进行__________。
初始化7. 派生类的成员函数可以直接访问基类的__________成员,不能直接访问基类的______成员。
公有、保护;私有8. 若要保证一个公共的基类在派生类中只产生一个基类子对象,则必须都以____________的方式直接继承它。
虚基类9. 如果一个派生类只有一个唯一的基类,则这样的继承关系称为__________。
单继承10. 一个函数定义由________和________两部分组成。
函数头函数体二、选择题1. 以下说法中正确的是()。
BA. C++程序总是从第一个定义的函数开始执行B. C++程序总是从main函数开始执行C. C++函数必须有返回值,否则不能使用函数D. C++程序中有调用关系的所有函数必须放在同一个程序文件中2. 函数重载是指()。
AA. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同B. 两个以上函数取相同的名字和具有相同的参数个数,但形参的类型可以不同C. 两个以上的函数名字不同,但形参的个数或类型相同D. 两个以上的函数取相同的函数名,并且函数的返回类型相同3. 关于消息,下列说法中不正确的是()。
BA. 发送消息的对象请求服务,接受消息的对象提供服务B. 消息的发送者必须了解消息的接收者如何响应消息C. 在C++中,消息的发送具体体现为对接收消息的对象的某个函数的调用D. 每个对象只能接收某些特定格式的消息4. 关于封装,下列说法中不正确的是()。
面向对象复习1. 面向对象的概念和特点面向对象编程是一种程序设计思想,它将问题划分为各个独立的对象,对象之间通过消息传递来进行交互,从而实现程序的功能。
面向对象的特点包括封装、继承和多态。
封装是指将数据和对数据的操作封装在一个对象中,对象对外提供公共接口,可以隐藏内部的具体实现细节,提高代码的可维护性和复用性。
继承是指一个类可以继承另一个类的属性和方法,通过继承可以实现代码的重用和层次结构的建立,提高代码的可扩展性。
多态是指同一个方法可以根据调用对象的不同而表现出不同的行为,通过多态可以实现接口的统一访问和提高代码的灵活性。
2. 类和对象的关系类是面向对象编程的基本概念,它是对一组具有相同属性和方法的对象的抽象描述。
对象是类的实例化,是具体的、能够在内存中存在的实体,它可以调用类的方法并访问类的属性。
类和对象的关系是一种抽象与具体的关系,类是对象的模板,对象是类的实例。
通过类可以创建多个对象,每个对象都具有相同的属性和方法,但是其属性的具体取值可以不同。
3. 类的定义和属性、方法的描述类的定义包括类名、属性和方法。
属性是类的特征,描述了类的状态和数据。
属性可以是基本类型(如整数、浮点数等)或其他对象的引用。
属性可以设置为公共属性或私有属性,公共属性可以被外部访问和修改,私有属性只能在类的内部访问和修改。
方法是类的行为,描述了类的操作和功能。
方法可以访问和修改类的属性,它可以是类的公共方法或私有方法,公共方法可以被外部调用,私有方法只能在类的内部调用。
4. 继承和多态的使用继承是面向对象编程的重要特性,它通过子类继承父类的属性和方法,实现代码的重用和层次结构的建立。
多态是指同一个方法可以根据调用对象的不同而表现出不同的行为。
多态通过方法的重写和接口的实现来实现。
在使用多态时,可以通过父类类型的引用指向子类的对象,从而实现对子类对象的访问。
5. 面向对象的设计原则面向对象设计的目标是实现代码的重用、可扩展和易维护。
1.下面( C)不是对象具有的特性。
A 标识
B 继承
C 顺序
D 多态
2.构成对象的两个主要因素是:A
A 属性和服务
B 标识和内容
C 继承和多态
D 消息和封装
3.描述对象之间静态联系的是:C
A 一般-特殊结构
B 整体-部分结构
C 关联
D 消息连接
4.下面描述中( D )不是使用模型的目的。
A 建立目标系统之间进行测试
B 以可视化形式出现,便于与用户交流
C 降低系统开发的复杂性
D 在开发过程中使用面向对象方法
5.下面关于动态模型的描述中正确的是:B
A 事件是在一段时间内持续存在的,它在对象之间传送信息。
B 动作是一种瞬间操作,它与某个事件有关。
C 状态是对象的属性值和链接的抽象,因此它定义了对象属性的全部值。
D 活动是需要花费时间来完成的,因此它决定的对象的状态迁移。
6.目标系统外部的执行者不包括:D
A 人
B 外部设备
C 外部系统
D 数据存储
7.关于时序图的描述中错误的是(C)。
A 显示了各种对象的方法的执行顺序
B 能够反应对象生存周期
C 其中横向箭头表示尾部连接的对象的方法执行后向头部连接的对象传递数据
D 可以用来描述用例图中某个用例的时序行为
8.在类设计过程中引入类不变式的目的是达到系统设计的()A。
A 正确性
B 健壮性
C 灵活性
D 高效性
9.多态性出现在具有( B)结构的类之间。
A 整体-部分
B 一般-特殊
C 实例连接
D 消息连接
10.商业领域包含一个公司中有价值的类,以下不属于商业领域的是D:
A 相互关系类
B 属性类
C 角色类
D 事件管理类
11.下列关于软件体系结构的描述中错误的是( B ):
A 描述一个结构需要几个模型,如用例模型、类模型、数据流模型和状态模型
B 一个体系结构中的各个模块之间关系较密切,因此要求它们之间耦合度较高
C 使用框架是为了能重用类、类之间的关系或预编程的控制
D 软件体系结构本质上是一个数据流、一个独立组件集、一个虚拟机、一个储存库或层。
12.关于面向对象分析与设计的叙述中正确的是(C ):
A 因为我们要重用类,所以在分析设计过程中不能过早确定领域类
B 面向对象方法是从功能开始而不是从组成部分开始
C 用例需要描述是面向对象分析与设计的起点
D 通过用例分析和时序分析可以获得全部的问题领域类
二、判断题(10分)
判断下列类之间的关系,把相应编号填写在括号中(A 聚合 B 继承 C 关联 D 都不是)
( A)1.大学–学院( C )2.学生–课程( B )3.学生–大一新生( A)4.汽车–车门( B)5.货车–交通工具( C )6.公共汽车–车站
( A )7.工具条–按钮
( D )8.汽车发动机–汽车车体( A )9.员工–公司
( D)10.本科生–研究生
三、简答题(24分)
1.分析下面的类图,画出新的类图,将原图中的多对多关系转换为1:M(一对多)关系。
2.问题描述:一个简单的下棋游戏,游戏双方称为黑方和白方。
白方首先走第一步,然后黑白双方轮流走棋。
如果有一方不能继续走棋,则另一方获得胜利,游戏结束;如果比方同意平局,则游戏结束。
请画出该问题的状态图。
3.问题描述:某商店采用会员制管理,会员购买产品时,向收银员提供自己的会员卡和所购买的商品,收银员验证会员卡合法(通过在会员档案中查找会员卡号)后,将商品记录到商品销售表中,并将总金额作为会员积分记入会员档案中。
请画出该问题的数据流图。
四、改错题(24分)
下列3种使用继承的类图中均存在错误,说明错误原因并请给出正确的类图。
1.关于飞机构成的设计:
2.关于学校教师的设计
3.关于队列的实现设计
五、综合题(18分)
考虑一个“通讯录管理系统”,通讯录包含若干条目,每个条目包括:姓名、电话、邮编、通信地址4个内容。
对通讯录要求的操作包括:查找条目、增加条目、删除条目。
对条目的要求是能够设置和获取其中的4个属性。
系统要求对通讯录操作通过一个图形用户界面进行,该界面应该能名显示一个条目,进行编辑后将条目的属性写回到条目对象中。
1. 对上述问题进行用例分析,画出相应的用例图。
需要说明每一个用例的交互过程。
2.经过初步分析,找到如下类,请用类图描述类之间的关系。
通讯录(TXL)、通讯录条目(TXLItem)、界面(UI)
3.如果要求在通讯录中不允许有姓名相同的条目,请画出“增加一个新的条目”功能的活动图。
一、选择题(24分)
说明:每题只有1个正确答案,请将正确答案填写在下面表格中。
二、判断题(10分)
判断下列类之间的相互关系,把相应编号填写在括号中。
A 整体-部分,
B 一般-特殊,
C 实例联接,
D 都不是( A )1.大学–学院
( C )2.学生–课程
( B )3.学生–大一新生
( A )4.汽车–车门
( B )5.货车–交通工具
( C )6.公共汽车–车站
( A )7.工具条–按钮
( D )8.汽车发动机–汽车车体
( A )9.员工–公司
( D )10.本科生–研究生
三、简答题(30分)
1.分析下面的类图,画出新的类图,将原图中的M:N(多对多)关系转换为1:M(一对多)关系。
2.问题描述:一个简单的下棋游戏,游戏双方称为黑方和白方。
白方首先走第一步,然后黑白双方轮流走棋。
如果有一方不能继续走棋,则另一方获得胜利,游戏结束;如果比方同意平局,则游戏结束。
请画出该问题的状态图。
3.问题描述:某商店采用会员制管理,会员购买产品时,向收银员提供自己的会员卡和所购买的商品,收银员验证会员卡合法(通过在会员档案中查找会员卡号)后,将商品记录到商品销售表中,并将总金额作为会员积分记入会员档案中。
请画出该问题的数据流图。
四、改错题(24分)
下列3种使用继承的类图中均存在错误,请给出正确的类图。
1.关于飞机构成的设计:
2.关于学校教师的设计
3.关于队列的实现设计
五、综合题(18分)
没有标准答案,视学生分析问题情况给分。