




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實驗4面向?qū)ο蟮母呒壘幊? .實驗?zāi)康睦斫饫^承的概念;掌握繼承的使用;掌握接口的使用;掌握方法的重寫;理解并實現(xiàn)委托,掌握事件的定義與觸發(fā)。2 .實驗要求(1)掌握C#中的繼承的使用。(2)掌握C#中的接口的使用和方法重寫。(3)掌握委托與事件的聲明與使用。3 .實驗內(nèi)容閱讀下面的程序,分析程序,寫出它的運行結(jié)果。注意C#程序中多態(tài)的實現(xiàn)。class A(public void F()(Console.WriteLine("A.F");)public virtual void G()(Console.WriteLine("A.G");)class B :
2、 A( new public void F() (Console.WriteLine("B.F");)public override void G()(Console.WriteLine("B.G");) )class Test(static void Main(string args) (B b = new B();A a = b;a.F();b.F();a.G();b.G();Console.WriteLine("按任意鍵繼續(xù) ");Console.ReadKey(); ) )4.編程實踐(1)哺乳動物和一般動物(控制臺應(yīng)用程序)
3、現(xiàn)實生活中,哺乳動物是動物界中一個分支;可以動物普遍具有的特征都可以在哺乳動物身上找到;但哺乳動物也有自己獨特的習(xí)性。因此可以將動物看成是哺乳動物的父親。編程實現(xiàn)上可以通過哺乳動物類繼承一般動物類,從而獲得一般動物的特征。用C#編寫一個程序,使用 Animal和Mammal兩個類來說明一般動物和哺乳動物的繼 承關(guān)系。請按下面的要求定義兩個類:1) Animal類包括_name (動物名稱)、_type (動物所屬門類)兩個成員以及用于接 收信息(名稱和門類)的方法 AcceptDetails和顯示信息的方法 DisplayDetails。2) 派生類 Mammal包含_temperature
4、(體溫)、_isViviparous (是否胎生)兩個成員和 用于接收信息的方法 AcceptCharacter和顯示信息的方法DisplayCharacter。包含主方法的類如下:class Programstatic void Main(string args) Mammal objM = new Mammal();objM.AcceptDetails(); 訪問父類方法objM.AcceptCharacter();objM.DisplayDetails(); 訪問父類方法objM.DisplayCharacter();Console.WriteLine("按任意鍵繼續(xù)"
5、;);Console.ReadKey(); ) )3) ) Sportsman的接口的定義和實現(xiàn)(控制臺應(yīng)用程序)體育運動員的種類多種多樣,所有運動員都可以跳躍和跑步,但是不同運動的跳躍和跑步方式是不同的,例如足球運動員跑動可以帶球在腳下跑,而籃球運動員則只能拍一下球跑一步,否則就會被吹犯規(guī),同樣,足球運動員在跳躍中只能用頭頂球,但是籃球運動員可以用手去搶球。請編寫一個名為 Sportsman的接口,包括兩個方法:Run()和Jump();再分別編寫籃球運動員BasketballSporter和足球運動員FootballSporter的兩個類,在類中分別實現(xiàn)不同的Run 和Jump方法。其中R
6、un和Jump方法中只需要用 Console.WriteLine("")來描述其中的不 同即可。包含主方法的類如下:class Program ( static void Main(string args) (Sportsman man; 定義接 口變量接口變量可以引用實現(xiàn)該接口的對象 接口變量只能調(diào)用接口中定義的方法 man = new BasketballSporter();man.Run();man.Jump();man = new FootballSporter();man.Run();man.Jump();Console.WriteLine("按任意鍵繼
7、續(xù) ");Console.ReadKey(); (3)使用委托和事件實現(xiàn)模擬鬧鈴(控制臺應(yīng)用程序)要求編寫一個模擬鬧鈴的程序,具有鬧鈴、繼續(xù)鬧鈴、打會盹兒、停止鬧鈴的功能。 【問題說明】編寫一個程序用來模擬鬧鐘讓人起床的過程,在該程序中有如下三個類:鬧鐘類AlarmClock,催促起床類 WakeMeUp ,使用類 AlarmDriver。這些類的主要功能如下:使用 類AlarmDriver引發(fā)開始鬧鈴事件,鬧鐘類 AlarmClock調(diào)用委托方法進(jìn)行事件處理,催促 起床類WakeMeUp和用戶進(jìn)行交互。在此問題中,使用類 AlarmDriver中有主方法,用以控制流程。鬧鐘類 Al
8、armClock應(yīng) 該有一個可以引發(fā)開始鬧鈴的方法由使用類AlarmDriver調(diào)用。【解決方案】1)創(chuàng)建一個基于控制臺的項目“ T4”。2) 建立一個類,命名為"AlarmEventArgs ,定義事件參數(shù)類。3) 聲明自定義代理類型 AlarmEventHandler。4) 創(chuàng)建包含事件和觸發(fā)事件方法的鬧鐘類:AlarmClock。5) 創(chuàng)建包含事件處理方法的催促起床類:WakeMeUp。6) 創(chuàng)建包含程序入口方法的使用類:AlarmDriver。7) 在下方的代碼中,請按照“ /”標(biāo)注的注釋語句中的要求添加代碼。using System;using System.Collect
9、ions.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace T4/*定義事件參數(shù)類*/public class AlarmEventArgs : EventArgs (private readonly bool snoozePressed;請在此處定義私有只讀整型字段nringspublic AlarmEventArgs(bool snoozePressed, int nrings) (請在此處完成兩個私有字段賦值,其值為形參的值public int NumRings (/請在此
10、處完成get訪問器設(shè)計,返回私有字段 nrings的值/請在此處定義只讀屬性SnoozePressed返回私有字段 snoozePressed的值/*下面的屬性返回一個字符串*/public string AlarmText (get(if (snoozePressed)( return ("別打打盹兒,快起床!"); else( return ("起床!");/*聲明自定義代理類型 AlarmEventHandler */public delegate void AlarmEventHandler(object sender, AlarmEventAr
11、gs e);/*定義包含事件和觸發(fā)事件方法的鬧鐘類AlarmClock */public class AlarmClock(private bool snoozePressed = false;private int nrings = 0;private bool stop = false;public bool Stop(請在此處完成get訪問器的設(shè)計,返回 stop的值請在此處完成set訪問器的設(shè)計,設(shè)置stop的值)public bool SnoozePressed(請在此處完成get訪問器的設(shè)計,返回 snoozePressed的值請在此處完成set訪問器的設(shè)計,設(shè)置 snoozePr
12、essed的值)/請在此處聲明公有事件Alarm ,它所使用的代理類型為AlarmEventHandler/*觸發(fā)事件的方法*/protected virtual void OnAlarm(AlarmEventArgs e)(if (Alarm != null)(/請在此處填寫代碼,通過代理調(diào)用事件處理方法)/*在該方法中循環(huán)調(diào)用OnAlarm方法來觸發(fā)事件,直到stop字段的值為true */public void Start()(for (; ; )(nrings+;if (stop) (break;)else if (snoozePressed)(/*程序暫停1秒鐘*/System.Th
13、reading.Thread.Sleep(1000); (/請在此處創(chuàng)建事件參數(shù)對象實例eOnAlarm(e);/*觸發(fā)事件*/) else (/請在此處填寫代碼,讓程序暫停0.3秒/請在此處創(chuàng)建事件參數(shù)對象實例e/請在此處填寫代碼,用以觸發(fā)事件) )/*包含事件處理方法的類WakeMeUp */public class WakeMeUp(/*事件處理方法在該方法中根據(jù)用戶的輸入來通過事件參數(shù)sender設(shè)置事件發(fā)送者屬性*/public void AlarmRang(object sender, AlarmEventArgs e) (Console.Wr讓eLine(e.AlarmText
14、+ "n"); if (!(e.SnoozePressed) (if (e.NumRings % 10 = 0) (Console.WriteLine("繼續(xù)鬧鈴?輸入 Y"); Console.WriteLine("打會盹兒?輸入 N"); Console.WriteLine("停止鬧鈴?輸入 Q"); 請在此處填寫代碼,保存用戶輸入的字符串到input中if (input.Equals("Y") | input.Equals("y") return; else if (i
15、nput.Equals("N") | input.Equals("N") (/請在此處填寫代碼,通過事件參數(shù)sender來訪問觸發(fā)事件的對象/修改SnoozePressed屬性值return;) else (/請在此處填寫代碼,通過事件參數(shù)sender來訪問觸發(fā)事件的對象修改Stop屬性值return;)else(Console.WriteLine("繼續(xù)鬧鈴?輸入 Y");Console.WriteLine("停止鬧鈴?輸入 Q");請在此處填寫代碼,保存用戶輸入的字符串到input中if (input.Equals("Y") | input.Equals("y") return; else (/請在此處填
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦公室健康管理的新選擇基于AI的心血管健康維護(hù)策略探討
- 2025至2030中國食用豬油市場消費趨勢與投資機(jī)會風(fēng)險研究報告
- 財務(wù)未來一年的工作計劃(3篇)
- 客服前臺工作總結(jié)(12篇)
- 以綜合護(hù)理能力為核心的人才培養(yǎng)策略研究
- 區(qū)塊鏈技術(shù)未來媒體傳播的新引擎
- 對腫瘤治療效果評價
- 經(jīng)絡(luò)治療儀原理
- 健康管理中患者隱私的保護(hù)與醫(yī)技協(xié)同研究
- 2025教學(xué)年度工作總結(jié)(20篇)
- ISOTS 22163專題培訓(xùn)考試
- 六年級下冊數(shù)學(xué)課件-第4單元 比例 整理和復(fù)習(xí) 人教版(共21張PPT)
- JJF(魯) 142-2022 稱重式雨量計校準(zhǔn)規(guī)范
- Adobe-Illustrator-(Ai)基礎(chǔ)教程
- 程序的運行結(jié)果PPT學(xué)習(xí)教案
- 圓柱鋼模計算書
- 合成寶石特征x
- 查擺問題及整改措施
- 年度研發(fā)費用專項審計報告模板(共22頁)
- 隧道工程隧道支護(hù)結(jié)構(gòu)設(shè)計實用教案
- 得力打卡機(jī)破解Excel工作表保護(hù)密碼4頁
評論
0/150
提交評論