面向对象程序设计题库 - (2013)(7)

2019-03-01 09:38

///

/// 抽象类书 /// public class Book {

///

/// 书名

///

public string bookName; ///

/// 虚方法,获取书名 ///

public virtual string GetBookName() {

return \这本书名是:\ } }

///

/// 书的派生类 ///

public class NetBook : Book {

///

/// 重写虚方法override ///

public override string GetBookName() {

return bookName; } }

调用:

protected void Page_Load(object sender, EventArgs e) {

if (!IsPostBack) {

NetBook myNetBook = new NetBook();

myNetBook.bookName = \开发案例
\ Response.Write(myNetBook.GetBookName());

Book myBook = new NetBook();

myBook.bookName = \基础开发
\ Response.Write(myBook.GetBookName());

Book myBaseBook = new Book();

myBaseBook.bookName = \基础开发
\ Response.Write(myBaseBook.GetBookName()); }

}

答案:asp.net开发案例

asp.net基础开发

这本书名是:asp.net基础开发

31、 阅读下面的代码,写出运行结果。(难易度:很难;知识点:继承)(abstract class Person {

public abstract void Speak(); }

class Animal {

public virtual void EatFood() {

Console.WriteLine(\ } }

class Man : Person {

public override void Speak() {

Console.WriteLine(\ } }

class Dog : Animal { }

class Cat : Animal {

public override void EatFood() {

Console.WriteLine(\ } }

static void Main(string[] args)

{

Man man = new Man(); man.Speak();

Dog dog = new Dog(); dog.EatFood();

15分)

Cat cat = new Cat(); cat.EatFood();

Console.ReadLine(); }

答案:The man is speaking! The animal is eating!

The cat is eating!

32、 (难易度:很难;知识点:继承)(20分)简易学生信息管理(用抽象类实现多态) 编写一个应用程序,利用方法的重写和多态性进行学生信息的简单管理,输出类似如下格式的学生信息:(高职学生输出总成绩;成教学生输出总学分)。

王静:高职类2年级学生,总成绩:248 刘丽:成教类1年级学生,总学分:26

说明:(1) 定义一个抽象类Students,在其中添加6个属性,分别对应于学生类别、姓名、进校年数、基础课成绩、专业课成绩、实训课成绩; 1个方法,计算总成绩;1个抽象方法,用于显示学生信息。

(2) 定义1个派生类StudentA,继承自抽象类,用于实现“高职”类学生信息的处理,在其中实现基类的抽象方法。

(3) 定义1个派生类StudentB,继承自抽象类,用于实现“成教”类学生信息的处理,在其中实现基类的抽象方法,并添加计算总学分的方法。

(4) 总成绩 = 基础课+专业课+实训课 总学分 = 总成绩 / 10

总学分为整数

接口、委托(共10题,占7%)

1. (难易度:简单;知识点:接口)(10分)创建接口ICalculator,声明求两个整数的

差的方法diff();创建类Calculator类,实现接口ICalculator;在应用程序中创建一个Calculator类对象,调用diff ()方法,输出两个数的差。

2. (难易度:很难;知识点:接口)(15分)定义一个接口IEmployee,包含计算基础工

资的成员方法baseSalary();添加一个管理员实现类Manager和生产员工实现类Producter。要求用反射机制,在程序中动态创建管理员或生产员工的实例,输出其基本工资。

3. (难易度:较难;知识点:接口)(15分)编写接口IAddition,定义add方法,返回

string,参数是两个int类型,编写此接口的两种实现,一种是将参数相加后输出,一种是相连后输出。

4. (难易度:较难;知识点:接口)(15分)定义一个接口IPass,有checkPass方法,

返回布尔值,参数name、pass。定类AdminPass实现接口,要求只要用户名是“admin”,密码是123就返回true,否则返回false

5. (难易度:很难;知识点:接口)(20分)简易电灯管理系统(用接口实现多态)

某学院有很多房屋,每间屋都有照明灯,校园内还有很多路灯,但不管是哪里的灯,对其都有开、关两种操作。学院拟采用自动化控制灯的开关,正常情况下

教室里的灯:一旦有人就开,否则就关;

校园里的路灯:早上6点以后就关,晚上8点以后就开。

现创建一个应用程序,模拟实现上述检测功能。

要求:

(1)创建一个接口ILamp,包含有方法Open() 、Close()

(2)创建一个类ClassRoom,管理教室里的灯,按学院要求实现接口的两个方法 (3)创建一个类SchoolGarden,管理校园里的路灯,按学院要求实现接口的两个方法

6. (难易度:较难;知识点:接口)(10分)接口和类有什么区别?

答:接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念! 而类是负责功能的具体实现!

在类中也有抽象类的定义,抽象类与接口的区别在于:

抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。

但接口是一个行为的规范,里面的所有东西都是抽象的! 一个类只可以继承一个基类也就是父类,但可以实现多个接口。

7. (难易度:简单;知识点:接口)(10分)描述接口的作用。

充当类的功能界面,接口里的成员属于抽象描述,必须通过类的实现才能使用。如:某个项目有多个模块组成,每个模块由一个开发者完成,开发者只需编写完模块功能实现后,留下的接口供其他人使用。其他人在程序中,使用接口时,只需知道接口的功能,不了解如何实现。

当功能模块无法满足需要或功能模块的需求变更时,程序员只需将该功能模块的实现代码进行修改和扩充,而其他调用接口的程序无须改动。接口的这种应用模式成为brige模式(即意图和实现分离)

接口反映了面向对象的多态特征,即通过相同方法得到不同实现。接口也反映了面向对象的封装特征,使用者可以不清楚接口成员的实现细节。

注意:因为接口成员默认的访问权限是public,所以在实现接口时,类的成员必须为public,且方法名和参数必须一致。

8. (难易度:简单;知识点:接口)(10分)Abstract、 class和interface有什么区

别?

相同点:

都不能被直接实例化,都可以通过继承实现其抽象方法。 都是面向抽象编程的技术基础,实现了诸多的设计模式。 不同点:

接口支持多继承;抽象类不能实现多继承。

接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。 接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。 接口可以用于支持回调(CallBack);抽象类不能实现回调,因为继承不支持。 接口只包含方法(Method)、属性(Property)、索引器(Index)、事件(Event)的签名,但不能定义字段和包含实现的方法;

抽象类可以定义字段、属性、包含有实现的方法。

接口可以作用于值类型(Struct)和引用类型(Class);抽象类只能作用于引用类型。例如,Struct就可以继承接口,而不能继承类。

9. (难易度:较难;知识点:接口)(10分)在项目中为什么使用接口?接口的好处是

什么?什么是面向接口开发?

接口只是一种约束。使用 interface 去定义某些特定的功能,为的是不要将代码写死在自定义类里,以便在系统开发、事后维护、功能扩充 上更有扩展性。

接口用于描述一组类的公共方法/公共属性. 它不实现任何的方法或属性,只是告诉继承它的类至少要实现哪些功能,继承它的类可以增加自己的方法. 使用接口可以使继承它的类: 命名统一/规范,易于维护。提供永远的接口。 当类增加时,现有接口方法能够满足继承类中的大多数方法,没必要重新给新类设计一组方法,也节省了代码,提高了开发效率。 面向接口开发的好处有结构清晰,类间通信简单易懂,扩展性好,提高复用性等等。 面向接口开发就是指面向抽象协议编程,实现者在实现时要严格按协议来办。

10. (难易度:很难;知识点:委托)(15分)下列代码的运行结果是什么。

using System;

public delegate void BuyTicketDelegate(string num); public class Student {

public event BuyTicketDelegate blEvent; public Student(string num) {

blEvent += new BuyTicketDelegate(this.BuyTicket); }

public void ShowNum(string num) {

blEvent(num); }

private void BuyTicket(string num) {

Console.WriteLine(\我要买\次车票\ }

static void Main() {

Console.WriteLine(\创建学生对象\ Student stu = new Student(\ Console.WriteLine(\创建完毕\ stu.ShowNum(\ } }

答案: 创建学生对象 创建完毕

[完成]字符串(共3题,占2%)

1. (难易度:较难;知识点:字符串)(10分)请问: String类与StringBuilder类有

什么区别?为什么在.Net类库中要同时存在这2个类?

在进行累加操作时,StringBuilder利用Append方法实现,拥有比string快很多的优势,累加次数越多,优势越明显。对于string类型系统先是把两个字符串写入内存,接


面向对象程序设计题库 - (2013)(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:外教史习题第14、15、16、17章

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: