面向对象考前复习资料工硕辅导(1)
- 格式:doc
- 大小:27.50 KB
- 文档页数:2
《面向对象程序设计》总复习第一部分各章复习要点第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表示。
⾯向对象的程序设计复习资料⾯向对象复习资料·········⼀、名词解释1、软件⼯程——建⽴在系统化、规范化、数量化等⼯程原则和⽅法上的,关于软件开发各阶段的定义、任务和作⽤的⼯程学科。
包括软件开发技术、软件项⽬管理两⽅⾯内容。
2、模型——对现实的简化,提供系统的蓝图,包含架构[总体]设计和组件[详细]设计;包含重要的因素忽略不相⼲的细节;⼀个系统可以从不同视⾓使⽤不同模型进⾏描述;模型可以是架构的[侧重于组织]、也可以关注⾏为[系统的动作]3、对象——现实世界中具有静态特征和动态特征的某个具体的实际事物。
4、封装——把属性和操作封在⼀个对象⾥,不允许外界直接存取和使⽤。
包含属性与⾏为的结合和信息屏蔽两层含义。
5、消息——向对象发出的[服务]请求,包括服务的对象标识、服务标识、输⼊信息和回答信息等。
定义对象之间单路通信,是从发送⽅到接收⽅的控制流,激发某操作、唤醒信号或导致对象的创建或撤消。
⽤箭头表⽰,符号见表6、继承——派⽣类或⼦类⾃动拥有基类或⽗类的全部属性和操作的类创建⽅法7、多态——同⼀操作作⽤于不同对象,有不同解释或不同的执⾏结果。
两种——编译时、运⾏时;3实现⽅式——接⼝、继承、抽象类。
8、UML——⼀种功能强⼤的、⾯向对象的可视化系统分析的建模语⾔[对⾯向对象系统进⾏可视化、详述、构造和⽂档化的⼯具,已成为软件建模的⼯业标准。
] 9、视图——从某个⽅⾯或⾓度出发描述系统,或表达系统某个⽅⾯特征的⼀个或多个图。
10、动作事物——时间、空间上的动作,模型的动词;最基本的是交互与状态机11、交互——⼀组对象在特定上下⽂、为达到特定⽬的进⾏⼀系列消息交换组成的动作,要列出每个操作的消息、动作次序、连接关系。
12、状态——13、⽤例——14、事件流——15、对象关联——16、可见性——描述属性和操作是否可被其他类引⽤17、活动——对象被占⽤以完成某任务,⽤矩形条表⽰。
面向对象编程复习资料在当今的编程世界中,面向对象编程(ObjectOriented Programming,简称 OOP)是一种广泛应用且至关重要的编程范式。
它为我们提供了一种更加结构化、可扩展和可维护的方式来构建软件系统。
下面,让我们一起深入复习面向对象编程的核心概念和重要特性。
一、面向对象编程的基本概念1、对象(Object)对象是面向对象编程的核心元素。
可以将对象视为现实世界中具体事物的软件模型。
比如,一辆汽车、一个人、一本书都可以被抽象为对象。
每个对象都具有自己的属性(如颜色、尺寸、名称等)和行为(如移动、说话、打开等)。
2、类(Class)类是对象的模板或蓝图。
它定义了对象所具有的属性和方法。
通过创建类,我们可以创建出多个具有相同特征和行为的对象。
例如,我们可以定义一个“汽车类”,其中包含汽车的属性(品牌、型号、颜色、速度等)和方法(加速、刹车、转弯等)。
3、属性(Attribute)属性是对象的特征或数据。
它们描述了对象的状态。
比如,汽车对象的属性可以包括颜色、品牌、型号、速度等。
4、方法(Method)方法是对象能够执行的操作或行为。
这些操作通常会改变对象的状态或执行一些计算。
例如,汽车对象的方法可以是加速、刹车、转弯等。
二、面向对象编程的三大特性1、封装(Encapsulation)封装是将对象的属性和方法包装在一起,形成一个独立的单元。
外界只能通过对象提供的公共接口来访问和操作对象的内部数据。
这样可以保护对象的内部实现细节,避免外部代码直接修改对象的内部状态,从而提高了代码的安全性和可维护性。
例如,我们可以将汽车的速度属性封装在汽车对象内部,并提供一个“加速”方法来修改速度。
外部代码不能直接修改速度属性,只能通过调用“加速”方法来实现。
2、继承(Inheritance)继承允许一个类从另一个类继承属性和方法。
这有助于减少代码的重复,提高代码的复用性。
被继承的类称为父类(或基类),继承父类的类称为子类(或派生类)。
一简答题(本大题共五小题,每小题6分,共30分)1,面向对象方法的基本特征抽象性;封装性;继承性;多态性;2,封装,抽象,继承,多态的定义,作用封装:数据封装就是指一组数据与这组数据有关的操作机会组装在一起,形成一个能动态的实体,也就是对象。
\使得程序员再设计程序时可以专注自己的对象,同时也切断了不同模块之间数据的非法使用途径,从而减少了出错的可能性。
抽象:抽象是一种从一般的观点看待事物的方法,他要求程序员集中于事物的本质特征而不是具体细节或具体实现。
\?继承:继承是对许多问题中分层特性的一种自然描述,因而也是类的具体化和实现重用的一种手段,它所表达的就是一种不同类之间的继承关系。
\一方面可以减少多余的代码,另一方面可以通过协调性来减少接口和界面。
多态:不同的对象接收到相同的消息时产生完全不同的行为的现象成为多态性。
\使用多态性可以大大提高人们解决复杂问题的能力。
3,函数重载C++语言编译系统允许为两个或两个以上的函数取相同的函数名,但是形参的个数或者形参的类型不应相同,编译系统会根据实参和形参的类型及个数的最佳匹配,自动确定调用哪一个函数,这就是所谓的函数重载。
\函数重载使函数使用方便,便于记忆,也使得程序设计更加灵活,增加程序的可读性。
4,类和对象,二者间的关系在面向对象系统中并不是将各个具体的对象都进行描述,而是忽略其本质特性,找出共性,将对象划分成不同的类,这一过程称为抽象过程。
类是对象的抽象及描述,是具有共同属性和操作的多个对象的共同特征,类的每个对象都是该类的实例。
5,类成员的访问控制权限类成员有三种访问控制权限,分别是private(私有成员),public(共有成员),protected (受保护成员),在每一种访问控制权限下,均可以定义数据成员和成员函数。
6,构造函数,析构函数构造函数:构造函数是一个与类同名没有返回值的特殊成员函数一般用于初始化类的数据成员,每创建一个对象时,编译系统就自动调用构造函数构造函数既可以在类外定义也可以作为内联函数在类内定义。
面向对象程序设计复习资料第2章面向对象思维建立面向对象程序设计的特征:①模块化;②抽象化;③封装;④可组合;⑤继承;⑥软件持续使用时间更长。
面向对象思维分为两步:一是需求分析,识别出有哪些对象,它们分别做什么事(who&&what);二是如何利用对象协作完成一件完整的事情(how)。
·类与对象的概念和关系:1)类是面向对象程序设计方法的核心,利用类可以实现对数据的封装和隐蔽。
在面向对象程序设计中,程序模块是由类构成。
类是对逻辑相关的函数与数据的封装,它是对问题的抽象描述。
C++的语法提供了对自定义类型的支持,这就是类。
正如基本数据类型中隐含的数据和操作,因此在定义一个类时也要说明数据和操作。
2)类实际上是一种抽象机制,它描述了一类为问题的属性和行为,即类描述了一类对象的数据存储和操作特征。
每一个怪物都有一些共同的静态特征,这些共同的特征抽象到类中,统称为该类的属性,属性通过声明普通变量来实现。
每一个怪物都有一些共同的动态行为,这些共同的行为抽象到类中,统称为该类的操作,操作通过声明普通变量来实现。
怪物类伪类图:第3章面向对象思维建模UML:统一建模语言或标准建模语言1)类图:常见的UML图,显示了建模的静态结构,特别是模型中存在的类、类的内部结构以及他们与其他类的关系等。
类与类之间的常见关系:①依赖关系:依赖关系的偶然性和临时性——人依赖船②聚合关系:整体与部分之间是可分离的③继承关系:含义:儿子类继承父亲类,不仅继承所有属性和行为,还自己拓展2)时序图:也称为序列图或循序图或顺序图,是一种UML交互图,它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。
类图表示“不因时间而变化的部分(静态关系)”;时序图表示“随时间而变化的部分(动态行为)”时序图的元素组成和绘制流程:对象:类的实例;三种状态——激活、运行、销毁生命线:对象在一段时间内的存在激活:对象操作的执行消息:对象之间的通信机制(五类:递归调用、普通操作、返回消息、导步调用)3)用例图:指由参与者、用例以及他们之间的关系构成的用于描述系统功能的视图。
C++面向对象部分考试复习提纲1.面向对象的三大特点:封装、继承、多态一、类1.class A{…}↓数据、数据操作封装在一起访问属性构造函数:类名()析构函数:~类名()(有3种:private【私有】;public【公有】;protected【保护】)缺省构造函数(即:没有参数的构造函数)拷贝构造函数A(A&A)补充:①inline f();函数名前面加上inline,可以令函数变为内联函数。
一般只有在函数成员的代码比较少的情况下才把函数设置为内联函数。
②友元friend f()③静态数据成员:④构造函数:完成对象的初始化。
函数名与类名相同,无返回值。
可以重载。
⑤拷贝构造函数:用已知对象去初始化一个新的对象。
⑥静态数据成员:是属于类的。
Lgw:①:在缺省条件下类中成员访问修饰符是private【私有】。
②:友元函数的使用:class A{...friend void fun(...); //说明函数fun( )是类A的友元函数...};void fun(...){class A a; //于是在此函数中,... //可以直接访问类A的私有成员}③静态数据成员的使用:class Sample{private:int a, b, c ;static int d ; // 定义静态数据成员……} s1, s2, s3;int Sample::sum = 0; //静态数据成员的初始化必需在类体外进行④关于友元函数的几点说明:①友元函数不是类的成员函数。
因此,对友元函数指定访问权限无效,可以把友元函数的说明放在private、public、protected 的任意段中。
②使用友元函数的目的是提高程序的运行效率。
③慎用友元函数,因为它可在类外直接访问类的私有或保护成员,破坏了类的信息隐藏的特性。
二、继承与派生父(基类)子(派生类) ↓派生类定义Class B :public A {…};单继承 多继承 A A B B C C 重点:①构造函数 ②基类成员在派生类中访问属性可能发生变化 二义性问题A f () A f ()BC DB:f () C:f () Class B ():A () {…}构造函数Lgw :①在C++中,有两种继承方式:单一继承和多重继承。
一、填空题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. 关于封装,下列说法中不正确的是()。
面向对象程序设计复习资料(可编辑修改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.继承具有,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。
《面向对象程序设计》课程期末复习资料《面向对象程序设计》课程讲稿章节目录:第一章、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.C++语言的编译单位是扩展名为__________的__________文件。
当执行cin语句时,从键盘上输入每个数据后必须接着输入一个________符,然后才能继续输入下一个数据。
2. 假定x=5,y=6,则执行表达式y+=x--计算后,x和y的值分别为__________和__________。
4. 字符串“This\’s a book.\n”的长度为__________。
5. 若x=5, y=10, 则计算y*=++x表达式后,x和y的值分别为______和______。
6. 对象是对问题域中客观事物的________,它是一组属性和在这些属性上操作的__________。
7. 若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上________和两个冒号分隔符。
1.一个函数功能不太复杂,但要求被频繁调用,选用( )
A.内联函数
B.重载函数
C.递归函数
D.嵌套函数
2.下列不是描述类的成员函数的是( )
A.构造函数
B.析构函数
C.友元函数
D.拷贝构造函数
3.构造函数不具备的特征的是( )
A.构造函数的函数名与类名相同
B.构造函数可以重载
C.构造函数可以设置默认参数
D.构造函数必须指定类型说明
4.类的构造函数的作用是( )
A.一般成员函数
B.类的初始化
C.对象的初始化
D.删除对象创建的所有对象
5.类的析构函数是在( )调用的。
A.类创建时
B.创建对象时
C.删除对象时
D.不自动调用时
6.在公有继承的情况下,基类成员在派生类中的访问权限( )
A.受限制
B.保持不变
C.受保护
D.不受保护
7.C++类体系中,不能被派生类继承的有( )
A.转换函数
B.构造函数
C.虚函数
D.静态成员函数
8.假定AB为一个类,则执行AB x;语句时将自动调用该类的( )
A.有参构造函数
B.无参构造函数
C.拷贝构造函数
D.赋值构造函数。