oop技术:面向对象技术复习思考题.doc

合集下载

OOP技术:面向对象技术1-10章习题

OOP技术:面向对象技术1-10章习题

OOP技术:习题第1章习题1. 什么是面向对象技术?2. 面向对象与面向过程程序设计有什么不同?3. 面向对象技术有哪些优点?4. 面向对象技术中的封装性有何优缺点?如何克服这些缺点?5. 为什么要应用继承机制?6. C++对多态性的支持体现在哪些方面?7. 目前常用的面向对象程序设计语言有何异同?8. 什么是.NET?第2章习题1. 写出下面程序的运行结果。

#include <iostream.h>void main(){int* a;int* &p=a;int b=10;p=&b;cout<<*a<<endl;cout<<*p<<endl;}2. 写出下面程序的运行结果。

#include <iostream.h>void main(){int iarray[10]={0,2,4,6,8,10,12,14,16,18};int sum=0;int* iptr=iarray;for(int i=0;i<10;i++){sum+=*iptr;iptr++;}cout<<"sum is"<<sum<<endl;}3. 写出下面程序的运行结果。

#include <iostream.h>int m=8;int add3(int x,int y=7,int z=m){ return x+y+z; }void main(){int a=1,b=2,c=3;cout<<add3(a,b)<<endl;cout<<add3(10)<<endl;}4. 编程求所有的水仙花数。

如果一个三位数的个位数、十位数和百位数的立方和等于该数本身,则称该数为水仙花数。

5. 编程求1000以内所有素数。

6. 编写一个可以打印任何一年日历的程序。

oop面试题

oop面试题

oop面试题面向对象编程(Object-Oriented Programming,简称OOP)是一种常用的程序编程范式。

OOP的设计理念主要是以对象为中心,通过封装、继承和多态等概念来模拟现实世界中的各种事物和其相互关系。

在软件开发领域,OOP已经成为主流的编程范式之一,很多面试中都会涉及与之相关的问题。

本文将从不同角度介绍一些常见的OOP面试题。

一、什么是面向对象编程?面向对象编程是一种编程范式,它的核心思想是将程序中的数据和操作数据的方法组织成对象,并通过对象之间的交互来完成程序的设计和实现。

面向对象编程提供了封装、继承和多态等特性,可以更好地组织和管理代码。

二、封装、继承和多态是什么?封装是指将数据和操作数据的方法打包在一起,对外界隐藏实现细节,只提供特定的公共接口进行交互。

封装可以提高代码的安全性和可维护性。

继承是指一个类可以继承另一个类的属性和方法,并可以在此基础上扩展新的属性和方法。

通过继承,可以实现代码的重用和扩展。

多态是指同一类的对象在不同情况下表现出不同的行为。

通过多态,可以编写出更具灵活性和可扩展性的代码。

三、面向对象编程的优点有哪些?面向对象编程具有以下几个优点:1. 代码重用:通过继承和多态,可以更好地实现代码的重用,减少代码冗余。

2. 模块化设计:通过封装可以将功能模块化,提高代码的可维护性和可读性。

3. 容易扩展:通过继承和多态,可以方便地扩展代码功能,使系统更加灵活和可扩展。

4. 高内聚低耦合:对象之间通过接口进行交互,使得系统各个部分之间的耦合度降低,提高代码的可维护性和可测试性。

5. 代码可靠性增强:面向对象编程可以提供更好的代码复用和封装性,减少了代码出错的可能性。

四、请简要描述封装的作用和实现方法。

封装的作用是将数据和操作数据的方法打包在一起,对外界隐藏实现细节,只提供特定的公共接口进行交互。

通过封装可以提高代码的安全性和可维护性。

在面向对象编程中,封装可以通过访问修饰符来实现。

OOP技术:面向对象程序设计期末复习指导

OOP技术:面向对象程序设计期末复习指导

OOP技术:面向对象程序设计期末复习指导面向对象程序设计课程系中央电大开放教育本科计算机科学与技术专业统设必修课程,本课程的期末复习以中央电大下发的资料和网上复习指导为准。

为了加强期末复习,下面市电大给出一套综合练习题,仅作参考。

综合练习题一、单选题1、 C++源程序文件的默认扩展名为( )。

A:cpp B:exe C:obj D:lik2、用new运算符创建一个含10个元素的一维整型数组的正确语句是( )。

A: int *p=new a[10];B: int *p=new float[10];C: int *p=new int[10];D: int *p=new int[10]={1,2,3,4,5}3、假定有“struct BOOK{char title[40]; float price;}; BOOK *book=new BOOK;”,则正确的语句为()。

A: strcpy((*book)->title,”Wang Tao”);B: strcpy(*book.title,”Wang Tao”);C: strcpy(book->title,”Wang Tao”);D: strcpy(book.title,”Wang Tao”);4、假定指针变量p定义为“int *p=new int[30];”,要释放p所指向的动态内存,应使用语句()。

A: delete p;B: delete *p;C: delete &p;D: delete []p;5、关于消息,下列说法中不正确的是()。

A: 发送消息的对象请求服务,接受消息的对象提供服务B: 消息的发送者必须了解消息的接收者如何相应消息C: 在C++中,消息的发送具体体现为对接收消息的对象的某个函数的调用D: 每个对象只能接收某些特定格式的消息6、对于任一个类,用户所能定义的析构函数的个数至多为( )。

A: 0 B: 1 C: 2 D: 任意个7、 do语句能够改写为()语句。

(完整)c++面向对象复习题答案版要点

(完整)c++面向对象复习题答案版要点

一、填空题1.C++中有两种数据类型:( char )和( int long )可以使用signed修饰符。

在C++中,用数组、指针、和(引用 )作为函数参数,能够将参数值带回.2.为了降低函数调用的时间开销,建议将小的调用频繁的函数定义为(内联函数),方法是在函数类型前加上(inline)关键字。

3.面向对象的程序设计有四大特征,它们是抽象、封装、( 继承 )、(多态).4。

拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是(把对象的每个数据成员的值都复制到新建立的对象中)。

5。

用new申请某一个类的动态对象数组时,在该类中必须能够匹配到(该类的)构造函数,否则应用程序会产生一个编译错误。

6.静态数据成员必须在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象(共享).7。

在C++中,定义重载函数时,应至少使重载函数的参数个数或参数类型( 不同 )。

8。

在C++中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象程序设计的( 封装)特性。

9.预编译指令由三种,它们是:文件包含、( 宏定义 )和( 条件编译).10。

静态的成员函数没有隐含的( this ),所以,它们只能直接访问类的静态的数据成员。

11.在C++中,函数的参数有两种传递方式,它们是值传递和( 地址 )。

12.当非静态成员函数被调用时,该成员函数的( this)指向调用它的对象。

13。

拷贝构造函数使用( 引用)作为参数初始化创建中的对象。

14。

在公有继承的情况下,基类数据成员在派生类中的访问权限(不变 ).15.在C++中,构造派生类对象时,总是先从(基类 )的初始化开始的。

16。

当需要统计程序中某个类创建对象的个数时,需要给该类定义(静态数据)成员。

17。

在多个类之间有重复继承时,为避免被重复继承的基类数据成员在内存中有多个拷贝,应将该基类定义为( 虚基类)。

18.在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为(抽象类),定义该类至少具有一个( 纯虚函数 )。

OOP技术:面向对象基础知识题

OOP技术:面向对象基础知识题

OOP技术面向对象基础知识题一、判断题1.面向对象的程序设计是一种以对象为基础,由事件驱动对象执行程序的设计方法。

2.所谓属性是指对象的名字、大小、位置和颜色等特性。

3.方法是对象调用的、用来完成特定操作的特殊子程序。

4.一个工程必须有一个启动对象,默认的启动对象是第一个被创建的窗体。

5.可以在程序设计阶段通过属性窗口,也可以通过程序代码设置对象的属性。

6.如果对象的Enabled属性为False,则对象不对事件做出响应。

*7.除了作为启动对象的窗体外,工程中其他的窗体只有通过加载语句或相关的对象方法对窗体进行加载,并设置可见,窗体才会显示在屏幕上。

*8.在窗体中用Show或Hide方法和在代码中将Visible属性分别设置True 或False 的效果是一样的。

9.窗体的Caption 属性用来设置窗体的标题,在代码中可用这个标题引用该窗体。

*10.当对象具有焦点时,按下键盘上一个键会触发该对象的KeyDown 事件。

*11.当对象具有焦点时,松开键盘上一个键会触发该对象的KeyUp 事件。

*12.当对象具有焦点时,按下、松开键盘上一个键会触发该对象的KeyPress 事件。

该事件先于KeyDown事件而后于KeyUp事件发生。

13.窗体的Enabled属性为False时,窗体上的按钮、文本框等控件仍会对用户的操作做出反应。

*14.执行Form1.Hide 语句,窗体Form1被隐藏,同时Form1的Visible属性自动被置成False。

*15.在一个窗体的代码中不能使用UnLoad语句来卸载本窗体,即一个窗体只能由其他窗体卸载。

16.语句Form1.Move 1000,1200把窗体Form1移动到水平坐标为1000单位,把窗体宽度改成为1200单位。

17.在程序代码中设置对象属性时,若对象名缺省,则隐含指当前窗体对象的属性。

18.Print方法的缺省对象是当前窗体。

19.在程序代码中,可以用赋值语句给对象的属性赋值。

OOP技术:面向对象技术复习思考题

OOP技术:面向对象技术复习思考题

OOP技术:《面向对象技术》复习思考题一.填空题1.在C++中,函数的参数有两种传递方式,它们是值传递和员函数被调用时,该成员函数的2.拷贝构造函数使用3.在公有继承的情况下,基类数据成员在派生类中的访问权限4.用new申请某一个类的动态对象数组时,在该类中必须能够匹配到造函数,否则应用程序会产生一个编译错误。

5.静态数据成员在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象6.设"int a=3,b=4,c=5;",表达式"(a+b)>c&&b!=c"的值是7.在C++中,定义重载函数时,应至少使重载函数的参数个数或参数类型8.动态联编要满足两个条件,它们是9.在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为10.举出C++中两种用户自定义的数据类型:11.C++中没有字符串类型,字符串是通过都有一个结尾字符12.在C++中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象程序设计的13.在C++中,构造派生类对象时,总是先从14.类是用户定义的类型,具有类类型的变量称作15.在5个运算符"*(乘号) 、&&、<=、!、!= "中,优先级由高到低的顺序是16.在C++中,类定义一般用class关键字,不过用struct关键字也可以定义类,它们定义类的区别在于17.静态的成员函数没有隐含的所以,它们只能访问静态的数据成员。

18.与"(!a==0)"等价的C++表达式是19.若a=6,b=4,c=2,则表达式"!(a-b)+c-1&&b+c/2"的值是20.在面向对象的程序设计中,通过现数据隐藏;通过21.在类的定义中,说明为protected的数据成员称为保护成员。

保护数据成员具有双重作用:对于其派生类而言,22.C++signed修饰符。

计算机编程面向对象复习

计算机编程面向对象复习

计算机编程面向对象复习在计算机编程领域,面向对象编程(Object-oriented Programming,简称OOP)是一种常用的编程范式。

具备深入了解和掌握面向对象编程的知识对于计算机科学专业的学生来说是非常重要的。

本文将对面向对象编程进行复习,以帮助读者加深对该概念的理解。

一、面向对象编程基础概念面向对象编程是一种软件设计和编写代码的方法,其核心思想是通过定义和创建对象来实现程序功能。

在面向对象编程中,对象是将数据和相关的操作封装在一起的实体。

下面将介绍面向对象编程的几个基本概念。

1. 类(Class)类是面向对象编程的基本构建块。

它是一个模板或蓝图,用于创建对象。

类可以定义对象的属性(成员变量)和方法(成员函数)。

举例来说,我们可以创建一个名为"Person"的类来表示人的概念,该类可以包含姓名、年龄等属性,并且可以有相应的方法来处理这些属性。

2. 对象(Object)对象是由类创建出来的实例。

类定义了对象的属性和行为,而对象则根据类的定义来存储数据和执行操作。

例如,我们可以通过"Person"类创建一个名为"John"的对象,该对象具有特定的姓名和年龄属性,并且可以调用类定义的方法。

3. 封装(Encapsulation)封装是面向对象编程的一项重要特性,它将数据和操作封装在一个对象中,对外部程序隐藏了内部的具体实现细节。

通过封装,对象提供了一种安全和可靠的方式来访问和修改其数据。

这也符合软件工程中的"信息隐藏原则",提高了代码的可维护性和可扩展性。

4. 继承(Inheritance)继承是面向对象编程中的另一个核心概念,它允许我们创建一个新类(子类)来继承现有类(父类)的属性和方法。

子类可以继承和重用父类的代码,同时还可以扩展或修改父类的功能。

继承提供了代码重用和层次化编程的能力,使得程序设计更加灵活和可维护。

面向对象程序设计复习

面向对象程序设计复习

面向对象程序设计复习面向对象程序设计(Object-Oriented Programming, OOP)是一种编程范式,它使用“对象”来设计软件。

对象可以包含数据(通常称为属性)和代码(通常称为方法或函数)。

面向对象程序设计的核心概念包括封装、继承、多态和抽象。

封装封装是将数据和操作这些数据的方法组合在一起的过程。

这样做可以隐藏对象的内部状态,只暴露出一个可以被外部访问的接口。

封装的目的是保护数据不被外部代码直接访问和修改,而是通过方法来进行操作。

继承继承允许一个类(子类)继承另一个类(父类或超类)的属性和方法。

这可以减少代码的重复,并且可以创建一个层次结构,其中子类可以扩展或修改父类的行为。

多态多态是指允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。

这通常是通过方法重载(编译时多态)和方法重写(运行时多态)来实现的。

抽象抽象是简化复杂的现实世界问题的过程,只关注对于当前目标重要的方面。

在面向对象程序设计中,这通常意味着创建抽象类和接口,它们定义了一组方法的签名,但不提供实现细节。

类和对象类是创建对象的蓝图或模板。

它定义了对象的属性和方法。

对象是根据类创建的实例,每个对象都有其自己的状态和行为。

构造函数和析构函数构造函数是一种特殊的方法,当创建新对象时自动调用,用于初始化对象的状态。

析构函数是类的另一个特殊方法,当对象被销毁时调用,用于清理资源。

访问修饰符访问修饰符控制类成员的可见性。

常见的访问修饰符包括public(公开的)、private(私有的)、protected(受保护的)和friend(友元)。

接口和抽象类接口定义了一组方法的签名,但不提供实现。

抽象类可以包含抽象方法,这些方法必须在子类中实现。

组合和聚合组合是一种特殊的“has-a”关系,其中一个对象包含另一个对象作为其属性。

聚合是一种更弱的“has-a”关系,其中一个对象可以与另一个对象相关联,但不是其属性。

面向对象程序设计复习资料

面向对象程序设计复习资料

面向对象程序设计复习资料第2章面向对象思维建立面向对象程序设计的特征:①模块化;②抽象化;③封装;④可组合;⑤继承;⑥软件持续使用时间更长。

面向对象思维分为两步:一是需求分析,识别出有哪些对象,它们分别做什么事(who&&what);二是如何利用对象协作完成一件完整的事情(how)。

·类与对象的概念和关系:1)类是面向对象程序设计方法的核心,利用类可以实现对数据的封装和隐蔽。

在面向对象程序设计中,程序模块是由类构成。

类是对逻辑相关的函数与数据的封装,它是对问题的抽象描述。

C++的语法提供了对自定义类型的支持,这就是类。

正如基本数据类型中隐含的数据和操作,因此在定义一个类时也要说明数据和操作。

2)类实际上是一种抽象机制,它描述了一类为问题的属性和行为,即类描述了一类对象的数据存储和操作特征。

每一个怪物都有一些共同的静态特征,这些共同的特征抽象到类中,统称为该类的属性,属性通过声明普通变量来实现。

每一个怪物都有一些共同的动态行为,这些共同的行为抽象到类中,统称为该类的操作,操作通过声明普通变量来实现。

怪物类伪类图:第3章面向对象思维建模UML:统一建模语言或标准建模语言1)类图:常见的UML图,显示了建模的静态结构,特别是模型中存在的类、类的内部结构以及他们与其他类的关系等。

类与类之间的常见关系:①依赖关系:依赖关系的偶然性和临时性——人依赖船②聚合关系:整体与部分之间是可分离的③继承关系:含义:儿子类继承父亲类,不仅继承所有属性和行为,还自己拓展2)时序图:也称为序列图或循序图或顺序图,是一种UML交互图,它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。

类图表示“不因时间而变化的部分(静态关系)”;时序图表示“随时间而变化的部分(动态行为)”时序图的元素组成和绘制流程:对象:类的实例;三种状态——激活、运行、销毁生命线:对象在一段时间内的存在激活:对象操作的执行消息:对象之间的通信机制(五类:递归调用、普通操作、返回消息、导步调用)3)用例图:指由参与者、用例以及他们之间的关系构成的用于描述系统功能的视图。

面向对象程序设计课后答案

面向对象程序设计课后答案

面向对象程序设计课后答案面向对象程序设计是计算机科学领域的一门重要课程,通过学习这门课程,我们可以深入理解面向对象的编程思想和方法。

本文将针对面向对象程序设计的一些常见问题给出详细的答案,帮助读者更好地理解和掌握这门课程。

一、什么是面向对象程序设计?面向对象程序设计(Object-Oriented Programming,简称OOP)是一种软件开发的方法和思想,它将程序中的数据和操作数据的方法组合成一个对象,通过对象的相互调用来完成任务。

面向对象程序设计可以更好地模拟现实世界的事物和关系,提高软件的可维护性和可扩展性。

二、面向对象程序设计的基本特征有哪些?1. 封装(Encapsulation):将数据和操作封装在一个对象中,对外部隐藏内部的实现细节,提供统一的接口进行访问。

2. 继承(Inheritance):通过继承可以使一个类获取另一个类的属性和方法,减少代码的重复性,提高代码的复用性。

3. 多态(Polymorphism):不同的对象可以对相同的消息做出不同的响应,同一个方法可以根据具体的对象类型来执行不同的操作。

三、什么是类和对象?1. 类(Class):类是一种抽象的数据类型,它定义了对象共同具有的属性和方法。

类是面向对象程序设计的基础,用于描述对象的特征和行为。

2. 对象(Object):对象是类的一个实例,具有类定义的属性和方法。

对象是面向对象程序设计的基本单位,可以通过对象来访问和操作数据。

四、如何定义一个类?在面向对象程序设计中,可以通过以下步骤来定义一个类:1. 确定类的名称:类名通常使用大写字母开头,采用驼峰命名法。

2. 确定类的属性:类的属性是描述对象特征的变量,可以包括基本数据类型和其他对象。

3. 确定类的方法:类的方法是描述对象行为的函数,可以有参数和返回值,用于操作类的属性。

五、如何创建对象?在面向对象程序设计中,可以通过以下步骤来创建对象:1. 使用关键字new来实例化一个对象:Object obj = new Object();2. 调用对象的构造方法(Constructor):构造方法用于初始化对象的属性,在类中可以定义一个或多个构造方法。

C-面向对象程序设计习题解答(全)Word版

C-面向对象程序设计习题解答(全)Word版

《C++面向对象程序设计》习题解答陈腊梅目录第一章面向对象程序设计概述.............................................................. 错误!未定义书签。

第二章对C语言的基础扩充................................................................... 错误!未定义书签。

第三章类和对象的初步探讨 ................................................................. 错误!未定义书签。

第四章类和对象的进一步解析.............................................................. 错误!未定义书签。

第五章在对象中使用运算符—运算符重载.......................................... 错误!未定义书签。

第六章继承与派生 (2)第七章多态性与虚函数 (2)第一章面向对象程序设计概述一、选择题二、填空题1、多态性2、成员函数3、抽象4、处理这些数据的操作或处理这些数据的函数5、面向对象分析、面向对象分析、面向对象编程、对象对象测试、面向对象维护第二章对C语言的基础扩充二、程序阅读题1答案a=639,b=78,c=122答案a=5,b=8a=8,b=53答案104答案x=20.6 y=5 z=Ax=216.34 y=5 z=Ax=216.34 y=2 z=Ax=216.34 y=2 z=E5答案ic=11fc=7.82ic=5fc=2.15第三章类和对象的初步探讨一、选择题二、填空题1 数据成员、成员函数2 private 、protected 、public3 指向对象的指针、对象的引用4 属性、行为、属性、行为5 对象、属性和操作这些属性的操作、对外隐藏四、程序改错题#include <iostream>using namespace std;class Clock{//public:void set_clock(void);void show_clock(void);//private:int hour;int minute;int second;};Clock clock;int main( ){clock.set_clock( );clock.show_clock ( );//return 0 ;}void Clock::set_clock(void){cin>>hour;cin>>minute;cin>>second;}void Clock::show_clock(void){cout<<hour<<":"<<minute<<":"<<second<<endl;}第四章类和对象的进一步解析二、填空题1 this2所有成员3友元类、友元函数4 friend5 程序编译、程序结束三、程序阅读题1答案Default constructor called.constructor called.0,06,86,8Destructor called.0,0Destructor called.2答案x!=y3答案Initalizing defaultInitalizing default0 0Destructor is activeDestructor is active4答案n=2,sum=2n=3,sum=5n=5,sum=105答案x=36答案x=1,y=2x=30,y=407答案1 2 3 4 4exit main3 2 1 08答案n=1009答案the student is:Li Huthe teacher is:Wang Ping10答案211答案1035,789.50412答案13答案constructing object:x=1第五章在对象中使用运算符—运算符重载二、程序完善题1(1)A A::operator+(A &b)(2){ A temp;temp.i = i+b.i;return temp; }三、程序阅读题1.答案n=4n=3232.答案c1=10 c2=20c1=100 c2=200c1=11 c2=21c1=100 c2=2003.答案1 2 4 7 11 16第六章派生与继承1 继承2 具体化、抽象3 公有继承、保护继承、私有继承4 子对象5 public(共有的)、protected(保护的)、不可访问6 protected(保护的)、protected(保护的)、不可访问的7 private(私有的)、private(私有的)、不可访问的8 二义性1.C++语言中,既允许单继承,又允许多继承。

面向对象复习

面向对象复习

面向对象复习1. 面向对象的概念和特点面向对象编程是一种程序设计思想,它将问题划分为各个独立的对象,对象之间通过消息传递来进行交互,从而实现程序的功能。

面向对象的特点包括封装、继承和多态。

封装是指将数据和对数据的操作封装在一个对象中,对象对外提供公共接口,可以隐藏内部的具体实现细节,提高代码的可维护性和复用性。

继承是指一个类可以继承另一个类的属性和方法,通过继承可以实现代码的重用和层次结构的建立,提高代码的可扩展性。

多态是指同一个方法可以根据调用对象的不同而表现出不同的行为,通过多态可以实现接口的统一访问和提高代码的灵活性。

2. 类和对象的关系类是面向对象编程的基本概念,它是对一组具有相同属性和方法的对象的抽象描述。

对象是类的实例化,是具体的、能够在内存中存在的实体,它可以调用类的方法并访问类的属性。

类和对象的关系是一种抽象与具体的关系,类是对象的模板,对象是类的实例。

通过类可以创建多个对象,每个对象都具有相同的属性和方法,但是其属性的具体取值可以不同。

3. 类的定义和属性、方法的描述类的定义包括类名、属性和方法。

属性是类的特征,描述了类的状态和数据。

属性可以是基本类型(如整数、浮点数等)或其他对象的引用。

属性可以设置为公共属性或私有属性,公共属性可以被外部访问和修改,私有属性只能在类的内部访问和修改。

方法是类的行为,描述了类的操作和功能。

方法可以访问和修改类的属性,它可以是类的公共方法或私有方法,公共方法可以被外部调用,私有方法只能在类的内部调用。

4. 继承和多态的使用继承是面向对象编程的重要特性,它通过子类继承父类的属性和方法,实现代码的重用和层次结构的建立。

多态是指同一个方法可以根据调用对象的不同而表现出不同的行为。

多态通过方法的重写和接口的实现来实现。

在使用多态时,可以通过父类类型的引用指向子类的对象,从而实现对子类对象的访问。

5. 面向对象的设计原则面向对象设计的目标是实现代码的重用、可扩展和易维护。

面向对象复习

面向对象复习

面向对象(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关键字:修饰属性:修饰属性:常量:一旦定义里面的值不能改变。

面向对象程序设计单元复习指导及解答

面向对象程序设计单元复习指导及解答

面向对象程序设计单元复习指导及解答2011春面向对象程序设计单元复习指导(3)一、填空题:1. 若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字()放在函数原型或函数头的前面。

A. inB. inlineC. inLineD. InLiner2. 在关键字public后面定义的成员为类的()成员。

A. 私有B. 公用C. 保护D. 任何3. 假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为()。

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

A. int AA::a()B. int AA:a()C. AA::a()D. AA::int a()5. 在多文件结构的程序中,通常把类的定义单独存放于()中。

A. 主文件B. 实现文件C. 库文件D. 头文件6. 一个C++程序文件的扩展名为()。

A. .hB. .cC. .cppD. .cp7. 假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数的类型为()。

A. intB. charC. AAD. AA*8. 假定AA是一个类,“AA* abc()const;”是该类中一个成员函数的原型,若该函数返回this值,当用x.abc()调用该成员函数后,x 的值()。

A. 已经被改变B. 可能被改变C. 不变D. 受到函数调用的影响9. 当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为( )。

A. nB. n+1C. n-1D. n-210. 在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾(即最后一个)元素的位置为( )。

A. length+1B. first+lengthC. (first+length-1)%MSD. (first+length)%MS11. 在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,若链队非空,则进行插入时必须把新结点的地址赋给( )。

《面向对象技术》期末复习资料.docx

《面向对象技术》期末复习资料.docx

《面向对象技术》期末复习资料试卷题型说明:、填空题(10分)选择题(20道题40分)、判断题(10分)、简 答题(3道16分)、写出程序运行结果(4道16分)、程序填空题(1道4分) 编程题(1道4分)。

一〜二、基础题(各章的编程实例不考)1、第一章主要重点在1・2节,1・5节,其中1・6节最为重要。

1- 2:面向对彖程序语言的特征:抽彖、封装、继承和多态。

1- 5:数值型数据的输入:读取时省略数据前的空白,如果遇到正负号或数字,就开始 读数,包括浮点型数据的小数点,并在遇到空口符或其他非数字字符时停止。

1- 5-4:输出格式控制符:Setprecision (n ) n 代表输出的有效数位,包括整数的数位和小数的数位。

Setw (n ) n 代表输出的数据占有的列宽(域宽)SetiosflagsO / Resetiosflags ()用于设置或取消输入或输出的各种格式包括改变数制基数、设置浮点数的精度、转换字母的大小写、设置对齐方式等。

Ios::left/ios::right 左右对齐函数用法:Setiosflagsflos::left / ios::right ) / Resetiosflags (Ios::left / ios::right )1- 5-5: h ex十六进制 输入时在具前加Ox oct八进制 输入时在其丽加0dec 十进制 2、第二章主要重点为:(1) 指针的定义与使用(特殊指针类型不做为重点)(2) 引用的定义与使用注意事项(3) 类型转换有所涉及,但分值不是很大(4) 重点中的重点是2.7节函数部分,尤其是函数重载。

(5) 内联函数与预处理器了解一下。

(6) 作用域和生命期理解掌握,特点是变量类型与初始化。

2- 3:指针用于存放一个对象在内存中的地址,同个指针能操作这个对彖。

具有两个属 与类型无关;长度则与指针类型和关 pi 是指向int 的指针pc 是指向指针的指针 pa 是指向指针的数组f 是指向具有两个参数的函数的指针 f 是一个函数,返回一个指向int 的指针2-3-3:堆内存也成动态内存。

c++面向对象程序设计语言重点难点复习题及答案

c++面向对象程序设计语言重点难点复习题及答案

1、数据共享与保护一、选择题:1、在下面存储类中, ( C ) 对象的可见性与生存期不一致。

A. 外部类B. 自动类C. 内部静态类D. 寄存器类2、在下面存储类中,(A)的对象不是局部变量。

A. 外部静态类B. 自动类C. 函数形参D. 寄存器类3、关于局部变量,下面说法正确的是( C )。

A. 定义该变量的程序文件中的函数都可以访问B. 定义该变量的函数中的定义处以下的任何语句都可以访问C. 定义该变量的复合语句中的定义处以下的任何语句都可以访问D. 定义该变量的函数中的定义处以上的任何语句都可以访问4、一个类的静态数据成员所表示属性 ( C )。

A. 是类的或对象的属性B. 只是对象的属性C. 只是类的属性D. 类和友元的属性5、类的静态成员的访问控制( D)。

A. 只允许被定义为privateB. 只允许被定义为private或protectedC. 只允许被定义为publicD. 可允许被定义为private、protected或public6、静态成员函数对类的数据成员访问(B)。

A. 是不允许的B. 只允许是静态数据成员C. 只允许是非静态数据成员D. 可允许是静态数据成员或非静态数据成员7、被非静态成员函数访问的类的数据成员( A )。

A. 可以是非静态数据成员或静态数据成员B. 不可能是类的静态数据成员C. 只能是类的非静态数据成员D. 只能是类的静态数据成员8、静态数据成员的初始化是在(D)中进行的。

A. 构造函数B. 任何成员函数C. 所属类D. 全局区9、当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的( D )。

A. 只能是公有成员B. 只能是保护成员C. 只能是除私有成员之外的任何成员D. 具有任何权限的成员10、引入友元的主要目的是为了( C )。

A. 增强数据安全性B. 提高程序的可靠性C. 提高程序的效率和灵活性D. 保证类的封装性11、一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明( A )。

面向对象程序设计总复习资料

面向对象程序设计总复习资料

面向对象程序设计总复习( _ 夏)复习之一、对照书本( 或上课课件)上, 搞懂有关概念【第0-1 章】1. 面向对象程序设计是不同于传统程序设计的一种新的程序设计范型。

它对降低软件的复杂性, 改进其重用性和维护性, 提高软件的生产效率, 有着十分重要的意义。

因此面向对象的程序设计被认为是程序设计方法学的一场实质性的革命( 在导学中) 。

2. 面向对象( O-O) 程序设计是一种新的程序设计范型。

这种范型的主要特征是:程序=对象+消息面向对象程序的主要结构特点是:第一, 程序一般由类的定义和类的使用两部分组成;第二, 程序中的一切操作都是经过向对象发送消息来实现的, 对象接收到后, 启动有关方法完成相应操作。

3. 现实世界中, 对象一般能够表示为: 属性+行为现实世界中的对象, 具有以下特性:(1) 每一个必须有一个名字以区别于其它对象;(2) 用属性来描述对象的某些特征;(3) 有一组操作, 每组操作决定对象的一种行为;(4) 对象的行为能够分为两类: 一类是作用于自身的行为, 另一类是作用于其它对象的行为。

4. 在现实世界中, 类是一组具有相同属性和行为的对象的抽象。

类与对象的关系是抽象和具体的关系。

在C++面向对象的程序设计中,把类中的属性称为数据(数据成员) , 类中的操作是用函数( 函数成员) 来实现的。

5. 面向对象程序设计的基本特征: 抽象性、封装性、继承性和多态性(1) . 抽象是经过特定的实例( 对象) 抽取共同性质后形成概念的过程。

(2) . 在面向对象程序设计中, 封装是指把数据和实现操作的代码集中起来放在对象内部, 并尽可能隐蔽对象的内部细节。

(3) . 继承机制允许派生类继承基类的数据和操作(即数据成员和成员函数), 也就是说, 允许派生类使用基类的数据和操作。

同时派生类还能够增加新的操作和数据。

从继承源上分, 继承分为单继承和多继承。

(4) . 面向对象系统的多态性是指不同的对象收到相同的消息时产生多种不同的行为方式。

C++试卷及答案_oop

C++试卷及答案_oop

《面向对象方法与技术》复习参考题一、单项选择题(1 20=20分)1. 下列特性中,C与C++共有的是( D )A.继承B.封装C.多态性D.函数定义不能嵌套2. 对类的构造函数和析构函数描述正确的是___A___。

A)构造函数可以重载,析构函数不能重载B)构造函数不能重载,析构函数可以重载C)构造函数可以重载,析构函数也可以重载D)构造函数不能重载,析构函数也不能重载3.下面叙述不正确的是___D___A.派生类一般都用公有派生B.对基类成员的访问必须是无二义性的C.赋值兼容规则也适用于多重继承的组合D.基类的公有成员在派生类中仍然是公有的4.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为__A____。

A)publicB)protectedC)privateD)static5. 关于构造函数的说法错误的是__A_ A.构造函数只有一个B.构造函数无任何函数类型C.构造函数名与类名相同D.构造函数在说明对象时自动执行6. 对于常数据成员,下面描述正确的是___B____。

A)常数据成员可以不初始化,并且不能更新B)常数据成员必须被初始化,并且不能更新C)常数据成员可以不初始化,并且可以被更新D)常数据成员必须被初始化,并且可以被更新7.对于常成员函数,下面描述正确的是__C___。

A)类的成员函数可以操作常对象B)类的成员函数不能操作常对象C)只有常成员函数可以操作常对象D)在常成员函数中,常对象可以被更新8. 一个函数功能不太复杂,但要求被频繁调用,选用__A_____A.内联函数B.重载函数C.递归函数D.嵌套函数9.下列关于友元的描述中,错误的是___D___A.友元函数可以访问该类的私有数据成员B.一个类的友元类的成员函数都是这个类的友元函数C.友元可以提高程序的运行效率D.类与类之间的友元关系可以继承10.假定AB为一个类,则执行AB x;语句时将自动调用该类的___B___。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11.用typedef可以增加新类型。
12.宏替换不占用运行时间。
13.在include命令行中,用双引号和用尖括号将被包含的文件名括起来没有区别。
14.C++编译中的编译预处理可以看作一行C++语句。
15.头文件必须由系统提供。
16.创建派生类对象时,先调用基类的构造函数,再调用派生类的构造函数,当销毁这个对 象时顺序正好相反,先调用派生类的析构函数,再调用基类的析构函数。
cin » c;
if(c == 'c')
(
cout« "you chose 'c'" « endl;
continue; //返回主菜单
}
if(c == d)
(
cout« "you chose'd'" « endl;
continue; //返回主菜单
}
else
(
cout« "you didn't choose c or d!"« endl;
11.在定义拷贝构造函数时,为什么通常还要定义一个重载的赋值运算符?
12.拷贝构造函数在哪几种情况下调用?
%1.判断题
1.C++语言程序中,要调用的函数必须在main。函数中定义。
2.C++语言程序中,main。函数必须放在程序开始的部分。
3.C++语言程序中,urn语句必须放在函数的最后。
4.C++程序中有调用关系的所有函数必须放在同一源程序文件中。
int k;
for(k=0;k<=l 00;k+=50)
PRINT2(k,k+12.4);
11.#include<iostream.h>
#define CIR(r) r*r
void main()
(
int x=l;
int y=2;
int z;
z=CIR(x+y);
cout«z«endl;
}
12.#include <iostream.h>
9.在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为
I,定义该类至少具有一个I0
10.举出C++中两神用户日定义的数据类型:I、I。
11.C++中没有字符串类型,字符串是通过I来表示的,每一个字符串
都有一个结尾字符I。
12.在C++中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向
(
cout« "you chose b" « endl;
continue;〃返回主菜单
I
else
cout« "you didn't choose c or d!H« endl; continue; //返回主菜单
}
cout « "you must type 1 or r or q!H« endl;
}
5.简述三种预编译指令的功能和格式
6.对象之间的相互作用和通信是通过消息。消息的组成部分有哪些?
7.如何测试你机器的int, float, double, long, char各类型变量存储的字节数。
8.do-while语句与while语句的主要区别是什么?
9.break语句实现的功能。
10.链表是怎样的一种数据结构,它与数组有什么不同?链表的插入和删除是怎样实现的?
对象程序设计的I特性。
13.在C++中,构造派生类对象时,总是先从I的初始化开始的。
14.类是用户定义的类型,具有类类型的变量称作Io
15.在5个运算符”*(乘号)、&&、v=、!、!= ”中,优先级由高到低的顺序是
16.在C++中,类定义一般用class关键字,不过用struct关键字也可以定义类,
29.使用关键字class定义的类中缺省的访问权限是私W (private)的。
30.说明或定义对象时,类名前不需加class关键字。
31.可以在类的构造函数中对静态数据成员进行初始化。
32.protected和private区别在于:protected成员可以被派生类访问,而private成员则不能 被派生类访问。
7.编写夏数类Complexo实现各种常用构造函数,实现其数之间的加、减、乘、赋值运算,以及= =、!=等逻辑运算。
8.定义一个字符栈类Stack(包括类的实现)。数据成员包括一个存放字符的数组stc虹]和 一个栈指针tos。栈数组的尺寸由常量SIZE确定。栈的基本操作为Push ()和Pop ()o
#define TEST
void main()
{
int x=0;
int y=l;
int z=l;
#ifdefTEST
cout«x«y;
#endif
cout«z;
}
%1.问答题
1.面向对象程序设计的基木思想是什么?
2.什么是对象、消息和类?
3.简述面向对象程序设计的主要特征。
4.下列运算符各能代表几种意义:*。
造函数,否则应用程序会产生一个编译错误。
5.静态数据成员在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象
6.设"inta=3,b=4,c=5;”,表达式”(a+b) >c&&b! =c”的值是I°
7.在C++中,定义重载函数时,应至少使重载函数的参数个数或参数类型
8.动态联编要满足两个条件,它们是I、Io
5.编写几何点(二维平面上)的类Point,包括位置属性(二维坐标x, y),成员函数包括 点的位置获取函数GetX ()和GetY (),点的位置设置函数SetX ()和SetY (),和点的 位置移动函数MoveTo ()以及点的信息打印函数Display()。
6.编写几何图形圆的类Circle,包括两个属性:圆心0(用上题中的Point类实现)和半径Ro成员函数包括:圆心位置获取函数GetO ()和半径获取函数GetR();圆的位置移动函 数MoveTo();圆的半径设置函数SetR();以及圆的信息打印函数Display ()o
OOP
%1.填空题
1.在C++中,函数的参数有两种传逆方式,它们是值传逆和I。当一个成
员函数被调用时,该成员函数的I指向调用它的对象。
2.拷贝构造函数使用I作为参数初始化创建中的对象。
3.在公有继承的情况下,基类数据成员在派生类中的访问权限Io
4.用new申请某一个类的动态对象数组时,在该类中必须能够匹配到I构
24.基类中定义了虚函数,在派生类中相应函数会自动变成虚函数。
25.要达到动态联编的效果,基类和派生类的对应函数不仅名字相同,而且返回类型、参数 个数和类型也必须相同。
26.如果派生类没有实现虚函数,那么它将使用他的基类的虚函数。
27.我们不能用抽象类定义对象,但可以定义对象的指针。
28.构造函数和析构函数可以是虚函数。
return 0;
)
9.#include <iostream.h>
struct stu
( int num;
char name[101;
int age;
};
void fun(stu *p)
( cout«( *p). name«end 1; }
main()
( stu students[3]=((9801,"Zhang",20),
cout« "quitting menu..." « endl;
}
2.编写一个函数,统计出具有n个元素的一维数组中大于等于所有元素平均值的元素个数 并返回它。
3.有4个学生,每个学生包括学号,姓名,成绩。要求找出成绩最高者的姓名和成绩。
4.利用静态数据成员的概念,编写一个类,可以统计目前存在多少个该类的对象。
void main()
(
int a,b,c,d;
a=2;b=3;
ast(a,b,&c,&d);
coutvvc vvdvvendl;
}
8.#include <stdio.h>
struct cmplx
(
int x;
int y;
}cnum[2]={ 1,3,2,7};
int main()
(
printf("%d\n",cnum[O].y*cnum[ I ].x);
(9802,nLongH,21},
{9803,"Xue",19}};
fun(students+2);
}
10.#include "iostream.h"
#define PR(a) cout«a
#define PRINT 1 (a) PR(a);cout«endl
#define PRINT2(a,b) PR(a);PRINTl(b) void main()
21.在类的定义中,说明为protected的数据成员称为保护成员。保护数据成员具
有双重作用:对于其派生类而言,I;而对于其外部的程序而言,
22.C++中有两种数据类型:I和I可以使用signed修饰符。
23.举出C++中两种流程控制语句、I°
24.C++中,对象保存在内存中,I内存是自动分配和释放的,而
内存需要用户I I己申请和释放。
25.在C++函数中,可用return语句带回一个值。如果有多个返回值,可用
相关文档
最新文档