《面向对象程序设计》第二次考试试题(20151126)

合集下载

面向对象程序设计第二次作业及答案

面向对象程序设计第二次作业及答案
解答:传值调用,只是把主调函数的变量的一个副本传送给被调函数,在被调函数中改变变量的值,只是改变主调函数传送变量的一个副本,并不影响主调函数中原来变量的值。如果希望主调函数中反映被调函数中参数的改变,就不能采用传值调用,而应该采用传址调用。把主调函数的变量地址传给被调函数,被调函数对变量参数的操作,直接影响到主调函数的变量值。
}
3.声明函数原型,并定义这个函数计算参数分别为立方体的长、宽、高)。
#include <iostream.h>
double cube (double, double, double) ;
void main() {
cout <<"cube=" <<cube(3.5, 2.0, 5.2)<<endl;
cout<<add(a,b)<<","<<add(c,d)<<endl;
}
程序执行结果:10,10.0
5.分析以下程序执行结果
#include<iostream.h>
int add(int x,int y)
{
return x+y;
}
double add(double x,double y)
{
return x+y;
}
void main()
{
int a=4,b=6;
double c=2.6,d=7.4;
}
}
(2)#include <iostream.h>
void main()
{
int i=1;
while(i<=100){

成人教育 《面向对象程序设计》期末考试复习题及参考答案

成人教育 《面向对象程序设计》期末考试复习题及参考答案

面向对象程序设计复习题二一、填空1.程序的三种常见结构是、、,其中结构是程序的默认结构。

2.同名方法给出不同的实现,并通过参数类型或个数进行区分,称为。

3.和“继承”匹配的概念是。

4.由类构建对象的过程称为。

5.抽象类是含有的类。

6.实现软件复用有两种方式,分别为、、。

7.有定义const int *p,p称为。

8.通过继承产生的类称为。

9.virtual关键字在C++中有两个用处,分贝是,和。

10.方法重载和实现了多态性。

11.请给出C++外的另外一种支持面向对象设计语言。

12.类的三个要素是、、。

13.对象释放前执行的函数是。

二、名词解释1、构造函数2、对象3、运算符重载4、析构函数5. 面向对象6. 继承三、简答1.比较类和结构体?2.重载的意义?3.抽象类的作用和意义?4.组合与继承的区别?四、辩析1.任何父类对象都可以被子类对象替代。

2.public修饰符号破坏了数据的开放性。

3.private继承方式不能产生子类。

4.不能实例化的类一定是抽象类。

五、综合回答1.简述多态的实现机制。

2.谈谈多态的意义。

3.面向对象程序设计思想的优点和缺点。

面向对象程序设计复习题二答案一、填空(1)顺序(2)选择(3)循环(4)顺序(5)函数重载(6)抽象(7)实例化(8)纯虚函数(9)继承(10) 组合(9)和(10)不区分顺序(11)常量指针(12)派生类(13)虚函数(14)虚拟继承(13)和(14)不区分顺序(15)覆盖(16)Java或者C#(17)类的标识(18)类的状态(19)类的操作(17)(18)(19)不区分顺序(20)析构函数二、名词解释1、当类实例化时自动调用的成员函数,负责实现对象的初始化2、按照数据类型分配的内存空间,可以实现方法的调用3、将系统定义的运算符操作对象的类型扩展的过程,一般针对自定义类型4、对象空间释放之前自动调用的函数5、是程序设计思想,相对面向过程而言更加强调封装性6、两个类之间的一种关系,其中一个类的某个成员类型是另一个类三、简答1、C++中类和结构体具有同等的功能,唯一区别是类缺省成员属性是private,而结构体缺省为public2、重载的意义在于丰富了动作的多样性,但是并不加重程序员的负担。

北语 15秋《面向对象程序设计》作业2满分答案

北语 15秋《面向对象程序设计》作业2满分答案

北语 15秋《面向对象程序设计》作业2满分答案一、单选题(共 20 道试题,共 100 分。

)1. 题面见图片A.B.C.D.正确答案:D2. 循环体至少被执行一次的语句为()。

A. for循环B. while循环C. do循环D. 任一种循环正确答案:C3. 题面见图片A.B.C.D.正确答案:D4. 在下面循环语句中循环体执行的次数为()。

int i=0; do i++; while(i*i<10);A. 4B. 3C. 5D. 2正确答案:A5. 题面见图片A.B.C.D.正确答案:B6. 函数重载是指()。

A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同C. 两个以上的函数名字不同,但形参的个数或类型相同D. 两个以上的函数取相同的函数名,并且函数的返回类型相同正确答案:A7. 题面见图片B.C.D.正确答案:A8. 题面见图片A.B.C.D.正确答案:A9. 题面见图片A.B.D.正确答案:D10. 函数调用func((exp1,exp2),(exp3,exp4,exp5))中所含实参的个数为( )个。

A. 1B. 2C. 4D. 5正确答案:B11. do语句能够改写为()语句。

A. 复合B. ifC. switchD. while正确答案:D12. 题面见图片A.B.C.D.正确答案:A13. 题面见图片A.B.C.D.正确答案:A14. 题面见图片A.B.C.D.正确答案:D15. 假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为()。

A. 2B. 4C. 6D. 8正确答案:C16. 题面见图片A.B.C.D.正确答案:C17. 题面见图片A.B.C.D.正确答案:B18. 题面见图片A.B.C.D.正确答案:C19. 以下叙述中不正确的是()。

JAVA第二次测试题汇总

JAVA第二次测试题汇总

面向对象程序设计第二次测试题一、定义一个抽象的"Role"类,有姓名,年龄,性别等成员变量1.要求尽可能隐藏所有变量(能够私有就私有,能够保护就不要公有),再通过GetXXX()和SetXXX()方法对各变量进行读写。

具有一个抽象的play()方法,该方法不返回任何值,同时至少定义两个构造方法。

Role类中要体现出this的几种用法。

2.从Role类派生出一个"Employee"类,该类具有Role类的所有成员(构造方法除外),并扩展salary成员变量,同时增加一个静态成员变量“职工编号(ID)”。

同样要有至少两个构造方法,要体现出this和super的几种用法,还要求覆盖play()方法,并提供一个finalsing()方法。

3."Manager"类继承"Employee"类,有一个final成员变量"vehicle"4.在main()方法中制造Manager和Employee对象并测试这些对象的方法二、品尝饮料1、建立一个Java抽象类Drink,应当:a、声明一个抽象方法taste(),该方法负责输出饮料的味道;b、声明int型常量来代表不同的饮料类型(咖啡、啤酒、牛奶),如:c、声明静态方法getDrink(intdrinkType),根据传入的参数创建不同的饮料对象,并返回该对象,建议使用switch语句。

该方法要求声明DrinkNotFoundException,当没有相对应的饮料类型时,抛出该异常。

2、建立Drink的具体子类:a、分别建立Drink的子类:Coffee(代表咖啡),Beer(代表啤酒),Milk(代表牛奶);b、实现taste()方法,要求在控制台打印各自的味道特征。

3、建立异常类DrinkNotFoundException继承Exceptionb、在Drink的方法getDrink(intdrinkType)中声明引发DrinkNotFoundException异常,当传入的参数没有相对应的饮料类型时,抛出异常。

面向对象程序设计复习题及参考答案

面向对象程序设计复习题及参考答案
则类B是类A的。
20.Java语言中,通常把可能发生异常的方法调用语句放到try块中,并用紧跟其后的块来捕
获和处理异常。
21.多态是指。
22.声明常量时使用修饰符。
23.Java中异常抛出使用保留字。
24.一个类成员或者方法前面加上了修饰符,那说明该数据成员和方法可以直接通过类名
来访问和调用。
25.如果类成员前面没有访问权限修饰符,则该类成员具有访问权限。
4.构造器方法有什么特点和作用?
5.保留字throw和throws有什么区别?
6.将下面的while循环改写为for循环
int count=1,sum= 0;
while ( cou nt <= 30 ) {
sum += count;
count +=3;
}
7.Java语言编译和执行的过程是?
8.检查型异常和非检查型异常有何区别?
9.请改造下面的构造方法,使第一个构造方法调用第二个构造方法。
public Class On e(i nt alpha) {
this.alpha = alpha;
this.beta = 0;
}
public Class On e(i nt alpha , int beta) {
this.alpha = alpha;
}
public int getCount(){
return count;
}
}
2.int gradeLevel;
switch (gradeLevel){
case1:System.out.print("Go to the101");
case2:System.out.print("Go to202");

面对象设计复_习_题

面对象设计复_习_题

面对象设计复习题一、选择题:1. 下列哪项不是面向对象程序设计的主要特征? da. 封装b. 继承c. 多态d. 结构2. 若给出声明:const char cc=‘a’;char *pc;const char *pcc;char c=‘ b ’ ;char * const cpc=&c;下面的赋值表达式哪个是合法的?a. pc=&cc;b. pcc=&cc;c. cpc=pc;d. cc=’ f ’ ;3. C++程序的执行总是从哪里开始的?a. main函数b. 头文件c. 第一行d. 函数注释4. 下面对类和对象的描述不正确的是:a. 对象是类的一个实例b. 任何一个对象都归属于一个具体的类c. 一个类只能有一个对象d. 类与对象的关系和数据类型与变量的关系相似5. 以下哪个不是循环语句?a. while语句b. do-while语句c. for语句d. if-else语句6. 按照标识符的要求,下列符号哪个不能组成标识符?a. 下划线b. 连接符c. 大小写字母d. 数字字符7. 已知:int m=10; 在下列表示引用的方法中,哪个是正确的?a. int &x=m;b. int &y=10;c. int &z;d. float &t=&m;8. 以下有关类与结构体的叙述不正确的是 :a. 结构体中只包括数据;类中封装了数据和操作b. 结构体的成员对外界通常是开放的;类的成员可以被隐蔽c. 用 struct 可以声明一个类型名;而 class 可以声明一个类名d. 结构体成员默认为 private ;类成员默认为 public9. 下列哪个不是构造函数的特征?a. 构造函数的函数名与类名相同b. 构造函数可以重载c. 构造函数可以设置缺省参数d. 构造函数必须指定返回值类型10. 已知:类 A 中一个成员函数说明如下:void Set(A&a); 其中, A&的含义是什么?a. 指向类 A 的指针为 ab. 将 a 的地址值赋给变量 Setc. a是类 A 对象的引用,用来作函数 Set ()的参数d. 变量 A 与 a 按位与作为函数 Set( )的参数11. 在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用下列哪个函数?a. 联函数b. 重载函数c. 递归调用d. 嵌套调用12. 已知:print( )函数是一个类的常成员函数,它无返回值,下列表示中,哪个是正确的?a. void print( ) const;b. const void print( );c. void const print( );d. void print(const);13. 以下能对对象进行初始化的是 :a. 构造函数b. 析构函数c. 友元函数d. 静态成员函数14. 关于虚函数的描述中,哪个是正确的?a. 虚函数是一个 stati c 类型的成员函数b. 虚函数是一个非成员函数c. 基类中说明了虚函数后,派生类中其对应的函数可不必说明为虚函数d. 派生类的虚函数与基类的虚函数具有不同的参数个数和类型15. 设有以下类的定义:class Temp{int x;public:void setx(int t=0);};若在类外定义成员函数 setx(),以下定义形式中正确的是哪个?a.void setx(int t){ … }b.void Temp::setx(int t){ … }c.Temp void:: setx(int t){ … }d.void Temp::setx(int t=0) { … }16. 以下关于函数重载的要求,哪个叙述不正确?a. 函数名相同b. 函数参数个数不同c. 函数返回值类型不同d. 函数参数个数相同但参数类型至少有一个不同17. 已知:class A{private: int a,b;float c;public: void func1(int,int);friend int getData();};则类 A 分别有几个数据成员和成员函数?a. 2,2b. 3,2c. 2,1d. 3,118. 已知:int a, *pa;char *p=” I like computer!” ;关于运算符 new 和 delete 的使用,下列表达式哪个是正确的?a. a=new int;b. delete p[12];c. pa=new int(10);d. p=new int[12];19. 对于类 A 而言,已知函数 A ::A(const A& a); 则该函数是类 A 的什么函数?a. 联函数b. 友元函数c. 拷贝构造函数d. 类型转换函数20. 下面类的定义中哪个地方是不正确的?class example{float x;public:example(); (a)example(int,float); (b)operator int(); (c)~example();const int y=23; (d)};二、填空题:1. 在 C++中,函数的参数有两种传递方式,它们是值传递和 ( 引用传递 ) 。

面向对象第二次考题

面向对象第二次考题

在规定时间(2小时)内完成下述题目,将题目的答案放至命名为“学号_姓名”的文件夹中,并将其提交至ftp (ftp://10.128.48.10)上的“考试提交”文件夹中,提交后,刷新屏幕,再次确认自己提交的文件大小与本机备份的文件是否一致。

Java编程用java语言逐步编程实现下述类图中的所有类和接口。

遵循Java编程规范,并为撰写的类提供相应的Javadoc注释,相应的测试文件在student-files中,可以分别测试你撰写的类是否正确。

这是一个简单的客户信息系统,该系统维护两类客户:个人客户和大客户。

说明事项:1)除了接口Customer,其他类都需要撰写构造函数,对相应的属性进行初始化。

2)所有命名遵循Java编程规范,并与类图一致,否则可能会测试不通过。

3)注意接口的编写、关联关系和继承关系的实现。

4)类CustomerInformationSystem中的方法addContact可能返回true或false,若通过参数customerId找到的对象是InstitutionalCustomer,则对Contact对象进行添加,方法addContact返回true,否则如果通过参数customerId找到的对象是IndividualCustomer,则不进行添加,方法addContact返回false。

5)equals方法判定两个Person对象是否为同一个,判定条件是name是否相等。

6)toString方法返回对象的所有属性连接形成的字符串,属性之间用下划线“_”隔开。

7)在测试类的指导下完成对每个类的测试。

8)假设cutomerId是唯一的,即不出现重复的cutomerId。

《面向对象程序设计技术》往届试卷1.doc

《面向对象程序设计技术》往届试卷1.doc

《面向对象程序设计技术》试卷1一、单项选择题(每小题1分,共20分)1、假定MyClass为一个类,则执行“” MyClass a[3],*p[2];”语句时,自动调用该类构造函数的次数为( B )A、2B、3C、4D、52、对于类中定义的成员,其隐含访问权限为(B )A、protectedB、privateC、publicD、static3、一个类的友元函数或友元类能够通过成员操作符访问该类的(B )A、私有成员B、所有成员C、公用成员D、保护成员4、下面说法正确的是(A )A、构造函数可以重载,析构函数不能重载。

B、构造函数不能重载,析构函数可以重载。

C、构造函数可以重载,析构函数也可以重载。

D、构造函数和析构函数都不可以重载。

5、下列语句的运行结果为(D )#include <iostream.h>srtuct COMPLEX{int x;int y;} cNum[2]={1,3,2,7};void main(){cout<< cNum[0] .y*cNum[1] . x<<endl;}A、3B、2C、21D、66、类AB的缺省构造函数和析构函数是(A )A、AB( )和~AB( )B、AB(int)和~AB( )C、AB( )和~AB(delete )D、AB( )和int~AB( )7、在C++中,若对函数未加说明,则函数的隐含类型是(A )A、intB、doubleC、voidD、char8、已知类A是类B的友元,类B是类C的友元,则( D )A、类A一定是类C的友元B、类C一定是类A的友元C、类C的成员函数可以访问类B的对象的任何成员D、类A的成员函数可以访问类B的对象的任何成员9、下列说法中正确的是( B )A、类定义中只能说明函数成员的函数头,不能定义函数体B、类中的函数成员可以在类体中定义,也可以在类体之外定义C、类中的函数成员在类体之外定义时必须要与类声明在同一文件中D、在类体之外定义的函数成员不能操作该类的私有数据成员10、以下不属于成员函数的是( B )A、静态成员函数B、友元函数C、构造函数D、析构函数11、对于消息队列的描述正确的是( D )A、在Windows中只有一个消息系统,即系统消息队列。

面向对象程序设计试卷及答案

面向对象程序设计试卷及答案

面向对象程序设计试卷及答案.)答案考试试卷A(面向对象程序设计注意事项:请考生按要求在试卷装订线内填写姓名、学号1.和年级专业。

请仔细阅读各种题目的回答要求,在规定的位2.置填写答案。

不要在试卷上乱写乱画,不要在装订线内填写3.无关的内容。

分钟。

100分,考试时间为1204. 满统分得单项选择一.分分,共小题,每小题3(本大题共10 评分) 30分人) B 中每个int类型的变量占用(1. C# 个字节的内存。

)C (( B)4 8 (A)1 )(D 2) A 2. 面向对象的特点是(态装封、继承、多(A)(B)抽象、封装、多态封继承、(C )抽装象、)抽象、多态、重载(D 3. C#控制台程序的主入口点是() C)C Run Page_Load(A)函数(B)函数( Main函数函数)(DForm_Load引用类型存储在()中。

B 4.))(堆内存B 堆栈)(A () C队列D (列表表示一个字符串的变量应使用以下哪在5. C#中,)B 条语句定义(.(A)CString str (B)string str(C)Dim str as string (D)char*str6.在中,用来与数据源建立连接的对象是( A )。

(A)Connection对象(B)Command 对象(C)DataAdapter对象(D)DataSet 对象7. 在类的定义中,类的( B )描述了该类的对象的行为特征。

(A)类名(B)方法(C)所属的名字空间(D)私有域8. 如果未显式赋值,则将整型值( B )赋给枚举中的第一个元素。

(A)1 (B)0 (C)23)(D)类型类型的值可以隐式转换成(9. float C的值而保持值不被改变。

double )C( long )B( char )A(int )D(是IExample而,是一个类Class1假设,中在C#10.A 下面的(,一个接口)类声明是正确的。

class Employee: Class1, IExample )A(.class Employee: IExample, Class1 B)(class Employee- Class1, IExample )(Cclass Employee: Class1/IExample )(D得.判断题二分15共每小题小题,3分,(本大题共5 评)分分中子类可以继承多个基类,也可以1. C人)×继承一个接口。

面向对象程序设计-试卷-A(附答案)

面向对象程序设计-试卷-A(附答案)

面向对象程序设计-试卷-A(附答案)本页仅作为文档页封面,使用时可以删除This document is for reference only-rar21year.March2012 --2013学年第二学期《面向对象程序设计》试卷开课单位:计算机学院,考试形式:闭卷,允许带入场对应的答题表格中)1、在类定义的外部,可以被访问的成员有()A、所有类成员B、private的类成员C、public或private的类成员D、public的类成员2、下列关于C++语言类的描述中错误的是( ) 。

A 、类用于描述事物的属性和对事物的操作B、类与类之间通过封装而具有明确的独立性C、类与类之间必须是平等的关系,而不能组成层次结构D、类与类之间可以通过一些方法进行通信和联络3、下列数组定义中,不正确的是()。

A、 int x[1][3];B、 int x[2][2]={1,2,3};C、 int x[2][]={1,2,3,4 };D、 int x[][2]={1,2,3,4 }4、定义析构函数时,应该注意:()A、其名与类名完全相同B、返回类型是void类型C、无形参,也不可重载D、函数体中必须有delete语句5、下列函数中,正确的递归函数是()。

A 、int Fun(int n){ if(n<1) return 1; else return n*Fun(n+1); }B 、int Fun(int n){ if (abs(n)<1) return 1; else return n*Fun(n/2); }C 、int Fun(int n){ if(n>1) return 1; else return n*Fun(n*2); }D、 int Fun(int n){ if(n>1) return 1; else return n*Fun(n-1); }6、在C++中编译器所生成的文件的扩展名为()[答案修改过]A、 .cppB、 .objC、 .libD、 .exe7、派生类的对象对它的基类成员中的()是可以访问A、公有继承的公有成员B、公有继承的私有成员C、公有继承的保护成员D、私有继承的公有成员8. C++设置虚基类的目的是( )A、消除二义性B、简化程序C、提高运行效率D、减少目标代码9. 以下关于this指针的叙述中正确的是:()A、任何与类相关的函数都有this指针;B、类的成员函数都有this指针;C、类的友员函数都有this指针;D、类的非静态成员函数才有this指针;10实现运行时的多态性采用( )A、重载函数B、构造函数C、析构函数D、虚函数11、若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=&a[5];则( ) 不是对a数组元素的正确引用(其中0≤i<10)A、p[i]B、 *(*(p+i) )C、a[p-a]D、* (&a[i])12、int Func(int,int);不可与下列哪个函数构成重载()A、int Func(int,int,int);B、double Func(int,int);C、double Func(double,double);D、double Func(int,double);13、局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用()提供对全局变量的访问。

面向对象程序设计习题及答案【精选文档】

面向对象程序设计习题及答案【精选文档】

面向对象程序设计一、选择填空1.关于C++与C语言的关系描述中,(D)是错误的.(A)C语言是C++的一个子集(B)C语言与C++是兼容的(C)C++对C语言进行了一些改进(D)C++和C语言都是面向对象的2.下面关于对象概念的描述中,(B)是错误的。

(A)对象就是C语言的结构变量(B)对象代表着正在创建的系统中的一个实体(C)对象是一个状态的操作(或方法)的封装体(D)对象之间的信息传递是通过消息进行的3.下面关于类概念的描述中,(D)是错误的。

(A)类是抽象数据类型的实现(B)类是具有共同行为的若干对象的统一描述体(C)类是创建对象的样板(D)类就是C语言的结构类型4.按照标识符的要求,(A)符号不能组成标识符。

(A)连接符(B)下划线(C)大小写字母(D)数字字符5.下列符号中,(C)不可作为分隔符。

(A),(B):(C)?(D);6.在16位机中,int型字宽为(A)字节.(A)2(B)4(C)6(D)87.类型修饰符unsigned修饰(D)类型是错误的。

(A)char(B)int (C)long int(D)float8.对于int *pa[5];的描述,(D)是正确的.(A)pa是一个指向数组的指针,所指向的数组是5个int型元素(B)pa是一个指向某数组中第5个元素的指针,该元素是int变量(C)pa[5]表示某个数组的第5个元素(D)pa是一个具有5个元素的指针数组,每个元素是一个int型指针。

9.下列关于指针的运算中,(D)是非法的。

(A)两个指针在一定条件下,可以进行相等或不等的运算。

(B)可以有一个空指针赋值给某个指针.(C)一个指针可以加上一个整数。

(D)两个指针在一定条件下,可以相加.10.指针可以用来表示数组元素,下列表示中(A)是错误的。

已知:int a[3][7];(A)*(a+1)[5] (B)*(*a+3)(C)*(*(a+1))(D)*(&a[0][0]+2)11.下列表示引用的方法中,(A)是正确的。

面向对象2 期末考试试题及参考答案

面向对象2 期末考试试题及参考答案

面向对象程序设计(专科)复习题二一、单选题1.下列关于友元函数的说法,正确的是()。

()A、提高程序的运行效率B、增强类的封装性C、实现数据的隐藏性D、增加成员函数的种类2.下列关于在类中定义的静态数据成员的说法,正确的是()()A、该类的每个对象都有一个静态数据成员B、对象创建时产生C、在类外进行初始化D、既可以在类外初始化,也可以在类内初始化3.有如下类定义:class Point{int x_, y_;public:Point():x_(0), y_(0){}Point(int x, int y = 0):x_(x), y_(y){}};若执行语句:Point a(2), b[3], *c[4]; 则Point类的构造函数被调用的次数是():()A、2次B、3次C、4次D、5次4.若类B公有继承自类A,则定义B类对象和撤销B类对象时,调用构造函数和析构函数的次序为()。

()A、A B; B AB、A B; A BC、B A; A BD、B A; A B5.在公有派生的前提下,下列说法错误的是()。

()A、在一个赋值语句中,等号的左边是一个基类对象时,右边可以是一个派生类对象B、若B是A的派生类,且有默认的构造函数,则语句A &a = *new BC、在一个返回值为基类指针的函数中,可以返回一个派生类对象的地址D、在调用一个形参类型为派生类引用的函数时,可以将一个基类对象作为实参6.类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A 对象的指针,则p->A::func()将()()A、调用类A中的函数func()B、调用类B中的函数func()C、根据p所指的对象类型而确定调用类A中或类B中的函数func()D、既调用类A中函数,也调用类B中的函数7.下列不能作为类的成员的是()。

()A、自身类对象的指针。

面向对象程序设计试题及答案

面向对象程序设计试题及答案

面向对象程序设计试题及答案一、试题1. 请简要解释面向对象(Object-Oriented)程序设计的概念。

2. 列举面向对象程序设计中的四个基本特征,并分别进行简要描述。

3. 请说明封装(Encapsulation)在面向对象程序设计中的作用和优势。

4. 解释继承(Inheritance)在面向对象程序设计中的概念和用途。

5. 什么是多态(Polymorphism)?请解释多态的概念以及其在面向对象程序设计中的重要性。

6. 简要介绍抽象类(Abstract Class)和接口(Interface)的概念,并说明它们之间的区别。

7. 请解释类(Class)与对象(Object)之间的关系。

8. 在面向对象程序设计中,什么是构造函数(Constructor)?请说明构造函数的作用和使用方法。

9. 请示范一个使用面向对象程序设计的简单实例,并说明你所设计的类的结构和功能。

二、答案1. 面向对象程序设计是一种以对象为中心的编程方法,通过定义表示对象属性和行为的类来组织程序结构,以实现代码的重用性、灵活性和可维护性。

2. (1)封装:将数据和对数据的操作封装在一个类中,通过访问权限控制,保护数据的安全性和完整性。

(2)继承:通过建立类之间的继承关系,实现代码的重用,具有层次性和扩展性。

(3)多态:允许不同类的对象对同一消息作出不同的响应,实现代码的灵活性和扩展性。

(4)抽象:通过抽象类和接口的定义,隐藏对象的具体实现细节,提供统一的接口和规范。

3. 封装的作用是将数据和对数据的操作封装在一个类中,外部无法直接访问类的内部实现细节,只能通过类提供的接口访问和操作数据。

封装的优势包括:(1)提高代码的可维护性和可读性,减少代码的重复。

(2)保护数据的安全性和完整性,防止外部直接对数据进行非法操作。

(3)降低模块之间的耦合度,提高代码的灵活性。

4. 继承是面向对象程序设计中的一个重要概念,它通过建立类与类之间的继承关系,实现代码的重用和扩展。

国家开放大学四川02372《面向对象程序设计》第2次形成性考核作业资料

国家开放大学四川02372《面向对象程序设计》第2次形成性考核作业资料

面向对象程序设计-第2次形成性考核复习题(带答案)
说明:每学期的课程题号都可能更换,请认真核对是您需要的题号后再下载!
【题号】
在类的定义中,每个成员的访问权限有()种选择。

a. 2
b. 4
c. 3
d. 5
[认真学习课本知识,并分析作答上述题号]
参考答案:4
【题号】
具有()访问权限的成员能够被本类和同一包中的其他任何类中的成员所访问。

a. 公有
b. 缺省
c. 保护
d. 私有
[认真学习课本知识,并分析作答上述题号]
参考答案:缺省
【题号】
具有()访问权限的成员只能被本类中的成员所访问。

a. 缺省
b. private
c. protectd
d. public
[认真学习课本知识,并分析作答上述题号]
参考答案:private
【题号】
具有()访问权限的成员能够被本类和任何其他类中的成员所访问。

a. private
b. 缺省
c. public
d. protectd
[认真学习课本知识,并分析作答上述题号]
参考答案:public
【题号】
在类定义首部的语法格式中,()不能作为其中的修饰符。

a. extends
b. public。

面向对象技术练习试卷2(题后含答案及解析)

面向对象技术练习试卷2(题后含答案及解析)

面向对象技术练习试卷2(题后含答案及解析) 题型有:1. 选择题选择题(每小题1分,共75分)下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将此选项涂写在答题卡相应位置上,答在试卷上不得分。

1.根据如图1-7所示的UML类图可知,类Car和类Boat中的move( )方法______。

A.引用了类Transport的move( )方法B.重置了类Transport的move( )方法C.是类Transport的move( )方法的聚集D.是类Transport的move( )方法的泛化正确答案:B解析:在UML类图中,“”表示其相联的两个类之间存在泛化关系,即在图1-7中显示了一个继承结构:类Transport为基类,其子类分别为类Car和类Boat。

同是注意到,在图1-7中的类Transport的名字之下有一个标识&lt;&gt;。

该标识用于说明该类是一个抽象类,类中的方法move( )必须在子类中重新定义的纯虚拟函数。

由图1-7中可以看出,在两个子类中都定义了函数原型完全相同的move( )方法。

在面向对象程序设计中,使用动态多态一一重置(overriding)时需满足3个条件:①类之间具有继承关系、②基类中至少定义一个纯虚拟函数、③在子类中重新定义这个纯虚拟函数。

因此,图1-7给出的UML 类图结构满足了重置的3个条件,说明子类Car和子类Boat中的move( )方法重置了基类Transport的move( )方法。

知识模块:面向对象技术2.用UML建立业务模型是理解企业业务过程的第一步。

业务人员扮演业务中的角色及其交互方式,例如长途汽车站的售票员是业务人员,大型商场的销售员也是业务人员,他们之间的关系是______。

A.AggregationB.CompositionC.GeneralizationD.Association正确答案:C解析:选项A的“聚集关系(Aggregation)”是关联关系(Association)的一种特例,它代表两个类之间的整体和局部关系。

JAVA第二次测试题汇总

JAVA第二次测试题汇总

JAVA第二次测试题汇总面向对象程序设计第二次测试题一、定义一个抽象的"Role"类,有姓名,年龄,性别等成员变量1.要求尽可能隐藏所有变量(能够私有就私有,能够保护就不要公有),再通过GetXXX()和SetXXX()方法对各变量进行读写。

具有一个抽象的play()方法,该方法不返回任何值,同时至少定义两个构造方法。

Role 类中要体现出this的几种用法。

2.从Role类派生出一个"Employee"类,该类具有Role类的所有成员(构造方法除外),并扩展salary成员变量,同时增加一个静态成员变量“职工编号(ID)”。

同样要有至少两个构造方法,要体现出this和super的几种用法,还要求覆盖play()方法,并提供一个finalsing()方法。

3."Manager"类继承"Employee"类,有一个final成员变量"vehicle"4.在main()方法中制造Manager和Employee对象并测试这些对象的方法二、品尝饮料1、建立一个Java抽象类Drink,应当:a、声明一个抽象方法taste(),该方法负责输出饮料的味道;b、声明int型常量来代表不同的饮料类型(咖啡、啤酒、牛奶),如:c、声明静态方法getDrink(intdrinkType),根据传入的参数创建不同的饮料对象,并返回该对象,建议使用switch语句。

该方法要求声明DrinkNotFoundException,当没有相对应的饮料类型时,抛出该异常。

2、建立Drink的具体子类:a、分别建立Drink的子类:Coffee(代表咖啡),Beer(代表啤酒),Milk(代表牛奶);b、实现taste()方法,要求在控制台打印各自的味道特征。

3、建立异常类DrinkNotFoundException继承Exceptionb、在Drink的方法getDrink(intdrinkType)中声明引发DrinkNotFoundException异常,当传入的参数没有相对应的饮料类型时,抛出异常。

第二次阶段性考核(笔试)

第二次阶段性考核(笔试)

北京城市学院信息学部考试试卷2014-2015学年第1学期阶段性考试课程名称:面向对象程序设计使用班级:12信本1、2、3 考试时间:45分钟答案:二、程序设计三、程序填空1、2、3、4、5、一、选择题(每小题1分,共14分)1、设Derived类为Base类的子类,则如下对象的创建语句中()是错误的。

A. Base Obj = new Derived();B. Derived Obj = new Base();C. Base Obj = new Base();D. Derived Obj = new Derived();2、欲创建ArrayList类的一个实例,此类继承了List接口,下列()是正确的。

A. ArrayList myList = new Object();B. List myList = new ArrayList();C. ArrayList myList = new List();D. List myList = new List();3、类Student是类Person的子类,Student的构造方法中有一句“super()”,该语句的含义是()A.调用类Student中定义的super()方法B.调用类Person中定义的super()方法C.调用类Person的构造方法D.语法错误4、关于接口下面的说法()是错误的。

A.接口中只有常量和抽象方法B.一个接口可以被一个或多个类实现C.类实现了接口,就必须实现接口中的部分方法D.实现接口的关键字是implements5、关于方法void fgs(int x){ },下面()能成为它的重载。

A. void fgs (int x, int y) { }B. int fgs (int x) { }C. public fgs (int x) { }D. void fg(int x) { }6、如果类Mclass中定义了double型变量x、y,()是Mclass的正确构造方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《面向对象程序设计》第二次上机测试题目及要求
一、考核目标
(一)数组、指针与字符串
1.掌握数组、字符串数据的定义和使用;掌握标准C++库中string的使用;
2.掌握指针的使用方法;掌握动态内存分配实现动态数组,并体会指针在其中的作用。

(二)继承与派生
1.理解继承、派生的基本概念及意义。

2.掌握派生类定义及派生类对象实例化。

3.掌握类型兼容规则、派生类成员的标识与访问。

4.虚基类解决二义性问题。

二、考试要求
1.不允许携带U盘和教材等进入考场。

2.考试过程中保持安静,独立按要求完成考试题目。

3.考试结束后,请坐在座位上,等待监考老师确认你的考题之后方可离开。

三、考试内容
在桌面上新建一个文件夹,以“学号+姓名”形式命名,如:20130102张三。

该文件夹中应该包含两个子文件夹(文件夹名分别为:第一题第二题),分别存放两道题的相关文件以及测试结果等。

第一大题:所有同学都完成
1.已知Point类的声明如下:
#include <iostream>
using namespace std;
//Point 类的声明
class Point
{
public: //外部接口
Point(); //构造函数
Point(int xx, int yy) ;//构造函数
Point(Point &p); //拷贝构造函数
int GetX() const {return x;}
int GetY() const {return y;}
void move(int newx,int newy) {x=newx; y=newy;}
~Point(){}
private: //私有数据
int x,y;
};
class ArrayofPoints
{
Point &element(int index){
assert(index>=0 && index<size);// size为数组大小
return points[index];
}
}
//计算任意两点之间的街区距离
int L1Distance (int x1,int y1,int x2,int y2){
return(abs(x1-x2)+abs(y1-y2));
}
请给出Point类的构造函数,并参照下图创建动态数组类ArrayofPoints,实现主函数。

请自行补充需要的头文件。

//主程序
int main()
{ int count;
cout<<"Please enter the count of Points"<<endl;
cin>>count;
ArrayofPoints ArrPoints(count);
ArrPoints.element(0).move(5,10);
ArrPoints.element(1).move(15,20);
cout<<"The distance is"<<endl;
cout<<L1Distance(ArrPoints.element(0).GetX(),ArrPoints.element(0).GetY(),ArrPoints.element
(1).GetX(),ArrPoints.element(1).GetY())<<endl;
return 1;
}
第二大题:学号尾数为单号的同学做第1小题,尾数为双号的做第2小题
1.设计一个Shape基类,由Shape类派生出直角三角形类Triangle,再由Triangle派生出矩形类
Rectangle。

设计不属于这些类的Display函数,用来输出Triangle和Rectangle对象的周长和面积。

根据下面的测试程序设计这些类及函数Display。

请自行补充所涉及的头文件。

int main()
{
Triangle Tri(4,8);//直角边长为4,8的直角三角形
Rectangle Rec(4,8);// 矩形长宽分别为4,8的矩形
cout<<Tri.Area()<<’,’<<Tri.Length()<<endl; //直接输出Tri的周长和面积
cout<<Rec.Area()<<’,’<<Rec.Length()<<endl; //直接输出Rec的周长和面积
Display(Tri); //调用Display函数输出Tri的周长和面积
Display(Rec); //调用Display函数输出Rec的周长和面积
return 1;
}
2.设计一个Shape基类,由Shape类派生出圆形类Circle,再由Circle派生出圆柱类Cylinder。

设计不属于这些类的Display函数,用来输出Circle和Cylinder对象的面积和体积。

根据下面的测试程序设计这些类及函数Display。

请自行补充所涉及的头文件。

int main()
{
Circle Cri(4);
Cylinder Cyl (4,8);
cout<<Cri.Area()<<endl; //直接输出Cri的面积
cout<<Cyl.Area()<<’,’<<Cyl.Volume()<<endl; //直接输出Cyl的面积和体积
Display(Cri); //调用Display函数输出Cri的面积
Display(Cyl); //调用Display函数输出Cyl的面积和体积
return 1;
}。

相关文档
最新文档