實(shí)驗(yàn)三-Java面向?qū)ο蟾呒?jí)編程_第1頁(yè)
實(shí)驗(yàn)三-Java面向?qū)ο蟾呒?jí)編程_第2頁(yè)
實(shí)驗(yàn)三-Java面向?qū)ο蟾呒?jí)編程_第3頁(yè)
實(shí)驗(yàn)三-Java面向?qū)ο蟾呒?jí)編程_第4頁(yè)
實(shí)驗(yàn)三-Java面向?qū)ο蟾呒?jí)編程_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

實(shí)驗(yàn)三Java面向?qū)ο蟾呒?jí)編程一、實(shí)驗(yàn)?zāi)康?.掌握J(rèn)ava面向?qū)ο缶幊碳夹g(shù)2.能夠使用繼承創(chuàng)立子類并實(shí)現(xiàn)方法覆蓋3.能夠創(chuàng)立異類集合并使用多態(tài)4.能夠創(chuàng)立抽象類和接口,并探究它們的多態(tài)特性二、預(yù)備知識(shí)1.JDK的安裝設(shè)置:JDK/JRE/JVM;2.Eclipse集成開發(fā)環(huán)境的綠色安裝;3.掌握J(rèn)ava語(yǔ)言的面向?qū)ο筇匦浴卜庋b性、繼承性、多態(tài)性〕;4.掌握J(rèn)ava語(yǔ)言的抽象類和接口。三、實(shí)驗(yàn)描述1.實(shí)驗(yàn)類型:設(shè)計(jì)2.實(shí)驗(yàn)學(xué)時(shí):4學(xué)時(shí)3.實(shí)驗(yàn)內(nèi)容:2項(xiàng)〔參照四〕四、實(shí)驗(yàn)內(nèi)容

(1)檢查所使用的計(jì)算機(jī)系統(tǒng):1.確認(rèn)是否已安裝JDK,并確認(rèn)系統(tǒng)的環(huán)境變量設(shè)置;2.確認(rèn)是否已綠色安裝Eclipse集成開發(fā)環(huán)境。

(2)實(shí)驗(yàn)內(nèi)容一:使用繼承和方法覆蓋創(chuàng)立子類,并能夠創(chuàng)立異類集合并使用多態(tài)具體要求:1.在上述銀行工程中,創(chuàng)立Customer類:·位于包:中;·向Customer類添加四個(gè)實(shí)例變量:firstName,lastName,accounts〔Account對(duì)象數(shù)組,長(zhǎng)度為10〕和numberOfAccounts〔記錄accounts數(shù)組索引的一個(gè)整數(shù)〕;·添加一個(gè)公有構(gòu)造方法:兩個(gè)形式參數(shù)firstName,lastname,用于初始化客戶姓名、創(chuàng)立accounts數(shù)組和初始化accounts數(shù)組元素個(gè)數(shù)numberOfAccounts;·添加getFirstName方法:該方法返回客戶的firstName實(shí)例變量;·添加getLastName方法:該方法返回客戶的lastName實(shí)例變量;·添加addAccount方法:該方法有一個(gè)形式參數(shù)〔即Account對(duì)象〕,數(shù)組的下標(biāo)通過(guò)實(shí)例變量numberOfAccounts實(shí)現(xiàn)遞增,同時(shí)將該參數(shù)對(duì)象存儲(chǔ)在accounts數(shù)組中;·添加getNumberOfAccounts方法:該方法返回numberOfAccounts實(shí)例變量;·添加getAccount方法:該方法返回與指定的index數(shù)組下標(biāo)相關(guān)的帳戶對(duì)象。2.創(chuàng)立SavingsAccount類,該類是Account類的子類:·位于包:中;·向SavingsAccount類中添加interestRate實(shí)例變量;·添加一個(gè)有兩個(gè)參數(shù)的公有構(gòu)造方法:initBalance和interestRate。調(diào)用父類構(gòu)造方法傳遞initBalance參數(shù),并初始化實(shí)例變量interestRate;·添加accumulateInterest方法:用于計(jì)算客戶的利息。3.創(chuàng)立CheckingAccount類,Account類的子類:·位于包:中;·向CheckingAccount類中添加overdraftAmount實(shí)例變量;·添加一個(gè)有兩個(gè)參數(shù)的公有構(gòu)造方法:initBalance和overdraftAmount。調(diào)用父類構(gòu)造方法傳遞initBalance參數(shù),并初始化實(shí)例變量overdraftAmount;·添加只有一個(gè)參數(shù)initBalance的另一個(gè)公有構(gòu)造方法。用initBalance參數(shù)和overdraftAmount參數(shù)調(diào)用第一個(gè)構(gòu)造方法,其中overdraftAmount參數(shù)使用默認(rèn)值0.0;·覆蓋withdraw方法,方法參數(shù)為amount,balance變量繼承于父類。下面是withdraw方法的偽碼:if(balance<amount)thendoubleoverdraftNeeded=amount–balanceif(overdraftAmount<overdraftNeeded)thentransactionfailselsebalance=0.0decrementoverdraftAmountbyoverdraftNeededelsedecrementbalancebyamount4.創(chuàng)立TestBanking類:·該類文件位于包:·該類有程序入口main()函數(shù);·要求:創(chuàng)立一名客戶的假設(shè)干個(gè)不同類型的賬戶信息,然后依次訪問(wèn)每一個(gè)賬戶,并根據(jù)不同類型的賬戶信息做出不同的操作。〔要求使用instanceof運(yùn)算符測(cè)試判斷賬戶的類型信息,如果是SavingsAccount,那么計(jì)算賬戶的利息;如果是CheckingAccount,那么進(jìn)行取錢操作,可以進(jìn)行適當(dāng)額度的透支〕;·最后輸出客戶賬戶的余額信息。

(4)實(shí)驗(yàn)內(nèi)容二:能夠創(chuàng)立抽象類和接口,并探究它們的多態(tài)特性具體要求:1.創(chuàng)立工程:InterfaceProject;2.創(chuàng)立Animal類,該類是抽象類:·聲明一個(gè)受保護(hù)的整數(shù)實(shí)例變量legs,記錄動(dòng)物的腿的數(shù)目;·定義一個(gè)受保護(hù)的構(gòu)造方法來(lái)初始化legs實(shí)例變量;·聲明抽象方法eat;·聲明具體方法walk來(lái)顯示與動(dòng)物行走方式有關(guān)的信息〔包括腿的數(shù)目〕;3.創(chuàng)立Pet接口:聲明三個(gè)抽象方法:publicStringgetName();publicvoidsetName(Stringn);publicvoidplay();4.創(chuàng)立Spider類:·Spider類擴(kuò)展了Animal類;·定義一個(gè)無(wú)參數(shù)構(gòu)造方法,調(diào)用父類構(gòu)造方法來(lái)指明所有蜘蛛都有八條腿;·實(shí)現(xiàn)eat方法;5.創(chuàng)立Cat類:·聲明String實(shí)例變量來(lái)存儲(chǔ)寵物的名字;·定義一個(gè)構(gòu)造方法,使用String參數(shù)來(lái)指定貓的名字;該構(gòu)造方法必須調(diào)用父類構(gòu)造方法來(lái)指明所有貓都有四條腿;·另外定義一個(gè)無(wú)參數(shù)的構(gòu)造方法,該構(gòu)造方法調(diào)用上一個(gè)構(gòu)造方法〔使用this關(guān)鍵字〕來(lái)傳遞一個(gè)空字符串作為參數(shù);·實(shí)現(xiàn)Pet接口方法;·實(shí)現(xiàn)eat方法;6.創(chuàng)立Fish類:·聲明String實(shí)例變量來(lái)存儲(chǔ)寵物的名字;·定義一個(gè)無(wú)參數(shù)的構(gòu)造方法,該構(gòu)造方法調(diào)用父類構(gòu)造方法來(lái)指明魚沒(méi)有腿;·實(shí)現(xiàn)Pet接口方法;·覆蓋walk方法,該方法調(diào)用所有的超級(jí)方法,并打印輸出一條說(shuō)明魚不會(huì)行走的消息;·實(shí)現(xiàn)eat方法;7.創(chuàng)立TestAnimal類:·該類有程序入口main()函數(shù);·創(chuàng)立并操作前面所創(chuàng)立的類的實(shí)例;·調(diào)用每個(gè)對(duì)象中的方法;·對(duì)象類型轉(zhuǎn)換;·使用多態(tài)特性;·使用super關(guān)鍵字調(diào)用父類方法。五、實(shí)驗(yàn)要求及總結(jié)1.結(jié)合上課內(nèi)容,對(duì)上述程序先閱讀,然后上機(jī)并調(diào)試程序,并對(duì)實(shí)驗(yàn)結(jié)果寫出你自己的分析結(jié)論。2.整理上機(jī)步驟,總結(jié)經(jīng)驗(yàn)和體會(huì)。3.完成實(shí)驗(yàn)報(bào)告和上交程序。實(shí)驗(yàn)三1:實(shí)驗(yàn)結(jié)果:Account.java:packagecom.mybank.domain;importcom.mybank.test.*;publicclassAccount{//創(chuàng)立Account類 privatedoublebalance; publicvoidinitBalance(doublebalance){ this.balance=balance; } publicbooleandeposit(doubleamt){//deposit(double //amt),用于向帳戶存錢,返回值是boolean型; if(amt>0){ balance=balance+amt; returntrue; }else{ returnfalse; } } publicbooleanwithdraw(doubleamt){//withdraw(doubleamt),用于從帳戶取錢 if(balance>amt){ balance=balance-amt; returntrue; }else{ returnfalse; } } publicdoublegetBalance(){//getBalance(),用于返回balance的值 returnbalance; }}Customer1.java:packagecom.mybank.domain;publicclassCustomer1{//創(chuàng)立Customer1類 privateStringfirstname; privateStringlastname; privateAccountaccouts[]=newAccount[10]; privateintnumberofaccout; publicCustomer1(Stringfirstname,Stringlastname){//公有構(gòu)造方法 this.firstname=firstname; this.lastname=lastname; numberofaccout=0; } publicStringgetFirstName(){//getFirstName方法:該方法返回客戶的firstName實(shí)例變量; returnfirstname; } publicStringgetLastName(){//getLastName方法:該方法返回客戶的lastName實(shí)例變量; returnlastname; } publicvoidaddaccout(Accountaccout){//addAccount方法 accouts[numberofaccout]=accout; numberofaccout++; } publicintgetnumberofaccout(){//getNumberOfAccounts方法:該方法返回numberOfAccounts實(shí)例變量 returnnumberofaccout; } publicAccountgetaccout(intindex){//getAccount方法:該方法返回與指定的index數(shù)組下標(biāo)相關(guān)的帳戶對(duì)象。 returnaccouts[index]; }}Savingaccout.java:packagecom.mybank.domain;publicclassSavingaccoutextendsAccount{//創(chuàng)立SavingsAccount類,該類是Account類的子類: privatedoubleinterestrate;//添加interestRate實(shí)例變量; publicSavingaccout(doublebalance,doubleinterestrate){//公有構(gòu)造方法 super.initBalance(balance);//調(diào)用父類構(gòu)造方法傳遞initBalance參數(shù) erestrate=interestrate; } publicdoubleaccumulateinterest(){//accumulateInterest方法:用于計(jì)算客戶的利息。 returnthis.getBalance()*interestrate; }}Checkingaccout.java:packagecom.mybank.domain;publicclassCheckingaccoutextendsAccount{//創(chuàng)立CheckingAccount類,Account類的子類: privatedoubleoverdraftamount; publicCheckingaccout(intbalance,doubleoverdraftamount){//有兩個(gè)參數(shù)的公有構(gòu)造方法 super.initBalance(balance); this.overdraftamount=overdraftamount; } publicCheckingaccout(intbalance){//只有一個(gè)參數(shù)initBalance的另一個(gè)公有構(gòu)造方法 this(balance,0.0); } publicbooleanwithdraw(doubleamount){//覆蓋withdraw方法 if(this.getBalance()<amount){ doubleoverdraftneeded=amount-this.getBalance(); if(overdraftamount<overdraftneeded){ returnfalse; }else{ this.initBalance(this.getBalance()-amount); } }else{ this.initBalance(this.getBalance()-amount); } returntrue; }}Testingbank1.java:packagecom.mybank.test;importcom.mybank.domain.*;publicclassTestingbank1{ publicstaticvoidmain(String[]args){//創(chuàng)立TestBanking類 /*創(chuàng)立異類集合*/ Customer1customer=newCustomer1("zhao","zhen"); customer.addaccout(newCheckingaccout(500,100)); customer.addaccout(newSavingaccout(500,0.02)); /*使用instanceof運(yùn)算符測(cè)試判斷賬戶的類型信息*/ for(inti=0;i<customer.getnumberofaccout();i++){ if(customer.getaccout(i)instanceofCheckingaccout){ Checkingaccoutm=(Checkingaccout)customer.getaccout(i); m.withdraw(550); m.deposit(100); m.withdraw(900); m.deposit(100); } if(customer.getaccout(i)instanceofSavingaccout){ Savingaccoutm=(Savingaccout)customer.getaccout(i); m.accumulateinterest(); m.deposit(100); m.withdraw(50); } } /*最后輸出客戶賬戶的余額信息。*/ for(inti=0;i<customer.getnumberofaccout();i++){ System.out.println(customer.getaccout(i).getBalance()); } }}實(shí)驗(yàn)三2:實(shí)驗(yàn)結(jié)果:實(shí)驗(yàn)改良之處:創(chuàng)立Sleep接口拓展Pet接口。Animal.java:publicabstractclassAnimal{//創(chuàng)立Animal類,該類是抽象類: protectedintlegs; publicAnimal(){ } protectedAnimal(intlegs){ this.legs=legs; } abstractvoideat();//抽象方法eat; publicvoidwalk(){//具體方法walk來(lái)顯示與動(dòng)物行走方式有關(guān)的信息〔包括腿的數(shù)目〕; System.out.println("thisanimalwalkon"+legs+"legs"); }}publicinterfacePet{//創(chuàng)立Pet接口:聲明三個(gè)抽象方法 publicabstractStringgetname(); publicabstractvoidsetname(Stringpet_name); publicabstractvoidplay();}publicinterfaceSleepextendsPet{//創(chuàng)立Sleep接口,繼承Petvoidsleep();}Spider.java:publicclassSpiderextendsAnimalimplementsPet,Sleep{//創(chuàng)立Spider類,Spider類擴(kuò)展了Animal類 privateStringpet_name;publicSpider(){ super(8);}voideat(){//實(shí)現(xiàn)eat方法 System.out.println("Spidereatfly");}publicvoidsetname(Stringpet_name){ this.pet_name=pet_name;}publicvoidplay(){ System.out.println("thespiderplayinhands");}publicStringgetname(){ returnpet_name;}publicvoidspeak(){ System.out.println("thecatmakesnonoise");}publicvoidsleep(){//實(shí)現(xiàn)Sleep接口方法 System.out.println("thecatsleeponthewall");}}Cat.java:publicclassCatextendsAnimalimplementsPet,Sleep{//創(chuàng)立Cat類private Stringpet_name;publicCat(Stringpet_name){//構(gòu)造方法 super(4); this.pet_name=pet_name;}publicCat(){//定義一個(gè)無(wú)參數(shù)的構(gòu)造方法 this(null);}publicvoidspeak(){ System.out.println("thecatspeakwithmaomao"); }voideat(){//實(shí)現(xiàn)eat方法; System.out.println("thecatslikeeattingfish");}/*實(shí)現(xiàn)Pet接口方法*/publicvoidplay(){ System.out.println("thecatplaywithmice");}publicStringgetname(){ returnpet_name;}publicvoidsetname(Stringpet_name){ this.pet_name=pet_name;}publicvoidsleep(){//實(shí)現(xiàn)Sleep接口方法 System.out.println("thecatsleepwithherhost");}}Fish.java:publicclassFishextendsAnimalimplementsPet,Sleep{//創(chuàng)立Fish類privateStringpet_name;publicFish(){ super(0);}/*實(shí)現(xiàn)Pet接口方法*/publicStringgetname(){ returnpet_name;}publicvoidsetname(Stringpet_name){ this.pet_name=pet_name;}publicvoidplay(){ System.out.println("thefishswiminwater");}voideat(){//實(shí)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論