实验报告实验五:事件实验目的:理解事件的含义与处理机制;掌握实现事件的步骤。实验内容:一、1.运行课本例9.7,仔细理解事件的实现步骤。注:此题不必给出程序代码,只需给出运行结果,并写出①实现事件处理的基本步骤;②事件的声明、产生、订阅、取消的语句格式。2.编写程序,实现以下要求:(1)定义PC、Voice、Show三个类,Voice中含有makevoice(发声)方法,Show中有Canshow(显示)方法,其中CanShow为static类型;(2)在PC中定义委托类型Run(运行),定义Run型的事件RunEvent(运行事件),定义方法Run_pc(运行PC)产生事件RunEvent;(3)在主函数中新建Voice类的实例MyVoice和PC类的实例MyPc,并为MyPc的事件RunEvent订阅MyVoice.makevoice动态方法和Show.CanShow静态方法;(4)调用MyPc.Run_pc;请在实验数据记录及分析中写出相应的源程序代码。3.假设有个高档的热水器,我们给它通上电,液晶屏会显示水温;当水温超过95度的时候,扬声器会开始发出语音,告诉你水的温度,提示水已经快烧开了。编写一个程序用来模拟该热水器。(1)定义Heater(热水器)、Alarm(警报器)、Display(显示器)三个类;(2)在Heater中定义委托类型BoilHandler(加热处理),定义BoilHandler型的事件BoilEvent(加热事件);此外Heater中还有代表水温的字段temperature,给水加热方法BoilWater(),通过BoilWater方法产生BoilEvent事件;(3)Alarm中含有发出警报的方法MakeAlert,在水温大于95度时会发出警报;(4)Display中有显示水温的ShowMsg方法,用来显示当前水温,其中ShowMsg为static类型;(5)在主函数中新建Heater类的实例heater和Alarm类的实例alarm,并为heater的BoilEvent事件订阅alarm.MakeAlert动态方法和Display.ShowMsg静态方法;最后调用heater的BoilWater方法。运行结果如图所示:实验报告请在实验数据记录及分析中写出相应的源程序代码。实验数据记录及分析(或程序及运行结果)第一题:①基本步骤:1.声明提供事件数据的类2.声明事件处理委托3.声明事件生产类4.在生产类中生命事件5.在生产类中实现产生事件的代码6.声明事件消费类7.在事件消费类中声明事件处理方法8.在消费类中订阅或取消事件。实验报告②格式:事件的声明:[修饰符]event事件委托名事件名;事件的产生:事件名(参数);事件的订阅:对象.事件名+=new事件消费者的方法;事件的取消:对象.事件名-=new事件消费者的方法;第二题:namespaceConsoleApplication1{publicclassVoice{publicvoidmakevoice(){Console.WriteLine(这是方法makevoice);}}publicclassShow{publicstaticvoidCanShow(){Console.WriteLine(这是方法CanShow);}}publicclassPC{publicdelegatevoidRun();publiceventRunRunEvent;publicvoidRun_pc(){RunEvent();}}classProgram{staticvoidMain(string[]args){VoiceMyVoice=newVoice();PCMyPc=newPC();MyPc.RunEvent+=MyVoice.makevoice;MyPc.RunEvent+=Show.CanShow;MyPc.Run_pc();Console.ReadKey();}}}第三题:namespaceConsoleApplication2{publicclassHeater实验报告{privateinttemperature;publicdelegatevoidBoilHandler(intpargam);publiceventBoilHandlerBoilEvent;publicvoidBoilWater(){for(inti=0;i=100;i++){temperature=i;if(temperature81){if(BoilEvent!=null){BoilEvent(temperature);}}}}}publicclassAlarm{publicvoidMakeAlert(intparam){if(param95){Console.WriteLine(Alarm:嘀嘀嘀,水已经{0}度了:,param);}}}publicclassDisplay{publicstaticvoidShowMsg(intparam){Console.WriteLine(Display:当前水的温度:{0}度,param);}}classProgram{staticvoidMain(){Heaterheater=newHeater();Alarmalarm=newAlarm();heater.BoilEvent+=alarm.MakeAlert;heater.BoilEvent+=Display.ShowMsg;heater.BoilWater();Console.ReadKey();}}}实验报告。评语:日期:年月日