学院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类的一个静态成员。如果要访问 Student的read ()成员,
则下列()表达式是正确的。
A)st.read() B)st::read() C)ad() D)Student::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.5的Circle实例
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小时内删除。
发表评论