2022年CS高级编程[收 .pdf
《2022年CS高级编程[收 .pdf》由会员分享,可在线阅读,更多相关《2022年CS高级编程[收 .pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、8、C#高级编程目标单一继承抽象类和抽象方法使用委托和事件实现模拟闹铃。飞机和客机类的多态程序第一部分指导练习 1:单一继承问题现实生活中,哺乳动物是动物界中一个分支;可以动物普遍具有的特征都可以在哺乳动物身上找到;但哺乳动物也有自己独特的习性。因此可以将动物看成是哺乳动物的父亲。编程实现上可以通过哺乳动物类继承一般动物类,从而获得一般动物的特征。指导教师讲解问题说明用 C#编写一个程序, 使用 Animal 和 Mammal 两个类来说明一般动物和哺乳动物的继承关系。Animal 具有名称、所属门类等属性,需要提供方法实现以接收和显示这些属性的值。 Mammal类具有代表哺乳动物习性的属性,
2、这些属性表明哺乳动物与其他类型动物的区别。同样地,需要提供方法实现以接收和显示这些属性的值。分析 Animal类是一个基类, 它包含 _name 、 _type 两个成员以及用于接收和显示信息的三个方法。名为 Mammal的派生类包含 _temperature 、_isViviparous两个成员和用于接收和显示信息的两个方法。为了检验创建的Animal 和 Mammal 类,应实例化一个Mammal 类对象, 并调用基类和派生类的方法来存储和检索值。推荐步骤:(1)新建一个名为“SingleInher”的基于控制台应用程序的项目。(2)将以下代码添加到“Program.cs ”中。using
3、 System; using System.Collections.Generic; using System.Text; namespace SingleInher /一般动物类 class Animal protected string _name; /动物名称 protected string _type; /动物所属门类 /接收名称和门类名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 12 页 - - - - - - - - - public void Accep
4、tDetails() Console.WriteLine(请输入动物名称:); this._name = Console.ReadLine(); Console.WriteLine(请输入所属门类:); this._type = Console.ReadLine(); /显示动物的名称和所属门类 public void DisplayDetails() Console.WriteLine(); Console.WriteLine(0 动物的详细信息如下:, this._name); Console.WriteLine(姓名: 0, this._name); Console.WriteLine(
5、门类: 0, this._type); /哺乳动物类,继承一般动物类 class Mammal : Animal private double _temperature; /恒定温度值 private string _isViviparous; /是否为胎生 /接收哺乳动物的特征信息 public void AcceptCharacter() Console.WriteLine(请输入哺乳动物的恒定温度:); try _temperature = Convert.ToDouble(Console.ReadLine(); catch /捕捉异常,例如:若输入字母,在转换成Decimal 时会引发
6、异常 Console.WriteLine(请为温度输入数字!); Console.WriteLine(该哺乳动物是否胎生:); _isViviparous = Console.ReadLine(); /显示哺乳动物的特征信息 public void DisplayCharacter() Console.WriteLine(); Console.WriteLine(0 的特征包括: , this._name); Console.WriteLine(恒定温度: 0, _temperature.ToString(); Console.WriteLine(是否胎生: 0, _isViviparous)
7、; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 12 页 - - - - - - - - - class Program static void Main(string args) Mammal objM = new Mammal(); objM.AcceptDetails();/访问父类方法 objM.AcceptCharacter(); objM.DisplayDetails();/访问父类方法 objM.DisplayCharacter(); (3)生成项目。(
8、4)选择“调试”“开始执行(不调试)”选项来执行此应用程序,输出结果如图1.1 所示。图 1.1 练习 1 的输出结果练习 2:使用抽象类和抽象方法计算不同形状的面积问题编写一个程序,使用抽象类和抽象方法来计算不同形状的面积。指导教师讲解问题说明先定义一个抽象类,该抽象类有一名为计算面积的方法为抽象方法。指导教师分析解题思路名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 12 页 - - - - - - - - - 定义好抽象类和抽象方法后,具体的类继承该抽象类,实现抽象
9、方法。该问题中定义两个具体形状类:矩形和圆。解决方案:(1)创建一个基于控制台的项目“AbstractClass”。(2)建立一个抽象类,命名为“Figure ”, 定义变量和抽象方法Area() 。(3)定义两个具体类Square 和 Circle继承自 Figure 类,在各自类中分别实现Area() 方法。(4)创建一个测试类,分别调用Square 和 Circle类。(5)添加以下完整的代码using System; abstract class Figure/抽象类定义,表示一个抽象图形 protected double x = 0, y = 0; public Figure(dou
10、ble a, double b) x = a; y = b; public abstract void Area(); /抽象方法,无实现代码,抽象图形无法计算面积 class Square : Figure /类 Square 定义,矩形类 public Square(double a, double b) : base(a, b) public override void Area() /不能使用 new ,必须用override Console.WriteLine(矩形面积是: 0, x * y); /显示矩形面积 class Circle : Figure /类 Circle定义,圆类
11、 public Circle(double a) : base(a, a) public override void Area() Console.WriteLine(圆面积是: 0, 3.14 * x * y); /显示圆的面积 class Class1 static void Main(string args) Square s = new Square(20, 30); Circle c = new Circle(10); s.Area(); c.Area(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理
12、 - - - - - - - 第 4 页,共 12 页 - - - - - - - - - (6)选择“生成”“生成解决方案”选项,以生成此项目。(7)选择“调试”“开始执行(不调试)”选项来执行此应用程序。此程序的输出结果如图2.1 所示。图 2.1 程序输出结果指导教师检查学生进度练习 3:使用委托和事件实现模拟闹铃问题编写一个模拟闹铃的程序,具有闹铃,继续闹铃,打会盹儿,停止闹铃的功能。指导教师讲解问题说明编写一个程序用来模拟闹钟闹起床流程,有一个闹钟类AlarmClock ,催促起床类WakeMeUp ,使用类AlarmDriver。调用类引发开始闹铃事件,闹钟类调用委托方法进行处理,
13、催促起床类和用户进行交互。指导教师分析解题思路在此问题中, 可以设计考试类来控制流程。闹钟类应该有一个可以引发开始闹铃的方法由使用类调用。这是一种常用的类设计方式,就是建立一些实体类,这些实体类由控制流程的类来进行关联。解决方案:(1)创建一个基于控制台的项目“EventSample”。(2)建立一个类,命名为“AlarmEventArgs ”, 定义事件参数类。(3)声明自定义代理类型,它的事件参数的类型为AlarmEventArgs 。(4)创建包含事件和触发事件方法的类:AlarmClock 。(5)创建包含事件处理方法的类:WakeMeUp。(6)创建包含程序入口方法的类:AlarmD
14、river 。(7)添加以下完整的代码using System; using System.Collections.Generic; using System.Text; namespace EventSample / / 定义事件参数类 / 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 12 页 - - - - - - - - - public class AlarmEventArgs : EventArgs private readonly bool snoozeP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年CS高级编程收 2022 CS 高级 编程
限制150内