学院2011/2012学年 第一学期    面向对象程序设计    期末考试试题卷(A
考试时间:120分钟
一、    填空题每空1分,共20
1.客观世界中的事物都是对象。对象具有自己的    ,用来描述对象的静态特征;而对象的    用于描述对
象的动态特征。
2.在面向对象的模型中,对象之间的关系可在类级别上概述为聚合、    、    口一般关联等四种。其中基
类和派生类之间的关系属于    关系。
3.C#程序的基本结构包括注释    、    、    、    口类型及其成员等五部分。
4.数据类型是对客观数据对象的抽象,    C#语言中的数据类型分为引用类型和    两大类。其中引用类型包括
    、    、    和数组等。
5.方法是最基本的函数成员,对象所能执行的操作都是通过方法来定义的。方法应该包括返回类型、        、
    口执行体等4个部分。
6.类的    函数名称与类名相同,且不能声明返回类型,其代码主要完成对象的初始化工作。
7.类索引函数的参数类型必须为    或    。
8.类对接口方法的实现时,在方法名称之前加上接口名,这叫做对接口方法的    实现,此时这个方法是这个
类的    员,不能通过类的实例来访问。
9.作为一种特殊的函数成员,重载类的操作符时,被重载的操作符必须被声明为公有的和    ,并通过在关键
operator后跟操作符来声明。
二、    判断题每小题1分,共5
1.一个类只能有一个析构函数,且不能有参数和返回类型,也不能是静态的。    ()
2.类的静态构造函数为类的所有对象共享,并且只在首次使用该类时被调用。    ()
3.派生类可以继承基类的所有成员,并增加自己的成员进行功能扩张。    ()
4.接口方法不能是静态的,也不能使用任何访问限制修饰符。    ()
5.如果一个类被声明为抽象的,则它的派生类不可以被声明为抽象类。    ()
三、    选择题每小题2分,共10
1.在设计一个类时,如果不希望外部对象访问该类成员,应定义为()    。
A)私有的或保护的    B)公有的    C)保护的或者共有的    D)公有的或者私有的
2.在类中未说明访问权限的情况下,所有成员都是()的
A)共有的B)私有的 C)内部的 D)保护的
3.关于数组型参数下面那个说法是错误的()
A)    方法中只允许定义一个数组型参数;
B)    数组型参数所定义的数组必须是一维数组;
C)    数组型参数可以作为引用参数或者输出型参数使用;
D)    数组型参数必须位于参数列表中的最后;
4.有如下程序片段:
class Stude nt
{
public virtual stri ng WhoYouAre(){
return "I am a Stude nt."; }
}
class PostStude nt:Stude nt
{
public new stri ng WhoYouAre(){
return "I am a PostStude nt."; }
}
static void Mai n(){
Stude nt st = new PostStude nt();
Co nsole.WriteLi ne(st.WhoYouAre());
}
则正确的执行结果是()。
A) I am a Stude nt. B) I am a PostStude nt.    C) st.WhoYouAre()    D )异常退出
5.已知st是类Student的一个实例,read ()Student类的一个静态成员。如果要访问    Studentread ()成员,
则下列()表达式是正确的。
A)st.read() B)st::read() C)ad() DStudent::read()
四、    简答题每小题5分,共15
1.在面向对象的模型中,什么是类的多态性?    C#是如何实现类的多态特性的?
2.什么是接口?如果一个类声明支持某个接口,那么该类必须遵循哪些规则?
3.请简单叙述委托发布和订阅的具体实现步骤。
五、    阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。    (每空2分,共20
分)    _    _
1.定义一个 名称为Circle的类。产生一个Circle类一个半径为10.5的对象,并输出该对象的名称、半径面积等 信息。
class Circle
{
protected float _r;〃 圆的半径
public float R
{
get { retur n _r; }
set { _r = value; }
} _
public con st double PI= 3.1415;/定一个双精度常量表示圆周率
public     ;〃定一个只读字段id,该字段数据类型为整型、初始值为    0
public static stri ng _name = "Circle";// 定一个字符串的名称
public Circle(float r)//创建一个有参构造函数
{
id = 1;
_r = r;
}
public float Area()〃计算圆的面积
{
return Co nvert.ToSi ngle(_r * _r * PI);
} _
}
class Program
{
static void Main( stri ng[] args)
{
Circle c =        ;//创建一个半径为10.5Circle实例
Console.WriteLine(”_name{0}id {1},半径 r {2},面积是⑶",③    ,④    ,,c.Area());
}
}
2.阅读程序,按照要求在空白处填写正确的表达式。
using System;
n amespace P5_5
{ _
public     //声明一个类,该类名称为 Vehicle
{
private float speed;
public float Speed
{
get { retur n speed; }
set { speed = value; }
}
public Vehicle(float speed)
{
//将形参speed复制给当前类的speed字段
writeline方法属于类}
public 〃声明一个虚方法,该方法原型为 float Run (float dista nee)
{
retur n dista nee / speed;
}
public abstract void Speak();
}
public class Truck : Vehicle
private float weight;
public float Weight
{
get { retur n weight; }
}
private float load;
public float Load
{
get { retur n load; }
}
public Truck(i nt weight, i nt load)
:base(50)
{
this.weight = weight; this .load = load;
}
public new float Run( float dista nee) //重载
{
return (1 + load / Weight / 2) * base.Ru n(dista nee);
}
public override void Speak() //重载
{
Con sole.WriteL in e("叭…叭...");
}
}
class Program
{
static void Mai n()
{
Vehicle v1 = new Trai n();
v1.Speak();
Console.WriteLine("行驶 1000 公里需{0}小时",v1 .Run(1000));
v1 = new Truck(16, 24);
v1.Speak();
Console.WriteLine("行驶 1000 公里需{0}小时",v1 .Run(1000));
Con sole.ReadLi ne();
}
}
}
程序的执行结果后,语句程序的输出为:
   
行驶1000千米需6.25小时
叭…叭…
   
六、下面程序总共5处错误,请出其中的错误(包括警告信息),并改正之。(每处错误2分,共 垃分)
1.程序代码如下:
using System;
n amespace P10_4
{ _
class Program
{
static void Mai n()
{
Seapla ne pla ne = new Seapla ne();
Console.WriteLine("{0}空中飞行 1000 公里需{1}小时", plane, plane.Run(1000)); //调用 IFlyable 接 口 Run方法
Con sole.ReadL in e();
}
}
public in terface IFIyable
{
public float Run( float dista nee);
}
public in terface ISwimmable
{
float Run( float dista nee);
}
public class Seapla ne : IFlyable, ISwimmable
{
public float ISwimmable.Run(float distanee) //显式实现 Swimmable Run 方法
{
retur n dista nee / 50;
}
float IFlyable.Run(float distance)// 显式实现 IFlyable Run 方法
{
return dista nce / 400.0;
}
}
public class Automobile
{
private float Speed{get;set;}
public virtual float Run( float dista nce)
{
retur n dista nce / Speed;
}
public Automobile(float speed)
{
Speed = speed;
}
}
public class Amphicar : Automobile, ISwimmable
{
public Amphicar(float speed)
:base(speed)
{ }
override float Run( float dista nce)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。