当前位置:文档之家› c++面向对象复习题答案版

c++面向对象复习题答案版

c++面向对象复习题答案版
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++类中,有一种不能定义对象的类,这样的类只能被继承,称之为( 抽象类),定义该类至少具有一个( 纯虚函数)。

19.在C++中构造一个对象时,其数据成员在构造函数中初始化。对于内嵌的对象、( 常量)、( 引用)数据成员需要在构造函数的成员初始化列表中初始化。

20.在类的定义中,说明为protected的数据成员称为保护成员。保护数据成员具有双重作用:对于其派生类而言,( 可以访问);而对于其外部的程序而言,( 不可以访问)。

21.控制格式输出的

操纵符中,(setprecision)是设置数据精度的,(hex)是设置十六进制的。

22.如果s是int型变量,且s=6,则下面s%2+(s+1)%2表达式的值为__0_ _。

23.已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=’a’+4’的值为_e___。

24.数组与函数参数联系密切,当用数组元素作函数参数时,这是属于值传递;当数组名作为参数时,这是属于地址传递,对形参的改变可影响到实参。

25.利用“对象名.成员变量”形式访问的对象成员仅限于被声明为公有的成员;若要访问其他成员变量,需要通过公有函数或友元函数函数。

26.一个__类____和__对象___的关系,正如基本数据类型与该类型的变量一个。

27.类成员的默认访问方式是_私有的_____.

28.一个类有_多个____个构造函数,有_一个____析构函数。

29.类的__静态___成员函数不能对类中的非静态成员进行默认访问。

30.如果说明类B是类A的友元类,则类B的所有成员函数都是类A的_友元函数_____。31.利用成员函数对二元运算符重载,其左操作数为对象,右操作数为实际参数。

32.类有两种用法:一种是类的实例化,即生成类的__模板类____ ;另一种是通过__基类_____派生出新的类。

33.运算函数中的关键字是_ _operator ____,它和运算符一起组成该运算符函数的函数名。34.如果一个类中有一个或多个纯虚函数,则这个类称为_ _抽象类____。

35.文件的打开是通过使用类_ _ _对象_____的成员函数来实现的。

36.设所有变量均为整型,则表达式(e=2,f=5,e++,f++,e+f)的值为_9___。

37.已知c的ASCII码为十进制数99,设k为字符型变量,则表达式k=‘c’+1的值为___d_____。38.函数的形参在未被调用之前不被分配空间,函数的形参的类型要和实参的相同。

39.类的成员分为数据成员和_ _ _成员函数____。

40.类完成了面向对象程序设计的_抽象____特性。

41.构造函数是_对象_____被创建时自动执行,对象消失时自动执行的成员函数称为__析构_____对象

43.在继承机制下,当对象消亡时,编译系统先执行派生类的析构函数,然后才执行派生类中子对象类的析构函数,最后执行基类的析构函数。

44.类的__静态_____数据成员是类所有对象共享的成员。

45.友元函数__不是____类的成员函数。(是/不是)

46.如果类A继承了类B,则类A称为__派生类_____,类B称为__基类_____。

47.运算符重载后,原运算符的优先级和结合特性__不会___改变。(会/不会)

48._纯虚函数_____是一个在基类中说明的虚函数,但未给出具体的实现,要求在其派生类实现。

49.文件的关闭是通过通过使用类________的成员函数________来实现的。(去掉)

二、选择题

1.面向对象的(B)是一种信息隐蔽技术,目的在于将对象的使用者与设计者分开。不允许使用者直接存取对象的属性,只能通过有限的接口与对象发生联系。

A.多态性B.封装性C.继承性D.重用性

2.C++的合法注释是(B)。

A./*This is a C program/* B.+ B.<= C.= D.% 5.已知a=4,b=6,c=8,d=9,则“(a++,b>a++&&c>d)++d:a

A.9 B.6 C.8 D.0

6.对while、do…while循环结构,下面说法正确的是(B)。

A.只是表达形式不同B.do…while结构中的语句至少执行一次C.while结构中的语句至少执行一次D.条件成立时,它们有可能一次也不执行7.对中断语句的说法下面不正确的是( B )。

A.用户可以指定中断的位置B.用户可以指定转移的位置

C.break语句可以跳出本循环D.continue语句可以结束本次循环

8.以下正确的说法是(D)。

A.用户若需要调用标准函数,调用前必须重新定义

B.用户可以直接调用所有标准库函数

C.用户可以定义和标准库函数重名的函数,但是在使用时调用的是系统库函数

D.用户可以通过文件包含命令将系统库函数包含到用户源文件中,然后调用系统库函数9.下列哪个不是重载函数在调用时选择的依据(D)。

A.参数类型B.参数个数C.函数类型D.函数名

10.对数组名作函数的参数,下面描述正确的是(B)。

A.数组名作函数的参数,调用时将实参数组复制给形参数组

B.数组名作函数的参数,主调函数和被调函数共用一段存储单元

C.数组名作参数时,形参定义的数组长度不能省略

D.数组名作参数,不能改变主调函数中的数据

11.如果x是整型变量,则合法的形式是( D)。

A.&(x+5) B.*x C.&*x D.*&x

12.在定义一个共用体变量时,系统为其分配存储空间的原则是(B)。

A.按所有成员需要的存储空间总和分配。B.按成员中占存储空间最大者分配。

C.按成员占存储空间最小者分配。D.按第一个成员所需的存储空间分配。13.下面(B)项是对构造函数和析构函数的正确定义。

A.void X::X(), void X::~X()

B.X::X(参数), X::~X()

C.X::X(参数), X::~X(参数)

D.void X::X(参数), void X::~X(参数)

14.拷贝构造函数具有的下列特点中,(D)是错误的。

A.如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的

B.拷贝构造函数只有一个参数,并且是该类对象的引用

C.拷贝构造函数是一种成员函数

D.拷贝构造函数的名字不能用类名

15.类的析构函数的作用是(D)。

A.一般成员函数

B.类的初始化

C.对象初始化

D.删除对象

16.下列对派生类的描述中,( D )是错误的。

A.一个派生类可以作为另一个派生类的基类

B.派生类至少有一个基类

C.派生类的成员除了它自己的成员外,还包含了它的基类成员

D.派生类中继承的基类成员的访问权限到派生类保持不变

17.继承具有(B, C),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。

A规律性 B.传递性 C.重复性 D.多样性

18.C++类体系中,能被派生类继承的是(A,B,C)。

A.构造函数B.虚函数C.析构函数D.友元函数

19.下列关于动态联编的描述中,错误的是(D)。

A.动态联编是以虚函数为基础

B.动态联编是运行时确定所调用的函数代码的

C.动态联编调用函数操作是指向对象的指针或对象引用

D.动态联编是在编译时确定操作函数的

20.关于纯虚函数和抽象类的描述中,错误的是(C )。

A.纯虚函数是一种特殊的虚函数,它没有具体的实现

B.抽象类是指具有纯虚函数的类

C.一个基类中说明有纯虚函数,该基类派生类一定不再是抽象类

D. 抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出

21.C++源文件的扩展名为(A )。

A.cpp B.c C.txt D.exe

22.在C++语言中,(A )的陈述是正确的。

A.能使用关键字并区分大小写B.能使用关键字并不区分大小写

C.不能使用关键字并区分大小写D.不能使用关键字并不区分大小写

23.运算符+、=、*、>=中,优先级最高的运算符是(C)。

A.+ B.= C.* D.>=

24.下列不合法的变量名为(A )。

A.int B.int1 C.name_1 D.name0

25.已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<’B’&&!y)的值是(C )。

A.0 B.语法错C.1 D.“假”

A.语句for(i=0;;i++)表示无限循环B.for(;;)表示无限循环

26.以下不正确的是(c)。

C.for()也表示无限循环D.while(1)表示无限循环

27.在函数的返回值类型与返回值表达式的类型的描述中,错误的是(B,D )。

A.函数返回值的类型是在定义函数时确定,在函数调用时是不能改变的

B.函数返回值的类型就是返回值表达式的类型

C.函数返回值表达式类型与返回值类型不同时,函数表达式类型应转换成返回值类型

D.函数返回值类型决定了返回值表达式的类型

28.如果一个函数无返回值,定义时它的函数类型应是(C)。

A.任意B.int C.void D.无

29.在C++语言中,关于参数默认值的描述正确的是(A,B)。

A.只能在函数定义时设置参数默认值

B.设置参数默认值时,应当从右向左设置

C.设置参数默认值时,应当全部设置

D.设置参数默认值后,调用函数不能再对参数赋值

30.若有以下定义,则说法错误的是( D )。

int a=100,*p=&a ;

A.声明变量p,其中*表示p是一个指针变量

B.变量p经初始化,获得变量a的地址

C.变量p只可以指向一个整形变量

D.变量p的值为100

31.列关于结构体的说法错误的是(D )。

A.结构体是由用户自定义的一种数据类型

B.结构体中可设定若干个不同数据类型的成员

C.结构体中成员的数据类型可以是另一个已定义的结构体

D.在定义结构体时,可以为成员设置默认值

32.下列有关类的说法不正确的是( C )。

A.对象是类的一个实例

B.任何一个对象只能属于一个具体的类

C.一个类只能有一个对象

D.类与对象的关系和数据类型与变量的关系相似

33.( C )的功能是对象进行初始化。

A.析构函数 B. 数据成员 C.构造函数 D.静态成员函数

34.关于友元的描述中,(A )是错误的。

A.友元函数是成员函数,它被说明在类体内

B.友元函数可直接访问类中的私有成员

C.友元函数破坏封装性,使用时尽量少用

D.友元类中的所有成员函数都是友元函数

35.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为(A,B,C )。

B. protected D. static

36.派生类的对象对它的(A,B,D )是可以访问的。

A.公有继承的基类的公有成员 B. 公有继承的基类的保护成员

C. 公有继承的基类的私有成员

D. 保护继承的基类的公有成员37.多继承派生类构造函数构造对象时,(B )被最先调用。

A.派生类自己的构造函数B.虚基类的构造函数

C.非虚基类的构造函数D.派生类中子对象类的构造函数38.C++类体系中,不能被派生类继承的有(C )。

A.构造函数

B.虚函数

C.静态成员函数

D.赋值操作函数39.编译时的多态性可以通过使用(A,D )获得。

A.虚函数和指针B.重载函数和析构函数

C.虚函数和对象D.虚函数和引用

40.下列描述中,(A )是抽象类的特征。

A.可以说明虚函数B.可以进行构造函数重载

C.可以定义友元函数D.不能说明其对象

三、指出并改正下列程序段中的语法错误。

2、指出并改正下列程序段中的语法错误。

四、程序填空

1.编写函数将字符串按逆序存放。 #include<> #include<> #include<> void main() { int i,n;

char s[100],temp;

cout<<"input string:"<

temp=s[i];s[i]=s[n-i-1]; s[n-i-1]=temp; } cout<<"Now,string:"<

}

2.下列程序定义了类Pixel ,请完成前置++和后置++的运算符函数的定义。 class Pixel{ int x,y;

public:

Pixel(int xx=0,int yy=0){ x=xx; y=yy; } Pixel operator ++(); Pixel operator ++(int); void display(); };

Pixel Pixel::operator ++() {

return

}

Pixel Pixel::operator ++(int) { ( 4 )Pixel x++;

y++;

return ( 5 ) temp;

}

void Pixel::display() { cout<<"("<

}

3. 根据给定的程序执行结果,将下列程序补充完整。 #include <> class Base{ public: ( 6 )Base (){ cout<<” Delete Derived”<

class Derived:public Base{ public: ( 7 )Derived (){cout<<” Delete Base”<

}; void main() {

Base *p1= ( 8 )new Derived ;

delete p1;

}

程序的执行结果如下: Delete Derived Delete Base

4.定义一个字符串类String ,有两个私有数据成员:char* content 和int len;要求

1)在构造函数中提示用户输入字符串,;

2) 用户能提取和显示字符串;(分别由两个函数完成) 3)实现对字符串中所有小写字母变成大写,并显示。 注意内存的分配与释放。

类定义的部分代码如下,请补充代码使类的定义完整。 #include <> #include #include <> class String{ char* content; int len; public:

String();

~String(){

void display(); void upper_str();

};

String::String(){ char ch[50];<

for (int i=0;i

content[i]= ( 5 ) content[i]+32;

}

5. 下列程序定义了类Point ,请完成前置--和后置--的运算符函数的定义。 class Point{ float x,y;

public:

Point(float xx=0,float yy=0){ x=xx; y=yy; }

Point operator --();

Point operator --(int); void display();

};

Point Point::operator --() { x--;

return

}

Point Point::operator --(int) { x--; y=y--;

}

void Point::display() {

cout<<"("<

6、程序填空,直接将答案写在空行上

断下面程序的主函数中语句①~⑩的对错。

修改下面给出的程序,但不允许对main( ) 函数在作任何修改,使程序能够在屏幕上输出:锄禾日当午,

汗滴禾下土。

谁知盘中餐,

粒粒皆辛苦。

原来的程序为:

#include <>

void main(void)

{

cout<<"汗滴禾下土。"<

}

答:修改后的程序如下:

#include <>

class A

{ public: A(){cout<<”锄禾日当午,”<

~A(){cout<<”谁知盘中餐,”<

cout<<”粒粒皆辛苦。”<

}

};

A a;

void main(void)

{

cout<<"汗滴禾下土。"<

}

2定义一个抽象类Shape,在此基础上派生出类Rectangel和Circle,二者都有计算对象面积的函数GetGetArea(),计算对象周长的函数GetPerim( ),在主函数中定义一个Shape指针数组分别指向Rectangel和Circle的对象,并通过Shape类的指针数组实现对这两个对象的成员函数的调用,输出圆和矩形的面积和周长。

#include <>

class Shape

{ public: virtual void GetGetArea()=0;

virtual void GetPerim( )=0;

};

class Rectangel:public Shape

{ int x, y;

public:Rectangel(int i, int j){x=i; y=j;}

void GetGetArea(){cout<<" Rectangel Area:"<

void GetPerim( ){ cout<<" Rectangel Perim:"<<2*(x+y)<

};

class Circle : public Shape

{ float r;

public :Circle (float i ){r=i; }

void GetGetArea(){cout<<" Circle Area:"<<*r*r<

void GetPerim( ){ cout<<" Circle Perim:"<<2**r<

};

void main()

{ Shape *p[];

Rectangel rec(7,9);

Circle cir( ;

P[0]=& rec; p [0]-> GetGetArea(); p [0]-> GetPerim( );

P[1]=& cir; p [1]-> GetGetArea(); p[1]-> GetPerim( ); }

3. 定义一个字符串类String ,有两个私有数据成员:char* content 和int len;要求:

1)在构造函数中提示用户输入字符串;

2) 用户能提取和显示字符串;(分别由两个函数完成) 3)实现对字符串中所有小写字母变成大写,并显示。

4)在主函数中定义String 类的对象,并对所有成员函数进行测试。 注意内存的分配与释放。

4.请编写程序声明一个基类Employee ,从它派生出类Technician ,在主函数中将一个动态分配的Technician 的对象地址赋值给一个Employee 的指针,然后通过指针释放对象空间。可以不声明数据成员,但要声明适当的析构函数释放内存。 #include <> class Employee { };

class Technician:public Employee { }; void main()

{ Employee *p=new Technician; delete p; }

5. 一圆型游泳池如图所示,现在需在其周围建一圆型过道,并在其四周围上栅栏。栅栏价格为20元/米,过道造价为15元/平方米。过道宽度为4米,游泳池半径由键盘输入。要求编程计算并输出过道和栅栏的造价。

#include <> class Shape

{ public: virtual double GetGetArea()=0; virtual double GetPerim()=0; };

class Circle :public Shape { double r1;

public :Circle (double i ){r1=i; }

游泳

过道

double GetGetArea(){return *r1*r1;}

double GetPerim( ){ return 2**r1;}

};

class CircleLarge: public Circle

{ double r2;

public :

CircleLarge(double i):Circle ( i ){r2=i+4;}

double GetGetArea(){return *r2*r2 ;}

double GetPerim( ){ return 2**r2 ;}

};

class Cost: public CircleLarge

{ public: Cost(double i): CircleLarge(i){}

void Display(void)

{ cout<<"过道造价:"

<<( CircleLarge:: GetGetArea()-Circle :: GetGetArea())*15<

cout<<" 栅栏的造价:"<< CircleLarge:: GetPerim( )*20<

}

};

void main()

{ Cost cost;

();

}

6. 定义一个职工类Emplyee,有私有数据成员:姓名、序号和公司,并为它定义带参数的构造函数、拷贝构造函数、析构函数和输出数据成员值的公有成员函数print,在主函数中定义两个派生类对象对所有成员函数进行测试。

7.定义一个学生类Student,具有三个属性:学号(long int)、姓名(char*)及年龄(int),其中括号内注明了此属性值的数据类型,并要求自动生成学号;具有三个公有成员函数:带参数的构造函数,析构函数及print()(用于输出3个数据成员的值),在主函数中定义Student类的两个对象(其中一个动态创建)对Student类进行测试。

#include ""

#include ""

class Student

{ long int num;

char* name;

int age;

static long int num1;

第4章-Java语言与面向对象作业习题与答案

第4章 Java语言与面向对象作业习题与答案 一、简答题 1.什么是对象?什么是类? 对象是一种抽象数据类型。它包含了事物的静态特征(属性)和动态特征(行为)两大特征。 类是一组同种对象的集合与抽象。即是具有相同属性和方法的一组对象集合。 2.Java语言的单继承是指什么? 一个类可以派生出多个子类,但子类只允许有一个父类,而不允许存在多个父类。 3.在一个共有类中的数据成员及方法成员的访问控制符为缺省,则这个类可供什么样的包引用? 当一个类的访问控制符为public共有时,表明这个类作为整体对其它类是可见和可引用的;但其数据成员和方法成员访问控制符为缺省时,它们只能被包中类(含当前类)引用。 4.抽象类的用途 (1)设计在更高的层次上进行,不考虑具体对象,从而大大简化了处理问题的复杂性; (2)设计出的类也具有更加良好的可扩展性。 5.什么是非静态的成员变量? 非静态成员即为实例成员变量(没有加static修饰的变量)。 6.异常Exception和错误Error有什么不同?Java如何处理它们? 答:错误通常是指程序本身存在非法情形,常常是因为代码存在问题而引起的,如造成系统崩溃、虚拟机粗错、动态失败等,这一类错误无法恢复或不可能捕获,并将导致应用程序中断。 异常表示另外一种“非同寻常”的错误。这种错误通常是不可预测,但可以被捕获且可以恢复。常见的异常情况包括存不足、找不到所需文件等。 对于错误,编程人员可以通过对程序进行更仔细的检查,以避免这种错误。 对于异常,可以使用捕获机制进行捕获,再编写出相应的处理程序。 7.简单述Java的异常处理机制。 答:Java采取“抛出—捕获”的方式,一旦一个异常想象产生,Runnable环境和应用程序会抛出各种标准类型和自己定义的异常,系统就可以捕获这些异常,并一定有相应的机制来处理它,确保不会产生司机、死循环或其它对操作系统的损害,从而保证了整个程序运行的安全性。 8.简单述throw语句和throws关键字之间的差别。 答:throw语句是在一个方法中用来直接抛出异常对象,其格式是: throw 异常对象; throws关键字是用一个方法声明首部,用来指出这个方法中可能产生若干种异常,其格式:[方法修饰符] 返回类型方法名(参数表)throws 异常类型表 { /*方法体*/ } 二、填空题 1.所有Java应用程序都必须包含的一个类方法是 main() 。 2.面向对象程序设计语言的三种重要特性是封装性、继承性和多态性。

面向对象试题(标准答案)

CoreJavaOOP考试题 考试时间:90分钟 考试总分:100分 一、选择题(不定项选择)(22*4=88) 1. 类A,B的定义如下: class A { private int a = 100; A() { System.out.print("A()"); System.out.println(a); } } class B extends A { private int a = 200; B() { System.out.print("B()"); System.out.println(a); } } 运行下面的代码: new B(); 输出的结果是:(A )。 A. A() 100 B() 200 B. A() 200 B() 200 C. B() 200 A() 100 D. B() 200 A() 200

2.下列说法正确的是(D ) A.所有类都必须定义构造方法(构造器) B.构造方法必须初始化类的所有数据成员 C.子类定义了构造器后,不再调用父类的构造器 D.构造方法可以访问类的非静态成员 3.在Java中,哪个关键字使类不能派生子类?, (A ) A : final B : public C : private D : native 4.class Base{ static void test(){ System.out.println(“Base.test()”); } } public class Child extends Base{ static void test(){ System.out.println(“Child.test()”); } public static void main(String[] args){ Base base = new Child(); Child child = new Child(); base.test(); child.test(); } } 程序运行的结果是( C ) A.Child.test() Child.test() B.Child.test() Base.test() C.Base.test() Child.test() D.Base.test() Base.test()

面向对象面试题

面向对象面试题 1、什么是面向对象 面向对象OO = 面向对象的分析OOA + 面向对象的设计OOD + 面向对象的编程OOP; 通俗的解释就是万物皆对象,把所有的事物都看作一个个可以独立的对象(单元),它们可以自己完成自己的功能,而不是像C那样分成一个个函数; 现在纯正的OO语言主要是java和C#,C++也支持OO,C是面向过程的。 2、简述private、protected、public、internal 修饰符的访问权限。 private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 当前程序集内可以访问。 3、https://www.doczj.com/doc/862408429.html,中的五个主要对象 Connection:主要是开启程序和数据库之间的连结。没有利用连结对象将数据库打开,是无法从数据库中取得数据的。这个物件在https://www.doczj.com/doc/862408429.html, 的最底层,我们可以自己产生这个对象,或是由其它的对象自动产生。 Command:主要可以用来对数据库发出一些指令,例如可以对数据库下达查询、新增、修改、删除数据等指令,以及呼叫存在数据库中的预存程序等。这个对象是架构在Connection 对象上,也就是Command 对象是透过连结到数据源。 DataAdapter:主要是在数据源以及DataSet 之间执行数据传输的工作,它可以透过Comm and 对象下达命令后,并将取得的数据放入DataSet 对象中。这个对象是架构在Command 对象上,并提供了许多配合DataSet 使用的功能。 DataSet:这个对象可以视为一个暂存区(Cache),可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库显示出来。DataSet 的能力不只是可以储存多个Table 而已,还可以透过DataAdapter对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。DataSet 对象可以说是https://www.doczj.com/doc/862408429.html, 中重量级的对象,这个对象架构在DataAdapter对象上,本身不具备和数据源沟通的能力;也就是说我们是将DataAdapter对象当做DataSet 对象以及数据源间传输数据的桥梁。 DataReader:当我们只需要循序的读取数据而不需要其它操作时,可以使用DataReader 对象。DataReader对象只是一次一笔向下循序的读取数据源中的数据,而且这些数据是只读的,并不允许作其它的操作。因为DataReader 在读取数据的时候限制了每次只读取一笔,而且只能只读,所以使用起来不但节省资源而且效率很好。使用DataReader 对象除了效率较好之外,因为不用把数据全部传回,故可以降低网络的负载。 https://www.doczj.com/doc/862408429.html, 使用Connection 对象来连接数据库,使用Command 或DataAdapter对象来

面向对象分析与及设计习题及答案

面向对象分析与及设计习题及答案 一、单项选择题 1.到20世纪末,面向对象软件工程已经逐渐发展成熟,特别是(D)的 形成和广泛使用,采用面向对象分析与编程的软件开发方法已成为软件开发的主流方法。 A. Simula67语言 B. Smalltalk语言 C. Java语言 D. 统一建模语言(UML)的标准 2. 面向对象的运动产生了多种面向对象的语言, 其中(C)是一种混合性面向对象语言, 既支持面向过程的程序设计方法,又支持面向对象的程序设计方法,有广泛应用的基础和丰富开发环境的支持,因而使面向对象的程序设计能得到很快普及。 A. Smalltalk B. Eiffel C. C++ D. Java 3.下列不属于面向对象技术的基本特征的是(B)。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 4. 面向对象程序设计将描述事物的数据与(C) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 5. 关于面向对象方法的优点,下列不正确的叙述是(C)。 A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好 6. (D)是从用户使用系统的角度描述系统功能的图形表达方法。 A. 类图 B. 对象图 C. 序列图 D. 用例图 7. (C) 是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图 和其他图的基础。 A.对象图 B. 组件图 C. 类图 D. 配置图 8.(D)描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之 间传递消息的时间顺序。 A.对象图 B. 协作图 C. 状态图 D. 序列图 9.(D)就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系统 中软件和硬件的物理架构。 A. 组件图 B. 协作图 C. 状态图 D. 配置图 10. 使用UML进行关系数据库的(B)时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 A. 业务Use Case模型设计 B. 逻辑数据模型设计 C. 物理数据模型设计 C. 物理实现设计 11.一个设计得好的OO系统具有(B) A. 低内聚、低耦合的特征 B. 高内聚、低耦合的特征 C. 高内聚、高耦合的特征 D. 低内聚、高耦合的特征 12.下面()不是UML的基本构成元素。(A) A. 控制语言 B. 基本构造块 C. 规则 D. 公共机制

java面向对象试卷及答案

java面向对象程序设计 系班级姓名成绩得分评卷人 一、填空题(每空2分,共20分) 1.Java源程序的扩展名是,经过编译后的程序的扩展名是。2.Socket通常也称为,用于描述和。3.线程的优先级在至之间,数值越大 4.构造方法是一种特殊的成员方法,构造方法名与相同 5.Java语言只允许单继承,指每个类只能有一个。 二、选择题(每题2分,共50分) 1.下列哪个概念是面向对象和面向过程程序设计所共有的() A、继承 B、流程控制 C、抽象 D、封装 2.以下关于执行Java小程序的论述错误的是:() A、可以通过浏览器调用嵌入了Java小程序的HTML文档 B、可以通过appletviewer.exe调用嵌入了Java小程序的HTML文档 C、可以通过java.exe调用嵌入了Java小程序的HTML文档 D、可以在Java集成开发环境中调用嵌入了Java小程序HTML文档 3.符合对象和类关系的是:() A、人和老虎 B、书和汽车 C、楼和土地 D、松树和植物 4.关于选择结构下列哪个说法正确?() A.if语句和else语句必须成对出现 B.if语句可以没有else语句对应 C.一个if语句只能有一个else if语句与之对应 D.else if结构中必须有default语句 5.while循环和do…while循环的区别是:()

A.没有区别,这两个结构任何情况下效果一样 B.while循环比do…while循环执行效率高 C.do…while循环执行次数可能为0 D.while循环执行次数可能为0 6.关于for循环和while循环的说法哪个正确?() A.while循环先判断后执行,for循环先执行后判断。 B.while循环判断条件一般是程序结果,for循环的判断条件一般是非程序结果C.两种循环任何时候都不可以替换 D.两种循环结构中都必须有循环体,循环体不能为空 7.下列修饰符中与访问控制无关的是() A.private B.public C.protected D.final 8.方法内的形参:() A.必须定义多个形参B.可以没有 C.至少有一个D.只能是简单变量 9.throws的作用:() A.表示方法可能会抛出例外 B.表示后面是方法的输出量 C.方法的标志,每个方法都必须有 D.没有意义 10.在Java语言中,整型常量123占用的存储字节数是:()A.1B.2 C.4 D.8 11.关于对象成员占用内存的说法哪个正确?() A.同一个类的对象共用同一段内存 B、同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间C.对象的方法不占用内存 D.以上都不对 12.return语句:()

Java面向对象测试试题(经典)

《使用Java实现面向对象编程》阶段测试-笔试试卷 一、选择题(共25题,每题4分,满分100分) 1) 在Java类中,使用以下()声明语句来定义公有的int型常量MAX。 A. public int MAX = 100; B. final int MAX = 100; C. public static int MAX = 100; D. public static final int MAX = 100; 2) 在Java中,下列关于方法重载的说法中错误的是()。 A. 方法重载要求方法名称必须相同 B. 重载方法的参数列表必须不一致 C. 重载方法的返回类型必须一致 D. 一个方法在所属的类中只能被重载一次 3) 给定Java代码如下所示,在横线处新增下列()方法,是对cal方法的重载。 public class Test{ public void cal(int x, int y, int z) {} } A. public int cal(int x, int y, float z){ return 0; } B. public int cal(int x, int y, int z){ return 0; } C. public void cal(int x, int z){ } D. public void cal(int z, int y, int x){ } 4) 在Java中,下面对于构造函数的描述正确的是()。 A. 类必须显式定义构造函数 B. 构造函数的返回类型是void C. 构造函数和类有相同的名称,并且不能带任何参数 D. 一个类可以定义多个构造函数

面向对象期末测试题(带答案)

济南大学2009~2010 学年第二学期课程考试试卷 课 程 java 面向对象程序设计 授课教师 考试时间 考试班级 学 号 姓 名 题号 一 二 三 四 五 总 分 审核人 得分 一、填空题(每空2分,共20分) 1.Java 源程序的扩展名是 .java ,经过编译后的程序的扩展名是 .class 。 2.Socket 通常也称为 套接字 ,用于描述 IP 地址 和 端口 。3.线程的优先级在 1 至 10 之间,数值越大 优先级越高 4.构造方法是一种特殊的成员方法,构造方法名与 类名 相同 5.Java 语言只允许单继承,指每个类只能有一个 父类或子类 。 二、选择题(每题2分,共50分) 1.下列哪个概念是面向对象和面向过程程序设计所共有的 ( B ) A 、继承 B 、流程控制 C 、抽象 D 、封装 2.以下关于执行Java 小程序的论述错误的是: ( C ) A 、可以通过浏览器调用嵌入了Java 小程序的HTML 文档 B 、可以通过appletviewer .exe 调用嵌入了Java 小程序的HTML 文档 C 、可以通过java.exe 调用嵌入了Java 小程序的HTML 文档 D 、可以在Java 集成开发环境中调用嵌入了Java 小程序HTML 文档 3.符合对象和类关系的是: ( D ) A 、人和老虎 B 、书和汽车 C 、楼和土地 D 、松树和植物 4.关于选择结构下列哪个说法正确? (B ) A .if 语句和 else 语句必须成对出现 B .if 语句可以没有else 语句对应 … … …… …… …… …… …… … …… …装 …… …… …… … …… …订 …… …… …… … …… …线 …… …… …… … …… …… …… …… …

面向对象考试题

第五章考试题 一、选择题:(每题3分,共20题) 1.下面关于类的说法错误的一项是()。 A、类属于Java语言中的复合数据类型 B、对象是Java语言 中的基本结构单位 C、类是同种对象的集合和抽象 D、类就是对象 2.如下所示代码: public class Test05_01{ private float a; public static void m ( ){ } } 如何使成员变量a被方法m( )访问()。 A、将private float a改为public float a B、将private float a改为static float a C、将private float a改为protected float a D、将private float a改为float a 3.下面关于类的说法有误的一项是()。 A、类就是对象 B、类是同种对象的集合和 抽象 C、类属于Java语言中的复合数据类型 D、对象是Java语言 中的基本结构单位

4.下列哪种类成员修饰符修饰的变量只能在本类中被访问()。 A、protected B、default C、private D、public 5.下面关于方法的说法不正确的一项是()。 A、类的私有方法不能被其他类直接访问。 B、Java中的构造方法名必须和类名相同。 C、方法体是对方法的实现,包括变量声明和合法语句。 D、如果一个类定义了构造方法,也可以用该类的默认构造方法。 6.下列程序的运行结果是()。 public class Test05_02 extends x{ int ab(){ static int a = 10; a++; System.out.println(a); } public static void main(String[] args) { Test05_02 b = new Test05_02 (); b.ab(); } } A、10 B、编译错误 C、11 D、运行成功,但不输出

2_面向对象基础测试题和答案

共40道选择题,每题2.5分。多选题有错则全错,全对才满分. 面向对象部分测试题 1.下面描述函数重写错误的是C A.?要有子类继承或实现 ?B.?子类方法的权限必须大于等于父类的权限 C. 父类中被private权限修饰的方法可以被子类重写 D.?子类重写接口中的抽象方法,子类的方法权限必须是public的 2.关于封装下面介绍错误的是(D )。 A. 封装将变化隔离 B.?封装提高重用性。 C.?封装安全性 ?D. 只有被private修饰才叫做封装 3.试图编译运行下面的代码会发生什么情况D public class MyClass{ static int i; publicstaticvoid main(String[]args){System.out.println(i); } } ?A.?错误,变量i没有被初始化 ?B. 输出null C.?输出1 ?D. 输出0 4.在Java中,下面对于构造函数的描述正确的是( D)。 A. 类必须显式定义构造函数 B.构造函数的返回类型是void ?C.?构造函数和类有相同的名称,并且不能带任何参数

D.一个类可以定义多个构造函数 5.下面Java代码的运行结果是(C)。 class Penguin { ?private String name=null; // 名字 privateint health=0;//健康值 private String sex=null; //性别 publicvoid Penguin(){//是一般方法,不是构造方法 health = 10; ??sex = "雄"; ??System.out.println("执行构造方法。"); ?} public voidprint() { ??System.out.println("企鹅的名字是" +name + ?",健康值是"+ health + ",性别是"+ sex+"。"); ?} public staticvoidmain(String[] args){ ?Penguin pgn= new Penguin(); pgn.print(); } } A. 企鹅的名字是null,健康值是10,性别是雄。 B.?执行构造方法。 企鹅的名字是null,健康值是0,性别是null。 ?C.?企鹅的名字是null,健康值是0,性别是null。 D.?执行构造方法。 ?企鹅的名字是null,健康值是10,性别是雄。 6.class A { public int i = 10;?} class B extends A{

面向对象基础测试题和答案

共40 道选择题,每题 2.5 分。多选题有错则全错,全对才满分. 面向对象部分测试题 1. 下面描述函数重写错误的是 C A. 要有子类继承或实现 B. 子类方法的权限必须大于等于父类的权限 C. 父类中被private 权限修饰的方法可以被子类重写 D. 子类重写接口中的抽象方法,子类的方法权限必须是public 的 2. 关于封装下面介绍错误的是( D )。 A. 封装将变化隔离 B. 封装提高重用性。 C. 封装安全性 D. 只有被private 修饰才叫做封装 3. 试图编译运行下面的代码会发生什么情况 D public class MyClass{ static int i; public static void main(String[] args){ System.out.println(i); } } A. 错误,变量i 没有被初始化 B. 输出null C. 输出1 D. 输出0 4. 在Java 中,下面对于构造函数的描述正确的是(D)。 A. 类必须显式定义构造函数 B. 构造函数的返回类型是void C. 构造函数和类有相同的名称,并且不能带任何参数

D. 一个类可以定义多个构造函数 5. 下面Java 代码的运行结果是( C )。 class Penguin { private String name=null; // 名字 private int health=0; // 健康值 private String sex=null; // 性别 public void Penguin() { //是一般方法,不是构造方法health = 10; sex = " 雄"; System.out.println(" 执行构造方法。"); } public void print() { System.out.println(" 企鹅的名字是" + name + " ,健康值是" + health + " ,性别是" + sex+ " 。"); } public static void main(String[] args) { Penguin pgn = new Penguin(); pgn.print(); } } A. 企鹅的名字是null ,健康值是10 ,性别是雄。 B. 执行构造方法。 企鹅的名字是null ,健康值是0 ,性别是null 。 C. 企鹅的名字是null ,健康值是0 ,性别是null 。 D. 执行构造方法。 企鹅的名字是null ,健康值是10 ,性别是雄。 6. class A { public int i = 10; }

面向对象程序设计考试题库

面向对象程序设计期末综合练习一(单选题) 单选题 1. C++源程序文件的缺省扩展名为( )。 A. cpp B. exe C. obj D. lik 2. 由C++源程序文件编译而成的目标文件的缺省扩展名为( )。 A. cpp B. exe C. obj D. lik 3. 由C++目标文件连接而成的可执行文件的缺省扩展名为( )。 A. cpp B. exe C. obj D. lik 4. 编写C++程序一般需经过的几个步骤依次是( )。 A. 编译、编辑、连接、调试 B. 编辑、编译、连接、调试 C. 编译、调试、编辑、连接 D. 编辑、调试、编辑、连接 5. 以下标识符中不全是保留字的是( )。 A. case for int B. default then while C. bool class long D. goto return char 6. 能作为C++程序的基本单位是( )。 A. 字符 B. 语句 C. 函数 D. 源程序文件 7. 程序中主函数的名字为( )。 A. main B. MAIN C. Main D. 任意标识符 8. C++程序的基本模块为( )。 A. 表达式 B. 标识符 C. 语句 D. 函数 9. 可用作C++语言用户标识符的一组标识符是( )。 A. void define +WORD B. a3_b3 _123 YN C. for -abc Case D. 2a DO sizeof 10. 存储以下数据,占用存储字节最多的是( )。 A. 0 B. …0? C. “0” D. 0.0 11. 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用( )符号作为分隔符。 A. 空格或逗号 B. 逗号或回车 C. 逗号或分号 D. 空格或回车 12. 设”int a=12;”,则执行完语句”a+=a*a;”后,a 的值是( )。 A. 12 B. 144 C. 156 D. 288 13. 假设在程序中 a 、b 、c 均被定义成整型,所赋的值都大于1,则下列能正确表示代数式abc 1的表达式是( )。 A. 1.0/a*b*c B. 1/(a*b*c) C. 1/a/b/(float)c D. 1.0/a/b/c 14. 设”int a=15,b=26;”,则”cout<<(a,b);”的输出结果是( )。 A. 15 B. 26,15 C. 15,26 D. 26

面向对象分析与设计试题及其答案

面向对象分析与设计试题B卷 一、单项选择题 ( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题 2 分,共 20 分 ) 1.到20世纪末,面向对象软件工程已经逐渐发展成熟,特别是()的 形成和广泛使用,采用面向对象分析与编程的软件开发方法已成为软件开发的主流方法。 A. Simula67语言 B. Smalltalk语言 C. Java语言 D. 统一建模语言(UML)的标准 2. 面向对象的运动产生了多种面向对象的语言, 其中()是一种混合性面向对象语言, 既支持面向过程的程序设计方法,又支持面向对象的程序设计方法,有广泛应用的基础和丰富开发环境的支持,因而使面向对象的程序设计能得到很快普及。 A. Smalltalk B. Eiffel C. C++ D. Java 3.下列不属于面向对象技术的基本特征的是()。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 4. 面向对象程序设计将描述事物的数据与 ( ) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 5. 关于面向对象方法的优点,下列不正确的叙述是()。 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. 使用UML进行关系数据库的()时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 A. 业务Use Case模型设计 B. 逻辑数据模型设计 C. 物理数据模型设计 C. 物理实现设计 二、填空题 ( 每空 1 分,共 20 分 ) 1. 面向对象开发方法一改过去传统的以___功能分析___为基础的__面向过程__的结构 化分析与设计方法,它模拟人们理解和处理客观世界的方式来分析问题,把系统视为一

面向对象考试题(参考)

面向对象考试题(参考)

1。程序设计中,首先在问题域中识别出若干个() A。函数B。类C。文件D。过程 2。定义类模板用关键字() A。const B.new C.delete D.template 3。运算结果类型相同的() A. 9.0/2.0 9.0/2 B. 9/2.0 9/2 C. 9.0/2 9/2 D. 9/2 9.0/2.0 4。已知f1 f2同一类两个成员函数,但f1不能调用f2,说明() a.f1 f2都是静态函数 b.f1是静态,f2不是 c.f1不是,f2是静态 d.f1 f2都不是静态函数 5。调用一成员函数时,使用动态联编的情况是() A.通过对象调用一虚函数B。通过指针或引用调用一虚函数 C。通过对象调用静态函数D。通过指针或引用调用一静态函数6。假定一个类构造函数为:“A(int aa=1,int bb=0){a=aa;b=bb;}则执行"A x(4)"后,x.a和x.b值分别是:() A。1,0B。1,4C。4,0D。4,1 7。在派生类中能直接访问基类的() A。公有成员,私有成员B。保护成员,私有成员 C。不可访问成员,私有成员 D。公有成员,保护成员 8。不具访问权限属性的是: A。非类成员B。类成员C。数据成员D。函数成员 9。类定义中private,protected,public 出现次数为() A。任意多次B。至多一次C。public 至少一次D。至少一次10。C++鼓励程序员将() A。数据操作分别封装B。不同类型数据封装 C。数据操作封装在一起D。不同作用操作封装在一起。 二、填空 1。C++中,最好用()代替malloc。 2。函数模板中template之后尖括号的类型参数冠以保留字()。 3。在IOS类中定义的用于格式控制的枚举变量中十、八、十六进制是dec,oct,()。4。如果重载了运算符+,则相应运算函数名是()。 5。由static修饰的数据成员为该类的所有对象()。 6。为了实现多态性,派生类需要重新定义基类中的()。 7。编译时多态性通过()函数实现。 8。派生类中实现基类成员初始化,需由派生类的构造函数调用()来完成。9。C++中访问指令所指对象的成员使用运算符()。 10。重载函数在参数类型或参数个数上不同但()相同。

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

网络教育课程考试复习题及参考答案 面向对象程序设计 一、填空题: 1.创建类的对象时,使用运算符___________给对象分配内存空间。 2.Java通过来区分重载函数。 3.在子类中使用保留字_ _可调用被子类覆盖的父类中的方法。 4.使用保留字可以从一个构造方法中调用同一个类的另一个构造方法。 5.抽象类用修饰符定义。 6.类的数据成员的访问权限修饰符一般为 7.访问权限修饰符按照访问权限的大小从大到小分别为、、 、。 8.定义类的构造方法不能有,其名称与名相同。 9.抽象方法是的特征是。 10.Java中的所有异常都是从继承来的。 11.对象引用中存储的内容是。 12.下列程序段执行后, String str1 = new String("Java"); String str2 = new String("Java"); if (str1.equals(str2)) { System.out.println("They are equal"); } else { System.out.println("They are not equal"); } 输出结果为:。 13.下面循环执行后的sun值为 int count =0, sum = 0; while ( count <10 ) { sum += count; count ++; } 14.Java语言中关键字_ _表示双精度类型。 15.保留字_ _用于导入包中的类到程序中,供程序中使用。 16.Java语言中继承是用保留字表示。 17.面向对象程序设计中,类是指。 18.对象包含和。 19.若有类定义: class B extends A{ … } 则类B是类A的_ 。 20.Java语言中, 通常把可能发生异常的方法调用语句放到try块中,并用紧跟其后的_ 块来捕 获和处理异常。 21.多态是指。 22.声明常量时使用修饰符。 23.Java中异常抛出使用保留字。 24.一个类成员或者方法前面加上了修饰符,那说明该数据成员和方法可以直接通过类名 来访问和调用。

面向对象程序设计试卷(D)

公 安 海 警 学 院 《 面向对象程序设计 》考试(查)卷( D 卷) (2012—2013学年第一学期) 考核类型: ;考核年级: ; 考试时间: 分钟 考试须知 公安海警学院学员参加学院组织的各类考试必须严格遵守考场纪律。有考试违纪作弊行为者,严格按照学院有关规定进行处理。 各考场排定的监考教员,必须认真履行监考职责,确保考场正常秩序。 阅卷教员要依照批阅试卷程序与规定,公平公正地完成好阅卷工作。 一、填空题(共10分,每空1分) 1.面向对象程序设计将数据及对数据的 操作 放在一起,作为一个相互依存,不可分割的整体来处理,即对象。 2.为了使类中的成员不能被类外的函数访问,则应把该成员的访问权限定义为 私有的或受保护的 属性。 3.在C++中,声明布尔类型变量所用的关键字是__ bool __。 4.C++中定义常量的关键字是 const 。 5.C++中进行输入、输出操作时,将数据对象从输入流提取出来的运算符是“>>”,插入到输出流的运算符是__ << __。 6.类的继承是指子类继承基类的_ 数据成员 __和成员函数。 7.不同对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为__ 多态性 __。 8.设类A 有成员函数void Fun(void);若要定义一个指向类成员函数的指针变量pafn 来指向Fun ,该指针变量的声明语句是:__ void (A ::*pafn )(viod ) ; __。 9.在保护派生中,基类权限为Private 的成员在派生类中__ 不可访问 __。 10.将指向对象的指针作为函数参数,形参是对象指针,实参是对象的__ 首地址 _。 二、选择题(共30分,每题2分) 1.C++对C 语言作了很多改进,下列描述中( D )使得C 语言发生了质变,即从面向过程变成了面向对象。 A .增加了一些新的运算符 B .允许函数重载,并允许设置默认参数 C .规定了函数说明必须用原型 D .引进了类和对象的概念 2.在C++中使用流进行输入输出,其中用于屏幕输出的对象是( C ) A .cerr B .cin C .cout D .cfile 3.对使用关键字new 所开辟的动态存储空间,释放时必须使用( C ) A .free B .create C .delete D .realse 4.用C++中定义一个类,当没有明确指定成员的访问权限时,则系统约定该成员为( C ) A .public B .protected C .private D .friend 5.C++的继承性允许派生类继承基类的( A ) A .部分特性,并允许增加新的特性或重定义基类的特性 B .部分特性,但不允许增加新的特性或重定义基类的特性 C .所有特性,并允许增加新的特性或重定义基类的特性 D .所有特性,但不允许增加新的特性或重定义基类的特性 6.类的私有成员可在何处访问( D ) A .通过子类的对象访问 B .本类及子类的成员函数中 C .通过该类对象访问 D .本类的成员函数中 7.一个类可包含析构函数的个数是( B ) A .0个 B .1个 C .至少一个 D .0个或多个 8.this 指针存在的目的是( B ) A .保证基类公有成员在子类中可以被访问 B .保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码 C .保证基类保护成员在子类中可以被访问 D .保证基类私有成员在子类中可以被访问 9.下列关于类的权限的描述错误的是( A ) A .类本身的成员函数只能访问自身的私有成员 B .类的对象只能访问该类的公有成员 C .普通函数不能直接访问类的公有成员,必须通过对象访问 D .一个类可以将另一个类的对象作为成员 10.关于虚函数,下列说法正确的是( A ) A. 虚函数在基类中说明后,不用再在派生类中重新说明 B. 包含有虚函数的基类称为抽象基类 C. 每个派生类必须对从基类继承的虚函数进行重新重定义 D. 包含虚函数的类不能够生成实例对象 11.设类A 将其它类对象作为成员,则建立A 类对象时,下列描述正确的是( B ) A .A 类构造函数先执行 B .成员构造函数先执行 C .两者并行执行 D .不能确定 12.下列描述错误的是( A ) A .在创建对象前,静态成员不存在 B .静态成员是类的成员 C .静态成员不能是虚函数 D .静态成员函数不能直接访问非静态成员 13.对于友元描述正确的是( B ) A .友元是本类的成员函数 B .友元不是本类的成员函数 C .友元不是函数 D .友元不能访问本类私有成员 14.可以在派生类的成员函数中访问基类的非私有成员,并能通过派生类的对象直接访问基类公有成员的派生方式是( A ) A .public B .protected C .private D .friend 15.如果没有为一个类定义任何构造函数的情况下,下列描述正确的是( A ) A .编译器总是自动创建一个不带参数的构造函数 B .这个类没有构造函数 C .这个类不需要构造函数 D .该类不能通过编译 三、判断题(共10分,每题1分) 密 封 线

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

简答题 1、传统的结构化程序设计的优点和缺点是什么? 优点: ( 1) 这种程序设计方法力求算法描述准确。 ( 2) 对每一子过程模块容易进行程序正确性证明。 缺点: ( 1) 这种程序设计方法本质上是面向”过程”的, 而”过程”和”操作”又是不稳定和多变的, 因此不能直接反映人类求解问题的思路。 ( 2) 程序代码可重用性差。程序中除少数标准库函数外, 每设计一个程序时, 程序员几乎从零做起。即使重用代码, 一般也是经过拷贝或编辑重新生成一份。 ( 3) 维护程序的一致性困难。该种方法将数据与对数据进行处理的程序代码分离。 2、什么是对象? 每个对象都具有属性( Attribute) 和方法( Method) 这两方面的特征。对象的属性描述了对象的状态和特征, 对象的方法说明了对象的行为和功能, 而且对象的属性值只应由这个对象的方法来读取和修改, 两者结合在一起就构成了对象的完整描述。 3、什么是消息? 在面向对象的程序设计中, 由于对象描述了客观实体, 它们

之间的联系经过对象间的联系来反映。当一个对象需要另外一个对象提供服务时, 它向对方发出一个服务请求, 而收到请求的对象会响应这个请求并完成指定的服务。这种向对象发出的服务请求就称为消息。 4、什么是多态性? 所谓多态性是指当程序中的其它部分发出同样的消息时, 按照接收消息对象的不同能够自动执行类中相应的方法。其好处是, 用户不必知道某个对象所属的类就能够执行多态行为, 从而为程序设计带来更大方便。 5、什么是面向对象的程序设计方法? 这种方法将设计目标从模拟现实世界的行为转向了模拟现实世界中存在的对象及其各自的行为。 在OOP中, 将”对象”作为系统中最基本的运行实体, 整个程序即由各种不同类型的对象组成, 各对象既是一个独立的实体, 又可经过消息相互作用, 对象中的方法决定要向哪个对象发消息、发什么消息以及收到消息时如何进行处理等。 6、面向对象方法的特点是什么? ( 1) OOP以”对象”或”数据”为中心。由于对象自然地反映了应用领域的模块性, 因此具有相对稳定性, 能够被用作一个组件去构成更复杂的应用, 又由于对象一般封装的是某一实际需求的各种成分, 因此, 某一对象的改变对整个系统几乎没有影响。

面向对象试卷A卷

《面向对象程序设计》课程期末考试试卷A卷 1.面向对象系统的三大特点是() 【A】封装性、继承性和多态性【B】封装性、重载和参数化多态性 【C】类、对象和接口【D】信息隐藏、继承性和多态性 2.下列数据类型,不是引用类型的是() 【A】数组【B】string 【C】结构体【D】类 3.下面的程序段运行后,变量b的值是() bool b=true; Console.WriteLine(67>56&&(b=false)); 【A】true 【B】false 【C】1 【D】0 4.下列叙述正确的是() 【A】C#中float类型和decimal类型的数据可以相互自动转换; 【B】C#中double类型和decimal类型的数据可以相互自动转换; 【C】C#中整型和bool类型的数据可以相互自动转换; 【D】C#中float类型的数据可以自动转换为double类型。 5.switch语句的基本结构为switch(exp){...},其中表达式exp的类型不能是()。 【A】整型【B】字符或字符串【C】枚举类型【D】实型 6.下列关于foreach语句说法错误的是()。 【A】foreach语句可以用来遍历数组中的元素; 【B】foreach语句有一个限制,即在循环体内不允许通过迭代变量修改集合的元素;【C】如果一个对象支持接口IEnumerable或IEnumerable,那么就可以将该对象作为foreach语句遍历的集合对象; 【D】foreach语句中迭代变量只能是值类型的。 7.下列定义和初始化二维数组的选项错误的是()。 【A】int[,] nums = { { 1, 2, 3 }, { 4, 5, 6 } }; 【B】int[,] nums =new int[,]{ { 1, 2, 3 }, { 4, 5, 6 } }; 【C】int[,] nums =new int[2,3]{ { 1, 2, 3 }, { 4, 5, 6 } }; 【D】int[,] nums =new int[2,3]{ { 1, 2, 3 }, { 4, 5, 6 ,7} }; 8.下列关于C#中结构体和类叙述正确的是()。 【A】结构体和类唯一的区别是结构体中成员的默认访问控制方式为public,而类中成员的默认访问控制方式为private; 【B】结构体是值类型的,而类是引用类型的; 【C】类中可以定义成员数据和成员方法,而结构体中不能; 【D】类中可以定义构造函数和析构函数,而结构体中不能。 9. 下列关于ref和out的说法错误的是()。 【A】ref和out不仅可以修饰值类型的参数,也可以修饰引用类型的参数; 【B】定义方法时形参如果使用ref或out进行修饰,调用方法时对应的实参也要使用ref或out进行修饰; 【C】用ref和out修饰引用类型的参数时,它们使得引用本身通过引用来传递; 【D】不管是使用ref或out修饰参数,在调用方法之前,都必须给参数赋值。 10.下列关于方法重载的说法错误的是()。 【A】如果两个方法的参数个数不同可以构成重载; 【B】如果两个方法对应的参数类型不同可以构成重载; 【C】如果两个方法的返回值类型不同可以构成重载; 【D】方法public void fun(out int x){ }和public void fun(ref int x){ }不可以构成重载。 11.下列关于构造函数和析构函数的说法错误的是()。 【A】析构函数没有参数; 【B】构造函数可以重载,而析构函数不能重载;

相关主题
文本预览
相关文档 最新文档