oop技术:面向对象技术复习思考题.doc
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面试题面向对象编程(Object-Oriented Programming,简称OOP)是一种常用的程序编程范式。
OOP的设计理念主要是以对象为中心,通过封装、继承和多态等概念来模拟现实世界中的各种事物和其相互关系。
在软件开发领域,OOP已经成为主流的编程范式之一,很多面试中都会涉及与之相关的问题。
本文将从不同角度介绍一些常见的OOP面试题。
一、什么是面向对象编程?面向对象编程是一种编程范式,它的核心思想是将程序中的数据和操作数据的方法组织成对象,并通过对象之间的交互来完成程序的设计和实现。
面向对象编程提供了封装、继承和多态等特性,可以更好地组织和管理代码。
二、封装、继承和多态是什么?封装是指将数据和操作数据的方法打包在一起,对外界隐藏实现细节,只提供特定的公共接口进行交互。
封装可以提高代码的安全性和可维护性。
继承是指一个类可以继承另一个类的属性和方法,并可以在此基础上扩展新的属性和方法。
通过继承,可以实现代码的重用和扩展。
多态是指同一类的对象在不同情况下表现出不同的行为。
通过多态,可以编写出更具灵活性和可扩展性的代码。
三、面向对象编程的优点有哪些?面向对象编程具有以下几个优点:1. 代码重用:通过继承和多态,可以更好地实现代码的重用,减少代码冗余。
2. 模块化设计:通过封装可以将功能模块化,提高代码的可维护性和可读性。
3. 容易扩展:通过继承和多态,可以方便地扩展代码功能,使系统更加灵活和可扩展。
4. 高内聚低耦合:对象之间通过接口进行交互,使得系统各个部分之间的耦合度降低,提高代码的可维护性和可测试性。
5. 代码可靠性增强:面向对象编程可以提供更好的代码复用和封装性,减少了代码出错的可能性。
四、请简要描述封装的作用和实现方法。
封装的作用是将数据和操作数据的方法打包在一起,对外界隐藏实现细节,只提供特定的公共接口进行交互。
通过封装可以提高代码的安全性和可维护性。
在面向对象编程中,封装可以通过访问修饰符来实现。
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++面向对象复习题答案版要点

一、填空题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技术面向对象基础知识题一、判断题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技术:《面向对象技术》复习思考题一.填空题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”关系,其中一个对象可以与另一个对象相关联,但不是其属性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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语句带回一个值。如果有多个返回值,可用