文件名称:模拟连锁反应事件(验证型题目)
文件大小:24KB
文件格式:RAR
更新时间:2014-12-04 04:34:09
C# 上机作业 类
(1)创建C# 控制台应用程序L4_4。 (2)新建一个表示太阳的类Sun,在其中定义一个事件OnRise,一个成员方法Rise,并在方法中引发。参考源代码如下 (太阳只有一个,所以将其定义为静态类,静态类中只能定义静态成员) : public static class Sun { public static event EventHandler OnRise; //定义了一个事件成员OnRise public static void Rise() //引发事件的函数成员 { Console.WriteLine("太阳从东方升起..."); if (OnRise != null) OnRise(null, null); //引发事件OnRise } } (3)在程序中新建一个公鸡类Cock,在其中定义: 私有字段_name; 针对Sun.OnRise事件的处理方法Sun_OnRise; 事件OnSing; 引发事件OnSing的方法Sing。 构造函数,初始化私有字段_name,并将事件处理方法与事件进行关联。 参考源代码如下: public class Cock { private string _name; //私有字段,用于存放Cock实例的名称 public Cock(string name) //构造函数,初始化字段,并将事件关联至处理方法 { _name = name; Sun.OnRise += new EventHandler(Sun_OnRise); } //定义Sun.OnRise事件的处理方法 private void Sun_OnRise(object sender, EventArgs e) { Console.WriteLine("公鸡{0}:", _name); Console.WriteLine("雄鸡一声天下白!"); this.Sing(); //调用Sing方法以引发自身的事件OnSing } public event EventHandler OnSing; //Cock类的事件成员 public void Sing() //引发OnSing事件的方法 { Console.WriteLine("喔喔喔..."); if (OnSing != null) OnSing(this, null); } } (4)在程序中新建一个主人类Host,在其中同样定义: 私有字段_name; 起床事件OnGetup; 起床方法Getup(引发起床事件的成员); 养鸡方法Foster,在该方法中将事件OnSing与事件处理方法c1_OnSing相关联; Cock.OnSing事件的处理方法c1_OnSing。 参考源代码如下:(c1_OnSing方法中调用Getup方法,表示公鸡打鸣会使主人起床) public class Host { private string _name; public Host(string name) { _name = name; } public event EventHandler OnGetup; //Host类的事件成员 public void Getup() { Console.WriteLine("日出而作..."); if (OnGetup != null) OnGetup(this, null); } public void Foster(Cock c1) { c1.OnSing += new EventHandler(c1_OnSing); } private void c1_OnSing(object sender, EventArgs e) { Console.WriteLine("主人{0}:", _name); Console.WriteLine("闻鸡起舞!"); this.Getup(); } } (5)新建狗类Dog和猫类Cat,在其中定义: 私有字段_owner,记录器主人对象; owner_OnGetup方法,处理Host.OnGetup事件(主人起床时,狗和猫的动作); 公有属性Owner封装字段_owner,并在其set访问函数中关联事件和事件处理方法; 参考源代码如下: public class Dog { private string _name; private Host _owner; public Host Owner { get { return this.owner; } set { this._owner = value; this._owner.OnGetup += new EventHandler(owner_OnGetup); } } public Dog(string name) { _name = name; } private void owner_OnGetup(object sender, EventArgs e) { Console.WriteLine("{0}:", _name); Console.WriteLine("汪汪...主人起床了,我也该起了"); } } public class Cat { private string _name; private Host _owner; public Host Owner { get { return this._owner; } set { this._owner = value; this._owner.OnGetup += new EventHandler(owner_OnGetup); } } public Cat(string name) { _name = name; } private void owner_OnGetup(object sender, EventArgs e) { Console.WriteLine("{0}:", _name); Console.WriteLine("喵喵...主人起床了,我也该起了"); } } (6)在程序主方法中依次建立鸡、主人、狗、猫对象,而后调用Sun.OnRise方法,参考源代码如下: class L4_4 { static void Main() { Cock cock1 = new Cock("花花"); Host host1 = new Host("小明"); host1.Foster(cock1); Dog dog1 = new Dog("阿黄"); dog1.Owner = host1; Cat cat1 = new Cat("咪咪"); cat1.Owner = host1; Sun.Rise(); } }
【文件预览】:
L4_4
----L4_4.suo(13KB)
----L4_4.sln(902B)
----L4_4()
--------bin()
--------L4_4.csproj(2KB)
--------Program.cs(4KB)
--------obj()
--------Properties()