首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 认证考试-> 全国等级考试
c#网络应用编程基础练习题与答案(四)_全国等级考试
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 

 1. 与结构化编程方法相比,面向对象编程有哪些优点?

  【解答】

  (1) 以过程为中心和对象为中心的比较

  结构化编程方法是以过程为中心的,当面对一个问题时,该方法侧重于问题解决过程的层次结构。面向对象的分析和设计方法侧重于对象。对象具有特定的行为和属性,行为和属性决定了对象与其他对象的交互作用方式,以及对象本身的行为方式。

  (2) 公开数据和隐藏数据的比较

  结构化编程方法对数据和过程仅仅进行简单的包装,这些数据和过程是公开的,或者说程序中的其他代码可以访问这些数据和过程。面向对象的实现隐藏了特定的数据,并且只把对象的特定行为公开给用户。实现这些特定行为的代码对用户来说是不可见的,用户只能访问这些公开的行为。

  (3) 单一单元和标准单元的比较

  结构化编程方法是基于单一代码单元的。面向对象的编程方法允许对象是独立的。

  (4) 一次性使用和可重用的比较

  根据不同的实现,结构化过程可能无法重用。而面向对象的方法,对象是一个模块单元。具有完备的实体,因此可以具有高度的可重用性。

  (5) 有序算法和无序算法的比较

  结构化编程方法所开发的程序,其结构往往是线性的(或者说是自顶向下的)。而面向对象的应用程序是一种基于消息或者事件驱动的程序类型。每个对象都可以向其他对象发送消息。Windows操作系统就是这样的程序。

  2. 简要回答下列问题。

  1) 举例说明new关键字可用于那些方面?

  2) sealed关键字的作用是什么?什么情况下需要使用sealed关键字?

  3) 哪些关键字可以用于版本控制?

  【解答】

  1) 在C#中,new关键字可用作运算符或修饰符。作为运算符用于在堆上创建对象和调用构造函数。作为修饰符用于隐藏基类成员的继承成员。

  2) 在类声明中使用sealed修饰符可防止其它类继承此类。在方法声明中使用sealed修饰符可防止扩充类重写此方法。

  sealed修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。

  3) override关键字和new关键字均可用于版本控制。

  在C#中,默认情况下方法不是虚拟的。若要使方法成为虚拟方法,必须在基类的方法声明中使用virtual修饰符。然后,派生类可以使用override关键字重写基类中的虚拟方法,或使用new关键字隐藏基类中的虚拟方法。如果override关键字和new关键字均未指定,编译器将发出警告,并且派生类中的方法将隐藏基类中的方法。

  3. 简要回答抽象类和接口的主要区别。

  【解答】

  抽象类和接口的一个主要差别是:类可以实现多个接口,但仅能从一个抽象类或任何其它类型的类继承。

  4. 使用委托的优点是什么?委托和事件有什么区别和联系?

  【解答】

  C#中的委托类似于C或C++中的函数指针。使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。与C或C++中的函数指针不同,委托是面向对象,而且是类型安全的。

  C#中的“事件”是当对象发生某些事情时,类向该类的客户提供通知的一种方法。事件最常见的用途是用于图形用户界面;通常,表示界面中的控件的类具有一些事件,当用户对控件进行某些操作(如单击某个按钮)时,将通知这些事件。

  使用委托来声明事件。委托对象封装一个方法,以便可以匿名调用该方法。事件是类允许客户为其提供方法(事件发生时应调用这些方法)的委托的一种方法。事件发生时,将调用其客户提供给它的委托。
  5. 编写一个控制台应用程序,完成下列功能,并回答提出的问题。

  1) 创建一个类A,在构造函数中输出“A”,再创建一个类B,在构造函数中输出“B”。

  2) 从A继承一个名为C的新类,并在C内创建一个成员B。不要为C创建构造函数。

  3) 在Main方法中创建类C的一个对象,写出运行程序后输出的结果。

  4) 如果在C中也创建一个构造函数输出“C”,整个程序运行的结果又是什么?

  【解答】

以下是引用片段:
  using System;
  public class A
  {
  public A()
  {
  Console.WriteLine("A");
  }
  }
  public class B
  {
  public B()
  {
  Console.WriteLine("B");
  }
  }
  public class C : A
  {
  B newb = new B();
  }
  class MainClass
  {
  public static void Main()
  {
  C newc = new C();
  Console.ReadLine();
  }
  }


  输出结果:

  B

  A

  如果在C中也创建一个构造函数输出“C”,即添加:

以下是引用片段:
  public C()
  {
  Console.WriteLine("C");
  }


  则整个程序运行的结果为:

  B

  A

  C

  6. 编写一个控制台应用程序,完成下列功能,并写出运行程序后输出的结果。

  1) 创建一个类A,在A中编写一个可以被重写的带int类型参数的方法MyMethod,

  并在该方法中输出传递的整型值加10后的结果。

  2) 再创建一个类B,使其继承自类A,然后重写A中的MyMethod方法,将A中接

  收的整型值加50,并输出结果。

  3) 在Main方法中分别创建类A和类B的对象,并分别调用MyMethod方法。

  【解答】

以下是引用片段:
  using System;
  public class A
  {
  public virtual void MyMethod(int num)
  {
  num += 10;
  Console.WriteLine(num);
  }
  }
  public class B : A
  {
  public override void MyMethod(int num)
  {
  num += 50;
  Console.WriteLine(num);
  }
  }
  class MainClass
  {
  public static void Main()
  {
  A newa = new A();
  newa.MyMethod(2);
  B newb = new B();
  newb.MyMethod(2);
  Console.ReadLine();
  }
  }


  输出结果:

  12

  52

  7. 假设Node类的每一个节点包括有两个字段:m_data(引用节点的数据)和m_next(引用链接列表中的下一项)。这两个字段都是由构造函数方法设置的。该类有两个功能,第一个功能是通过名为Data和Next的只读属性访问m_data和m_next字段。第二个功能是对System.Object的ToString虚拟方法进行重写。试分别用类和泛型两种方法编写程序实现上述功能。

  【解答】

以下是引用片段:
  using System;
  class Node
  {
  Object m_data;
  Node m_next;
  public Node(Object data, Node next)
  {
  m_data = data;
  m_next = next;
  }
  // 访问结点数据
  public Object Data
  {
  get { return m_data; }
  }
  // 访问下一个结点
  public Node Next
  {
  get { return m_next; }
  }
  // 获取结点数据描述
  public override String ToString()
  {
  return m_data.ToString();
  }
  }
  // 链表结点类的泛型定义
  class Node
  {
  T m_data;
  Node m_next;
  public Node(T data, Node next)
  {
  m_data = data;
  m_next = next;
  }
  // 访问结点数据
  public T Data
  {
  get { return m_data; }
  set { m_data = value; }
  }
  // 访问下一个结点
  public Node Next
  {
  get { return m_next; }
  set { m_next = value; }
  }
  // 获取结点数据描述
  public override String ToString()
  {
  return m_data.ToString();
  }
  }
  // 使用结点类型或泛型结点类型
  class LinkedList
  {
  static void Main(string[] args)
  {
  //// 创建整数链表
  //Node head = new Node(5, null);
  //head = new Node(10, head);
  //head = new Node(15, head);
  ////遍历链表求整数和
  //Int32 sum = 0;
  //for (Node current = head; current != null;
  // current = current.Next)
  //{
  // sum += (Int32)current.Data;
  //}
  //// 输出结果
  //Console.WriteLine("Sum of nodes = {0}", sum);
  // 用泛型创建整数链表
  Node head = new Node(5, null);
  head = new Node(10, head);
  head = new Node(15, head);
  // 遍历求和
  Int32 sum = 0;
  for (Node current = head; current != null;
  current = current.Next)
  {
  sum += current.Data;
  }
  // 输出
  Console.WriteLine("Sum of nodes = {0}", sum.ToString());
  }
  }

 


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·VisualC#中MDI窗体初步-.NET教程,C#语言
·2004年全国计算机等级考试二级vb全真上机试题解析
·全国计算机等级考试一级ms office考试(样题)
·java生成JPEG 图像文件-JSP教程,Java技巧及代码
·全国计算机等级考试二级access考试大纲
·全国计算机等级考试一级b考试大纲
·大文件上传研究-ASP教程,ASP应用
·全国计算机等级考试二级c语言考试大纲
·C#字符串的使用笔记-.NET教程,C#语言
·c#实现类似于SqlServer视图设计器的可浮动窗体-.NET教程,C#语言
最新文章
·利用c#远程存取access数据库_c#应用
·dreamweaver简单描述制作网页的基本步骤_dreamweaver教程
·fireworks制作波普网点画面特效_fireworks教程
·如何提高垃圾站点gg ad广告单元点击价格_网赚技巧
·谈百度联盟和google adsense广告的均衡优化_网赚技巧
·google adsense 广告功略之三定理_网赚技巧
·为什么网站要先做小众_站长心得
·针对地方门户网站运营推广的经验分析_站长心得
·如何做网站的搜索引擎优化?_站长心得
·如何正规的快速建立赚钱的网站_google推广
相关主题
  • c#网络应用编程基础练习题与答案(十)_全国等级考试
  • c#网络应用编程基础练习题与答案(九)_全国等级考试
  • c#网络应用编程基础练习题与答案(八)_全国等级考试
  • c#网络应用编程基础练习题与答案(七)_全国等级考试
  • c#网络应用编程基础练习题与答案(六)_全国等级考试
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭