《先进软件开发技术与工具》试题

2021-06-12 试题

  1. 介绍创建.NET程序的基本步骤。(4分)

  答:打开Visual Stdio 2008 文件菜单 新建 项目 选择语言和项目类型 编写代码 编译 运行。

  2. C#语言的特点?(5分)

  ●简洁的语法

  ●精心地面向对象设计

  ●与Web的紧密结合

  ●完整的安全性与错误处理

  ●版本处理技术

  ●灵活性与兼容性

  3. C#中参数传递有哪些方式?各有什么特点?(6分) 答:有传值和传引用方式。

  传值方式,是指将实际参数的值复制一份,存入形式参数中。在方法中对形式参数值的改变不会影响到实际参数。

  传引用方式,是指将实际参数的地址复制一份,存入形式参数中,在方法中通过地址可以改变实际参数的值。

  4. e is T在什么时候返回true?e as T在什么时候返回非null?(6分) 答:e is T在对象e的类型为T时返回true。

  e as T在对象e兼容于T类型时,返回非null。

  5. 给出C#语言效率低于C/C++语言的3个原因。(6分) 答:(不确定)

  C#有高级内存管理机制,方便了开发,但降低了代码效率;

  C#代码是托管运行的,效率较低;

  C#不能直接进行内存管理,效率低。

  6. 解释以下基本概念。(14分)

  (1)托管代码 (2)抽象类 (3)接口 (4)引用类型

  (5)异常 (6)属性 (7)值类型

  答:

  (1)托管代码——由公共语言运行库环境(而不是直接由操作系统)执行的代码。

  (2)抽象类——至少包含一个抽象方法的类,该类不能被实例化。

  (3)接口——只包含方法、属性、索引器、事件,均为public权限,而且方法只有定义没有方法体。

  (4)引用类型——直接存储变量值的引用,该类型的变量作参数,传递的是值所在的地址。

  (5)异常——程序执行时遇到的任何错误情况或意外行为

  (6)属性——属性是这样的成员:它提供灵活的机制来读取、编写或计算某个私有字段的值。

  (7)值类型——直接存储变量的值,该类型的变量作参数,传递的是变量的副本。

  7. 虚方法、抽象方法、静态方法、接口中的方法和密封方法有何区别?(10分)

  答:虚方法:用virtual修饰,告诉编译器这个方法可以在派生类中被改写。

  抽象方法:用abstract修饰,没有方法体,它所在的类是抽象类。抽象方法必须由其所在类的派生类重写,除非该派生类也是抽象方法。

  静态方法:用Static修饰,静态方法存储在类空间中,直接由类访问。

  接口中的方法:只有方法的声明,没有方法体,必须由接口的派生类重写。

  密封方法:用seal修饰,表示该方法不能被派生类重写。

  8. 抽象类、密封类和接口有何区别?各在什么情况下使用?(10分) 答:抽象类:至少含有一个抽象方法的类。用于各派生类有同样的行为,但实现代码各不一样的情况,这时可以基类中定义即抽象方法,该基类就是抽象类。

  密封类:表示该类不能被继承。用于不希望该类被继承或修改的情况。

  接口:只包含方法、属性、索引器、事件,均为public权限,而且方法只有定义没有方法体。用于向外界声明所具有的'行为,用于实现多重继承。

  9. 下列程序片断有何错误?(12分)

  (1)

  class BaseClass

  { public virtual void f1() { }

  } class DerivedClass : BaseClass { } public void f1() { }

  答:DerivedClass中f1应改为public override void f1(){},加上override。

  (2)

  class BaseClass

  class DerivedClass : BaseClass { } public void f1() { } } { public sealed void f1() { } 答:DerivedClass中f1()不能被重写。

  (3)

  abstract class BaseClass

  class DerivedClass : BaseClass { } public void f2() { } } { public abstract void f1() { }

  答:BaseClass中f1应为public abstract void f1();,没有方法体;

  DerivedClass中应添加public void f1(){……},实现抽象方法。

  10. 写出下列程序的输出。(7分)

  class BaseClass

  } new public void f2() { } Console.WriteLine("DerivedClass.f2"); class DerivedClass : BaseClass { public override void f1() { } Console.WriteLine("DerivedClass.f1"); } public void f2() { } Console.WriteLine("BaseClass.f2"); { public virtual void f1() { } Console.WriteLine("BaseClass.f1");

  } b.f1(); b.f2(); BaseClass b = d; static void Main(string[] args) { DerivedClass d = new DerivedClass();

  答:(答案没验证)

  BaseClass.f1

  BaseClass.f2

  11. 编写一个程序,接收用户输入的两个数字(这两个数字不能都大

  于30,否则要求用户重新输入),计算两数的乘积并输出。(8分) 答:

  static void Main(string[] args)

  {

  } Console.Write("请输入小于30的数字:"); y = int.parse(Console.ReadLine()); while(y>30) { } z = x*y; Console.WriteLine("结果是:"+z); Console.Write("请输重新入小于30的数字:"); y = int.parse(Console.ReadLine()); int x=100,y=100,z; Console.Write("请输入小于30的数字:"); x = int.parse(Console.ReadLine()); while(x>30) { } Console.Write("请输重新入小于30的数字:"); x = int.parse(Console.ReadLine());

  12. 马(Horse)、大象(Elephant)、老虎(Tiger)、狮子(Lion)是动物(Animal),动物能够Eat,但是不同的动物有不同的Eat行为。另外,有些动物具有食肉特性(ICarnivore),食肉动物能够捕食(Prey)。定义类和接口用类继承和接口实现来表示以上事物之间的关系。(12分)

  答:

  interface ICarnivore

  {

  } public void Prey(); //食肉特性

【《先进软件开发技术与工具》试题】相关文章:

软件开发技术合同04-27

服务软件开发技术思考论文01-12

信息技术试题03-01

信息技术《多变的刷子工具》教学设计08-09

软件开发技术员的自我评价01-28

软件开发技术经理岗位职责10-07

电工技术试题及答案04-26

电子技术基础试题03-19

信息技术试题及答案03-17