面向对象程序设计习题库.docx
《面向对象程序设计习题库.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计习题库.docx(44页珍藏版)》请在冰豆网上搜索。
面向对象程序设计习题库
面向对象程序设计习题库
选择题
1.一个设计得好的面向对象系统具有(D)特征。
A低聚、低耦合B高聚、低耦合C高聚、高耦合D低聚、高耦合
2.面向对象程序设计的特点主要概括为(C)。
A可分解性、可组合性、可分类性B继承性、封装性、多态性
C抽象封装性、继承性、多态性D封装性、易维护性、可扩展性、可重用性
3.关于C#程序的书写,下列不正确的说法是(D)。
A.区分大小写B.一行可以写多条语句
C.一条语句可写成多行
D.一个类中只能有一个Main()方法,因此多个类中可以有多个Main()方法
4.关于C#语言的基本语法,下列哪些说确的是(C)
A.C#语言使用using来引用需要用到的命名空间;
B.用C#编写的程序中,Main函数是唯一允许的全局函数;
C.C#语言中使用的名称严格区分大小写;
D.C#中一条语句必须写在一行;
5以下标识符中,正确的是(A)。
A._nNameB.typeofC.6bD.x5#
6.字符串连接运算符包括&和(A)。
A.+B.-C.*D./
7.拆箱是关于:
(B)
A、值类型到引用类型的转换B、引用类型到值类型的转换
C、引用类型到引用类型的转换D、值类型到值类型的转换
8.装箱是关于:
(A)
A、值类型到引用类型的转换B、引用类型到值类型的转换
C、引用类型到引用类型的转换D、值类型到值类型的转换
9.下列引用类型和值类型描述正确的是(A)。
A.引用类型变量保存存地址,值类型直接保存变量值
B.引用类型在变量中直接保存变量值,值类型保存存地址
C.引用类型和值类型保存数据的方式相同
D..NETFramework不支持值类型,因为所有的类型都是引用类型了
10.一个类中的静态方法的调用可以:
(A)
A、通过类名调用B、通过实例化的对象调用
C、在主方法中直接调用D、在同一个类中的某一方法中直接调用
11.以下数据类型中,属于引用类型的是:
(A)
A、string类型B、double类型C、int类型D、char类型
12.下列类型中为值类型的是(C)
A.字符串类型B.树组类型C.枚举类型D.接口类型
13.decimal类型和浮点类型都可以表示小数,正确说法:
(C)
A.两者没有任何区别B.小数类型比浮点类型取值围大
C.小数类型比浮点类型精度高D.小数类型比浮点类型精度低
14.有定义语句:
int[,]a=newint[5,6];则下列正确的数组元素的引用是__C__。
A.a(3,4)B.a(3)(4)C.a[3][4]D.a[3,4]
15.在C#编制的财务程序中,需要创建一个存储流动资金金额的临时变量,则应使用下列哪条语句?
(A)
A.decimaltheMoney;B.inttheMoney;C.stringtheMoney;D.doubletheMoney;
16.在C#中,表示一个字符串的变量应使用以下哪条语句定义?
(B)
A.CStringstr;B.stringstr;C.DimstrasstringD.char*str;
17.C#中每个int类型的变量占用(C)个字节的存。
A.1B.2C.4D.8
18.假定一个10行20列的二维整型数组,下列哪个定义语句是正确的(C)。
A.int[]arr=newint[10,20]B.int[]arr=intnew[10,20]
C.int[,]arr=newint[10,20]D.int[,]arr=newint[20;10]
19.枚举型常量的值不可以是(D)类型
A.intB.longC.ushortD.doule
20.引用类型主要有4种:
类类型、数组类型、接口类型和(C)。
A.对象类型B.字符串类型C.委托类型D.整数类型
21.分析下列语句:
namespaceTestCS
{
publicdelegatevoidHello(stringtarget);
}
该语句的作用是:
(D)
A.在TestCS命名空间中定义了一个名为Hello的全局方法;
B.在TestCS命名空间中声明了函数Hello的原型;
C.在TestCS命名空间中定义了一个名为Hello的函数指针;
D.在TestCS命名空间中定义了了一个名为Hello的委托类型;
22.以下关于for循环的说法不正确的是(A)。
A.for循环只能用于循环次数已经确定的情况
B.for循环是先判定表达式,后执行循环体语句
C.for循环中,可以用break语句跳出循环体
D.for循环体语句中,可以包含多条语句,但要用花括号括起来。
23.下面对异常说法不正确的是(D)
A.try/catch块为基本引发异常的组合
B.在捕获异常时,可以有多个catch块
C.无论异常是否发生,finally块总会执行
D.try块和finally不能连用
24.C#程序中,可使用try..catch机制来处理程序出现的(B)错误。
A.语法B.运行C.逻辑D.拼写
25.为了能够在程序中捕获所有的异常,在catch语句的括号中使用的类名为(A)_。
A.ExceptionB.DivideByZeroExceptionC.FormatExceptionD.以上三个均可
26.C#源程序文件的默认扩展名为(C)。
A.cppB.exeC.csD.lik
27.下列的(D)不是构造函数的特征。
A.构造函数的函数名和类名相同
B.构造函数可以重载
C.构造函数可以带有参数
D.可以指定构造函数的返回值
28.类的析构函数的作用是( D )
A.一般成员函数 B.类的初始化
C.对象的初始化 D.释放资源
29.类的析构函数是在( C )调用的。
A.类创建时 B.创建对象时
C.销毁对象时 D.不自动调用
30.在C#程序中,可以使用(A)属性来引用处于非托管代码环境中的函数。
A.[DllImport]B.[Conditional]C.[STAThread]D.[SecureMethod]
31.对托管代码与非托管代码之间的区别描述正确的是(D)。
A.非托管代码依赖于CLR提供的服务,而托管代码不需要
B.托管代码生成的应用程序为目标机器上可执行文件,非托管代码生成的应用程序为中间语言文件
C.托管代码和非托管代码之间没有区别
D.托管代码依赖于CLR提供的服务,而非托管代码不需要
32.在System.IO命名空间中(C)类是实现创建、移动、枚举目录和子目录的实例方法。
A.DiretoryB.FileC.DirectoryInfoD.FileInfo
33.下面对程序集和命名空间说确的是(B)。
A.一个程序集只能引用一个命名空间
B.一个程序集可以引用多个命名空间,一个命名空间也可以保存在多个程序集中
C.一个程序集可以引用多个命名空间,但一个命名空间只能保存在一个程序集中
D.一个命名空间可以保存在多个程序集中,命名空间无法包含另外的命名空间
34.(C)命名空间中的类和接口用于创建Web应用程序的页面?
A.System.DrawingB.System.IO
C.System.Web.UID.System.Web.Service
35.ADO.NET使用(B)命名空间的类访问SQLServer数据库中的数据。
A.System.Data.OleDbB.System.Data.SqlClient
C.System.Xml.SerializationD.System.IO
36.构成对象的两个主要因素是(A)。
A属性和操作B标识和容C继承和多态D消息和封装
37.下面的修饰符中(C)不是访问修饰符。
A.publicB.protectedC.newD.internal
38.在类的定义中,类的(B)描述了该类的对象的行为特征。
A.类名B.方法C.所属的名字空间D.属性
39.有关类和对象的说法不正确的是(B)。
A)对象是类的实例B)一个类只有一个对象
C)任何一个对象只能属于一个类D)类与对象的关系和数据与变量的关系相似
E)类是抽象的,对象是具体的
40.以下类MyClass的属性count属于(B)属性.
classMyClass
{
inti;
intcount
{
get{returni;}
}
}
A.只写B.只读C.可读写D.不可读不可写
41.根据下面的代码,可以确定类A与类B之间存在(A)关系。
publicclassA{
privateBtheB;
publicvoidaMethod(){theB.doSomthing();}
}
A关联B泛化C实现D包含
42.继承机制的作用是( D )
A.信息隐藏 B.数据封装
C.定义新类 D.数据抽象
43已知类B是由类A继承而来,类A中有一个为M的非虚方法,现在希望在类B中也定义一个名为M的方法,若希望编译时不出现警告信息,则在类B中声明该方法时,应使用(B)方法。
A.staticB.newC.overrideD.virtual
44.类的以下特性中,可以用于方便地重用已有的代码和数据的是(C).
A.多态B.封装C.继承D.抽象
45.在ADO.NET中,执行数据库的某个操作,则至少需要创建(A)并设置它们的属性,调用合适的方法:
A.一个Connection对象和一个Command对象
B.一个Connection对象和DataSet对象
C.一个Command对象和一个DataSet对象
D.一个Command对象和一个DataAdapter对象
46.下列说法中对Mdi子窗体描述正确的是(D)
A.设置MdiChildForm属性为true
B.设置MdiChild属性为false
C.设置MdiChild属性为true
D.设置MDI子窗体MDiParent属性引用父窗体实例
47.使用派生类的主要原因是(A)。
A提高代码的可重用性B提高程序的运行效率
C加强类的封装性D实现数据的隐蔽
48、如果一个类至少有一个抽象方法,那么就称该类为(A)。
A抽象类B接口类C密封类D所有类
49、在C#语言中引入泛型,是为了提高(D)。
A程序运行效率B程序通用性
C类的安全性D以上三个方面
50.以下(D)对接口方法的述是正确的
A可以是静态的B可以是公有的
C可以是任何访问限制D以上都不对
填空题
1、常用的面向对象的程序语言有:
C++、、
等。
参考答案:
javac#
2.定义方法时使用的参数是,调用方法时使用的参数是。
参考答案:
形参实参
3.数据类型说明符用来说明方法返回值的类型,如果没有返回值,则其类型说明符应为。
参考答案:
void
4、在C#中,进行注释有两种方法:
使用//和使用/**/符号对,其中只能进行单行注释。
参考答案:
//
5、使用泛型类型可以最大限度地重用代码、 以及 。
参考答案:
保护类型的安全 提高性能
6、C#数组元素的下标从开始。
参考答案:
0
7.设x为int型变量,请写出描述“x是奇数”的C#语言表达式。
参考答案:
x%2==1
8.已知字符串str的值为“abcdefgh”,则表达式str.Substring(1,3)的值为。
参考答案:
bcd
9.当在程序中执行到语句时,将结束本层循环类语句或switch语句的执行。
参考答案:
break
10.当在程序中执行到________语句时,将结束所在循环语句中循环体的一次执行。
参考答案:
continue
11.在switch语句中,在分支的最后应有一个选项。
参考答案:
default
12.在C#语言中,实现从群集中取出每一个元素的循环语句是。
参考答案:
foreach
一个命名空间除了可包含其他命名空间外,还可包含 、 、 、枚举、委托等成员。
参考答案:
类 结构 接口
13.NETFramework包括三个主要部分:
、和。
参考答案:
公共语言运行库类库应用模板
14、在.NET中所有类的基类是。
参考答案:
Object
15、抽象模型越简单,它就,也就越具有普遍性。
抽象模型越复杂,就越。
参考答案:
越抽象具体
16、在学习新东西时,大脑会自动搜寻以前创建和掌握的抽象/模型,以资借鉴。
这种进行特性对比,找到可供重用的近似抽象的过程又称为和。
参考答案:
模式匹配模式重用
17、委托是一种数据类型,它的作用是。
参考答案:
允许在运行时选择要调用哪些函数。
18.传入某个属性(访问器结构)的SET方法的隐含参数的名称是。
参考答案:
value
19、在面向对象的结对关系有三种,分别是:
和、。
参考答案要点:
一对一一对多多对多
20、在.NET中表示接口的关键字是。
参考答案:
interface
21、接口可由、、事件、索引器或这四种成员类型的任意组合构成。
接口不能包含。
参考答案:
方法属性字段
22、在类中若要实现接口成员,类中的对应成员必须是、,并且与接口成员具有相同的名称和签名。
参考答案:
公共的非静态的
23、在ADO.NET中的对象有、和DataSet等。
参考答案:
SqlConnectionSqlCommand
24、常用的SQL操作语句有、、和Delete等。
参考答案:
Select、Update、Insert
25.Timer控件的属性用来设置定时器Tick事件发生的时间间隔。
参考答案:
Interval
26、用以说明类中私有成员的关键字是。
参考答案:
(private)
27、对类的实例数据成员的访问格式为对象名。
参考答案:
(.数据成员名)
28、类有两种用法,一种是用于,另一种是通过派生新的类。
参考答案:
(定义对象,继承或派生)
29静态成员在类中有两种情况,即和。
参考答案:
(静态成员函数,静态数据成员。
可以颠倒)
30.根据类的赋值兼容原则,派生类对象可以赋给的变量。
参考答案:
(基类)
31异常处理,就是针对软件的外部环境出现意外和所作出的适当处理。
参考答案:
(错误)
32.静态构造函数是通过来调用的。
参考答案:
(类)
简答题
1.简述面向对象程序设计的三要素。
参考答案要点:
在上述面向对象的基本概念基础之上,不可避免地要涉及到面向对象程序设计所具有的3个共同特征:
用户定义类型、继承和多态性。
用户定义类型提供一种表达真实世界的直观代码,便于重用,减少代码量。
继承:
不修改代码的条件下进行扩展,派生类较为短小,编写(维护)更少;多态如何使同一个消息被不同类型的对象响应。
2.简述面向对象程序设计的抽象和封装。
参考答案要点:
抽象是人们认识事物的常用方法,比如地图的绘制。
抽象的过程就是如何简化、概括所观察到的现实世界,并为人们所用的过程。
抽象包括对象的状态与行为,对应到类的属性与方法。
抽象出来的属性通过封装可以减少数据冗余,进行信息隐藏和保护数据完整性。
3.类与对象有什么关系?
参考答案要点:
类是一种用户自定义的数据类型.对象是使用自定义的类名在程序中说明变量.或者说;具有类类型的变量即为对象.类是创建对象的样板;对象是类的实例。
4.判断下列类之间的关系,把它们分别列入A聚合B继承C关联D都不是这四类中。
1.大学–学院2.学生–课程3.学生–大一新生
4.汽车–车门5.货车–交通工具6.公共汽车–车站
7.工具条–按钮8.汽车发动机–汽车
9.员工–公司10.本科生–研究生
参考答案:
聚合:
1478
继承:
510
关联:
269
都不是:
3
5.面向对象软件开发方法的目标
参考答案要点:
封装性、易维护性、可扩展性、可重用性
6.简述数据类型的“强类型“。
参考答案要点:
为所有变量指定数据类型称为“强类型”。
使用强类型有以下优点:
∙它为变量启用智能提示(IntelliSense)支持。
这允许您在输入代码时看到变量的属性和其他成员。
∙它会运用编译器类型检查。
这将捕捉到因溢出等错误而在运行时失败的语句。
这也可以在不支持方法的对象上捕捉对方法的调用。
∙使代码的执行速度更快。
7.简述C#语言的优点
参考答案要点:
∙完全面向对象的设计。
∙强类型安全。
∙很好地融合了高级语言的简明性和C++的强大功能。
∙垃圾回收。
∙类似于C和C++的语法和关键字。
∙使用委托取代函数指针,从而增强了类型安全和安全性
8.简述C#语言中的过程重载
参考答案要点:
重载过程是指使用相同的名称和不同的参数列表在多个版本中定义某个过程。
重载的目的是定义过程的若干个密切相关的版本,而不需要通过名称来区分它们,可通过改变参数列表达到此目的。
重载版本必须在以下至少一个方面不同于所有其他重载版本:
●参数的数量
●参数的顺序
●参数的数据类型
●类型参数的数量(适用于泛型过程)
●返回类型(仅适用于转换运算符)
9.简述在C#语言中关键字new的用途并举例。
参考答案要点:
在C#中,new关键字可用作运算符、修饰符或约束。
new运算符:
用于创建对象和调用构造函数。
new修饰符:
用于向基类成员隐藏继承成员。
new约束:
用于在泛型声明中约束可能用作类型参数的参数的类型。
10.关键字this的意义和用法?
参考答案要点:
this关键字引用类的当前实例,还可用作扩展方法的第一个参数的修饰符。
this的常用用途:
限定被相似的名称隐藏的成员
将对象作为参数传递到其他方法
声明索引器
由于静态成员函数存在于类一级,并且不是对象的一部分,因此没有this指针。
在静态方法中引用this是错误的。
11.关键字base的意义和用法?
参考答案要点:
tbase关键字用于从派生类中访问基类的成员:
调用基类上已被其他方法重写的方法。
指定创建派生类实例时应调用的基类构造函数。
基类访问只能在构造函数、实例方法或实例属性访问器中进行。
从静态方法中使用base关键字是错误的。
所访问的基类是类声明中指定的基类。
12.简述C#程序的通用结构
参考答案要点:
C#程序可由一个或多个文件组成。
每个文件都可以包含零个或零个以上的命名空间。
一个命名空间除了可包含其他命名空间外,还可包含类、结构、接口、枚举、委托等类型。
在某一个类中必须而且只能有一个静态的Main方法作为程序的入口。
下面是一个程序的框架结构,它包含所有这些元素种类。
//AskeletonofaC#program
usingSystem;
namespaceYourNamespace
{
classYourClass
{
}
structYourStruct
{
}
interfaceIYourInterface
{
}
delegateintYourDelegate();
enumYourEnum
{
}
namespaceYourNestedNamespace
{
structYourStruct
{
}
}
classYourMainClass
{
staticvoidMain(string[]args)
{
//Yourprogramstartshere...
}
}
}
13.简述c#中类的成员
参考答案要点:
类和结构具有表示其数据和行为的成员。
成员
说明
字段
字段是被视为类的一部分的对象的实例,通常用于保存类数据。
例如,日历类可能具有一个包含当前日期的字段。
属性
属性是类中可以像类中的字段一样访问的方法。
属性可以为类字段提供保护,以避免字段在对象不知道的情况下被更改。
方法
方法定义类可以执行的操作。
方法可以接受提供输入数据的参数,并且可以通过参数返回输出数据。
方法还可以不使用参数而直接返回值。
事件
事件向其他对象提供有关发生的事情(如单击按钮或成功完成某个方法)的通知。
事件是使用委托定义和触发的。
有关更多信息,请参见事件和委托。
运算符
运算符是对操作数执行运算的术语或符号,如+、*、<等。
可以重新定义运算符,以便可以对自定义数据类型执行运算。
有关更多信息,请参见可重载运算符(C#编程指南)。
索引器
使用索引器可以用类似于数组的方式为对象建立索引。
构造函数
构造函数是在第一次创建对象时调用的方法。
它们通常用于初始化对象的数据。
析构函数
析构函数是当对象即将从存中移除时由运行库执行引擎调用的方法。
它们通常用来确保任何必须释放的资源都得到适当的处理。
嵌套类型
嵌套类型是在类或结构中声明的类型,通常用于描述仅由包含它们的类型所使用的对象。
14.简要叙述类的构造函数和析构函数。
参考答案要点:
构造函数:
构造函数是一种特殊的方法主要用来在创建对象时初始化对象即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中特别的一个类可以有多个构造函数可根据其参数个数的不同或参数类型的不同来区分它们即构造函数的重载
析构函数:
析构函数用于类的实例销毁时完成的操作。
∙不能在结构中定义析构函数。
只能对类使用析构函数。
∙一个类只能有一个析构函数。
∙无法继承或重载析构函数。
∙无法调用析构函数。
它们是被自动调用的。
∙析构函数既没有修饰符,也没有参数。
15.简述Windows窗体程序中如何使用事件?
参考答案要点:
事件是可以通过代码响应或“处理”的操作。
事件可由用户操作(如单击鼠标或按某个键)、程序代码或系统生成