C第7次試驗指導(dǎo)書_第1頁
C第7次試驗指導(dǎo)書_第2頁
C第7次試驗指導(dǎo)書_第3頁
C第7次試驗指導(dǎo)書_第4頁
C第7次試驗指導(dǎo)書_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

本文格式為Word版,下載可任意編輯——C第7次試驗指導(dǎo)書事件、繼承和多態(tài)

1.試驗?zāi)康暮鸵?/p>

?把握對象之間通信的基本方法;?把握繼承和多態(tài)性的實現(xiàn)方法;?熟悉接口技術(shù)在繼承中的應(yīng)用。

2.試驗內(nèi)容

(1)創(chuàng)立一組相關(guān)類:其次個類響應(yīng)第一個類的事件,第三個類又響應(yīng)其次個類

的事件。當(dāng)?shù)谝粋€類的對象發(fā)生指定事件時,將引發(fā)一系列對象的連鎖反應(yīng)。(2)創(chuàng)立學(xué)生類Student及其派生類Undergraduate和Graduate,并在Windows

窗體中顯示不同類型的學(xué)生信息。

(3)模擬銀行卡支付系統(tǒng),定義支付接口IPayable,在基類BankCard中實現(xiàn)基

本支付功能;在派生類中重載基類方法,實現(xiàn)支付功能的多態(tài)性。

3.試驗指導(dǎo)

試驗1.

模擬連鎖反應(yīng)事件

(1)創(chuàng)立C#控制臺應(yīng)用程序L7_1。

(2)在程序中新建一個表示太陽的類Sun,在其中定義一個事件OnRise,一個成

員方法Rise,并在方法中引發(fā)事件。參考源代碼如下(太陽只有一個,所以將其定義為靜態(tài)類):

publicstaticclassSun

{publicstaticeventEventHandlerOnRise;publicstaticvoidRise(){

Console.WriteLine(\太陽從東方升起...\if(OnRise!=null)OnRise(null,null);}}

(3)在程序中新建一個公雞類Cock,在其中定義私有字段_name,針對

Sun.OnRise事件的處理方法Sun_OnRise,事件OnSing,以及引發(fā)該事件的方法Sing;在類的構(gòu)造函數(shù)中初始化字段,并將事件處理方法與事件相關(guān)聯(lián)。參考源代碼如下(Sun_OnRise方法中調(diào)用了Sing方法,表示太陽升起會使公雞打鳴):

publicclassCock{privatestring_name;publicCock(stringname){_name=name;Sun.OnRise+=newEventHandler(Sun_OnRise);}privatevoidSun_OnRise(objectsender,EventArgse){Console.WriteLine(\公雞{0}:\Console.WriteLine(\雄雞一聲天下白!\this.Sing();}publiceventEventHandlerOnSing;publicvoidSing(){Console.WriteLine(\喔喔喔...\if(OnSing!=null)OnSing(this,null);}}

(4)在程序中新建一個主人類Host,在其中同樣定義字段_name,起床事件

OnGetup,起床方法Getup(引發(fā)起床事件),養(yǎng)雞方法Foster,以及Cock.OnSing事件的處理方法c1_OnSing,并在Foster方法中與事件相關(guān)聯(lián)。

參考源代碼如下(c1_OnSing方法中調(diào)用了Getup方法,表示公雞打鳴會使主人起床):

publicclassHost{privatestring_name;publicHost(stringname){_name=name;}publiceventEventHandlerOnGetup;publicvoidGetup(){Console.WriteLine(\日出而作...\if(OnGetup!=null)OnGetup(this,null)}publicvoidFoster(Cockc1){c1.OnSing+=newEventHandler(c1_OnSing);}privatevoidc1_OnSing(objectsender,EventArgse){Console.WriteLine(\主人{(lán)0}:\Console.WriteLine(\聞雞起舞!\this.Getup();}}

(5)參照Cock類和Host類中的代碼,新建狗類Dog和貓類Cat,在其中定義字

段_owner以記錄其主人對象,定義owner_OnGetup方法以處理Host.OnGetup事件(主人起床時,輸出狗叫聲“汪汪〞和貓叫聲“喵喵〞);通過屬性O(shè)wner封裝字段_owner,并在其set訪問函數(shù)中關(guān)聯(lián)事件和事件處理方法。

(6)在程序主方法中依次創(chuàng)立雞、主人、狗、貓對象,而后調(diào)用Sun.Rise方法,

參考源代碼如下:

staticvoidMain(){Cockcock1=newCock(\花花\Hosthost1=newHost(\祖逖\//四聲ti:逖。Host1.Foster(cock1);Dogdog1=newDog(\旺財\dog1.Owner=host1;Catcat1=newCat(\咪咪\cat1.Owner=host1;Sun.Rise();}

(7)編譯運行程序,看看“太陽升起〞這一事件會引發(fā)怎樣的連鎖反應(yīng)。

試驗2.管理學(xué)生信息

(1)創(chuàng)立一個C#的Windows窗體應(yīng)用程序L7_2。

(2)向程序項目中新增一個類Student,保存在Student.cs文件(右鍵單擊

Demo2_1?添加?新建項...?選擇“類〞選項)。為Student類添加protected字段_id/_name/_gender/_class/_grade,分別表示學(xué)生的學(xué)號、姓名、性別、班級和年級。

(3)再為這些字段定義對應(yīng)的public封裝屬性ID/Name/Gender/Class/Grade,其

中Grade定義為virtual屬性。

(4)仍在Student.cs中定義Student的派生類Undergraduate和Graduate,為它

們定義protected字段_department及其public封裝屬性Department,表示學(xué)生所屬院系;再為Graduate定義protected字段_tutor及其public封裝屬性Tutor,表示研究生的導(dǎo)師。

(5)在Undergraduate和Graduate中分別重載(override)Grade屬性,只編寫set

方法即可,強制要求Undergraduate的年級范圍在1~4之間,而Graduate的年級范圍在1~3之間。

(6)定位到Form1.cs主窗體的代碼視圖,為窗體類Form1增加一個私有的

Student[]類型的數(shù)組字段students(在構(gòu)造函數(shù)的上面),并在Form1的構(gòu)造函數(shù)中創(chuàng)立三個不同類型的學(xué)生數(shù)組元素(分別代表學(xué)生、研究生和本科

生),參考源代碼如下:

privateStudent[]students;

publicForm1(){

InitializeComponent();students=newStudent[3];students[0]=newStudent();students[0].ID=\

students[0].Name=\趙華\students[0].Gender=\女\students[0].Class=2;students[0].Grade=4;

students[1]=newGraduate();students[1].ID=\

students[1].Name=\彭小飛\students[1].Gender=\男\(zhòng)students[1].Class=1;students[1].Grade=3;

((Graduate)students[1]).Department=\計算機工程\((Graduate)students[1]).Tutor=\王家強\students[2]=newUndergraduate();students[2].ID=\

students[2].Name=\王萌\students[2].Gender=\女\

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論