版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、優(yōu)質(zhì)文本GUI應(yīng)用開發(fā)JAVA實驗報告學(xué) 號:姓 名: 班 級:指導(dǎo)老師: 謝從華實驗一、面向?qū)ο缶幊虒嶒炓弧?實驗?zāi)康?、理解面向?qū)ο蠹夹g(shù)中的封裝的概念。2、掌握包的編寫以及如何使用包中的類。二、實驗設(shè)備與環(huán)境 裝有JAVA語言工具軟件 (Netbeans IDE 6.5 )的計算機(jī)。三、 實驗內(nèi)容a) 習(xí)題冊練習(xí)根據(jù)提供的Account類的UML類圖,編寫代碼實現(xiàn)此類。按照UML圖向其添加實例變量balance和構(gòu)造器。使用構(gòu)造器的參數(shù)初始化balance實例變量。b) 按照要求創(chuàng)立TestAccount2類c) 編譯TestAccount2類d) 運行TestAccount2程序。四、實
2、驗過程及結(jié)果1、根據(jù)書本的UML圖,可以知道,在Account類中,定義了修飾符為public的構(gòu)造器Account,同時在Account類中,定義了三個公共的方法getBalance:double,deposit:void,withdraw:void。2、依據(jù)上述要求,在Eclipse軟件中,新建一個Java Project命名為BankPrj右擊該工程,選擇NewClass創(chuàng)立類Account。其中,Account代碼如下所示:package BankPrj;public class Account public double balance; /添加balance實例 / 為Accoun
3、t類創(chuàng)立一個構(gòu)造器 public Account(double initBalance) balance = initBalance; public double getBalance() return balance; /返回當(dāng)前 public void deposit(double amt) balance = balance + amt; /返回存錢數(shù)目 public void withdraw(double amt) if (balance >= amt) balance = balance - amt; /返回取錢后剩余 3、創(chuàng)立TestAccount類,在BankPrj的目錄
4、之下,創(chuàng)立一個包,命名為BankPrj.test,在該類中聲明一個Main方法,并且將Account初始為余額為100的對象,同時定義一個方法先存入50.再取出147,然后將余額用標(biāo)準(zhǔn)輸出流進(jìn)行輸出。其具體實現(xiàn)代碼如下所示:package BankPrj.test;import BankPrj.Account; /導(dǎo)入Account類public class TestAccount public static void main(String args) Account acct = new Account(100.0); /給Account對象進(jìn)行余額的初始操作 acct.balance =
5、 acct.balance + 50.0; /對Account對象進(jìn)行存入50的操作 acct.balance = acct.balance - 147.0; /從現(xiàn)在的Account對象中取出147 System.out.println("最終余額是: " + acct.balance); /標(biāo)準(zhǔn)輸出流輸入余額 調(diào)試運行TestAccount結(jié)果如下所示:最終余額是:3.04、創(chuàng)立TestAccount2類,即在TestAccount的根底之上進(jìn)行修改,將在Account類中定義的方法進(jìn)行使用,利用方法的調(diào)用實現(xiàn)存取款功能的實現(xiàn),其具體實現(xiàn)代碼如下所示:package B
6、ankPrj.test;import BankPrj.Account;public class TestAccount32public class TestAccount /新建一個 TestAccount接口 public TestAccount() public void main(String args) Account acct = new Account(100); /對Account對象進(jìn)行初始化 acct.deposit(47); /原有的Account對象之上添加47 acct.withdraw(150); /從現(xiàn)有的Account對象中取出150 System.out.pri
7、ntln("賬戶余額最終是: " + acct.getBalance(); /標(biāo)準(zhǔn)輸出流輸入余額 調(diào)試運行TestAccount2,結(jié)果如下所示:賬戶余額最終是:-3.0五、 實驗小結(jié):1、能夠理解面向?qū)ο蠹夹g(shù)中的封裝的概念;2、掌握Eclipse軟件的使用,以及包的編寫和如何使用包中的類;3、能夠理解UML圖,并且根據(jù)圖中相關(guān)提示進(jìn)行類的創(chuàng)立和方法的編寫實驗二、類設(shè)計實驗銀行賬戶的設(shè)計一、實驗?zāi)康?使用繼承和方法覆蓋創(chuàng)立子類綜合使用面向?qū)ο蠹夹g(shù),根據(jù)現(xiàn)實問題抽象設(shè)計模擬銀行賬戶類二、實驗設(shè)備與環(huán)境 裝有JAVA語言工具軟件 (Netbeans IDE 6.5 )的計算機(jī)。
8、三、實驗內(nèi)容在銀行工程中創(chuàng)立Account類的兩個子類SavingsAccount和CheckingAccount,這些賬戶的規(guī)那么如習(xí)題冊P6-2所示。設(shè)計該子類滿足所給的UML類圖。a) 修改Account類b) 創(chuàng)立SavingsAccount類c) 創(chuàng)立CheckingAccount類刪除當(dāng)前的TestBanking類d) 修改當(dāng)前的TestBanking類e) 運行TestBanking程序。四、實驗過程及結(jié)果1、根據(jù)實驗要求和UML圖示,進(jìn)行SavingsAccount和CheckingAccount兩個子類的創(chuàng)立,并且對Account類進(jìn)行修改。2、修改Account類:依據(jù)UM
9、L圖示,可以知道將Account類中的實例變量balance改為受保護(hù)的,即為protected,做同樣修改的,還有Account構(gòu)造器,與此同時,還需要將deposit()方法和withdraw()方法的返回類型修改為boolean,修改后,其具體代碼如下所示:package mybank;public class Account protected double balance; public Account(double initBalance) balance = initBalance; public double getBalance() return balance; publi
10、c boolean deposit(double amt) balance = balance + amt; return true; public boolean withdraw(double amt) boolean result = false; if ( amt <= balance ) balance = balance - amt; result = true; return result; 3、創(chuàng)立SavingsAccount類,根據(jù)UML圖,該類是Account類的子類,同時在該類中,應(yīng)該聲明一個由private所修飾的interestRate實例和一個由public所
11、修飾的SavingsAccount構(gòu)造器,其具體實現(xiàn)代碼如下所示:package mybank;public class SavingsAccount extends Account /SavingsAccount類繼承自Account類 private double interestRate; /聲明interrstRate實例/創(chuàng)立一個SavingsAccount構(gòu)造器 public SavingsAccount(double initBalance, double interestRate) super(initBalance); erestRate = interest
12、Rate; 4、創(chuàng)立CheckingAccount類,在CheckingAccount一個類中,應(yīng)當(dāng)聲明一個overdraftAmount實例變量,并且添加具有兩個參數(shù)的公有構(gòu)造器:initBalance和overdraftAmount,同時,使得initBalance能夠接收傳參,而overdraftAmount能夠保存實例變量,其代碼如下列圖所示:package mybank;public class CheckingAccount extends Account /CheckingAccount類是Account類的子類 private double overdraftAmount; /
13、聲明overdraftAmount實例變量 /創(chuàng)立構(gòu)造器,具有兩個參數(shù) public CheckingAccount(double initBalance, double overdraftAmount) super(initBalance); this.overdraftAmount = overdraftAmount; /添加只有一個參數(shù)的公有構(gòu)造器,并默認(rèn)其值為0.0 public CheckingAccount(double initBalance) this(initBalance, 0.0); /覆蓋withdarw方法,使用overdraftAmount變量 public boo
14、lean withdraw(double amount) boolean result = true; if ( balance < amount ) / 當(dāng)沒有足夠的余額來響應(yīng)wuthdraw方法的時候,那么檢查是否有足夠的可透支款項 double overdraftNeeded = amount - balance; if ( overdraftAmount < overdraftNeeded ) /當(dāng)沒有透支款項或缺乏以透支款項缺乏以支付當(dāng)前所需時 result = false; else balance = 0.0; overdraftAmount -= overdraft
15、Needed; else balance = balance - amount; return result; 5、刪除當(dāng)前的TestBanking類,復(fù)制實驗?zāi)0逯械腡estBanking類并且修改當(dāng)前的TestBanking類,其具體實現(xiàn)代碼如下所示:package mybank.test;/導(dǎo)入mybank包中的所有類import mybank.Account;import mybank.Bank;import mybank.CheckingAccount;import mybank.Customer;import mybank.SavingsAccount;public class T
16、estBanking public static void main(String args) Bank bank = new Bank(); Customer customer; Account account; /建立銀行客戶和他們名下的賬戶信息 System.out.println("創(chuàng)立客戶 Jane Smith."); bank.addCustomer("Jane", "Simms"); customer = bank.getCustomer(0); System.out.println("他名下創(chuàng)立的賬戶有余額
17、500.00 并且3%的利潤."); customer.setAccount(new SavingsAccount(500.00, 0.03); System.out.println("創(chuàng)立客戶Owen Bryant."); bank.addCustomer("Owen", "Bryant"); customer = bank.getCustomer(1); System.out.println("他名下創(chuàng)立的賬戶有余額 500.00 并且沒有可透支款項."); customer.setAccount(n
18、ew CheckingAccount(500.00); System.out.println("創(chuàng)立客戶Tim Soley."); bank.addCustomer("Tim", "Soley"); customer = bank.getCustomer(2); System.out.println("他名下創(chuàng)立的賬戶有余額 500.00 并且有500余額的可透支賬戶."); customer.setAccount(new CheckingAccount(500.00, 500.00); System.out.pr
19、intln("創(chuàng)立客戶 Maria Soley."); bank.addCustomer("Maria", "Soley"); customer = bank.getCustomer(3); System.out.println("Maria 和她的丈夫共有著這份賬戶."); customer.setAccount(bank.getCustomer(2).getAccount(); System.out.println(); / 說明各種賬戶所發(fā)生動作的類型并為SavingsAccount設(shè)定測試標(biāo)準(zhǔn) System
20、.out.println("已經(jīng)將 Jane Smith和其名下賬戶信息進(jìn)行保存."); customer = bank.getCustomer(0); account = customer.getAccount(); / Perform some account transactions System.out.println("Withdraw 150.00: " + account.withdraw(150.00); System.out.println("Deposit 22.50: " + account.deposit(22
21、.50); System.out.println("Withdraw 47.62: " + account.withdraw(47.62); System.out.println("Withdraw 400.00: " + account.withdraw(400.00); / Print out the final account balance System.out.println("客戶 " + customer.getLastName() + ", " + customer.getFirstName() +
22、 "仍有余額 " + account.getBalance(); System.out.println(); / 測試 Checking Account中的透支款項 System.out.println("已經(jīng)將客戶 Owen Bryant和他的賬戶進(jìn)行更新,沒有透支款項."); customer = bank.getCustomer(1); account = customer.getAccount(); / Perform some account transactions System.out.println("Withdraw 150.
23、00: " + account.withdraw(150.00); System.out.println("Deposit 22.50: " + account.deposit(22.50); System.out.println("Withdraw 47.62: " + account.withdraw(47.62); System.out.println("Withdraw 400.00: " + account.withdraw(400.00); / Print out the final account balanc
24、e System.out.println("客戶 " + customer.getLastName() + ", " + customer.getFirstName() + " 仍有余額 " + account.getBalance(); System.out.println(); System.out.println("檢查并更新過客戶 Tim Soley和他的賬戶信息,其中存在透支款項."); customer = bank.getCustomer(2); account = customer.getAccou
25、nt(); / Perform some account transactions System.out.println("Withdraw 150.00: " + account.withdraw(150.00); System.out.println("Deposit 22.50: " + account.deposit(22.50); System.out.println("Withdraw 47.62: " + account.withdraw(47.62); System.out.println("Withdraw
26、 400.00: " + account.withdraw(400.00); / Print out the final account balance System.out.println("客戶" + customer.getLastName() + ", " + customer.getFirstName() + " 仍有余額 " + account.getBalance(); System.out.println(); System.out.println("檢查并更新客戶 Maria Soley 和他丈夫
27、共同持有的 賬戶."); customer = bank.getCustomer(3); account = customer.getAccount(); / Perform some account transactions System.out.println("Deposit 150.00: " + account.deposit(150.00); System.out.println("Withdraw 750.00: " + account.withdraw(750.00); / Print out the final account
28、 balance System.out.println("客戶 " + customer.getLastName() + ", " + customer.getFirstName() + " 仍有余額 " + account.getBalance(); 6、運行TestBanking程序 其調(diào)試運行結(jié)果如下所示:五、實驗小結(jié):1、能夠使用繼承和方法覆蓋創(chuàng)立子類,如SavingsAccount類和CheckingAccount類均繼承自Account類2、學(xué)會使用綜合使用面向?qū)ο蠹夹g(shù),根據(jù)現(xiàn)實問題抽象設(shè)計模擬銀行賬戶類,如透支款項,存取
29、賬戶,共有財產(chǎn)等實驗三、使用接口和抽象類設(shè)計實驗一、 實驗?zāi)康?練習(xí)使用抽象類和接口,并探究這些類組件的多態(tài)屬性。二、實驗設(shè)備與環(huán)境 裝有JAVA語言工具軟件 (Netbeans IDE 6.5 )的計算機(jī)。三、實驗內(nèi)容創(chuàng)立一個來源于抽象類Animal的動物層次。幾個動物類將實現(xiàn)一個叫做Pet的接口。層次結(jié)構(gòu)見習(xí)題冊P7-12圖7-2。具體步驟如下:(1) 按照7-13頁的要求創(chuàng)立Pet接口(2) 按要求創(chuàng)立Animal類(3) 創(chuàng)立TestAnimals類(4) 編譯TestAnimals類(5) 運行TestAnimals程序四、實驗過程及結(jié)果1、翻開Eclipse新建ProjectExc
30、erise22、依據(jù)書本上的UML類圖,得知接口Pet將實現(xiàn)Cat和Fish類中的方法,并且在該接口中應(yīng)當(dāng)聲明三個由Public修飾的方法:getName,setName和Play,據(jù)此,得出接口Pet的代碼如下所示:package Execrise2;public interface Pet public void setName(String name); public String getName(); public void play();3、創(chuàng)立Animal類,要求聲明并初始化一個受保護(hù)的實例變量“l(fā)egs,來記錄動物腿的數(shù)目,同時應(yīng)當(dāng)抽象聲明方法“eat和具體方法“walk,依據(jù)上
31、述要求,實現(xiàn)代碼如下列圖所示:package Execrise2;public abstract class Animal protected int legs; protected Animal(int legs) this.legs = legs; public abstract void eat(); /抽象方法eat public void walk() /具體方法walk System.out.println("這個動物用 " + legs + " 腿走路."); 4、創(chuàng)立Spider類,要求Spider類繼承自Animal類,并且聲明一個構(gòu)造
32、器和定以一個方法eat,其代碼如下列圖所示:package Execrise2;public class Spider extends Animal public Spider() super(8); /蜘蛛有八只腿 public void eat() /蜘蛛具體吃什么 System.out.println("蜘蛛結(jié)網(wǎng)捕食飛行的昆蟲."); 5、創(chuàng)立Cat類,要求能夠包含一個實例變量來存儲寵物的名字,同樣的,需要聲明一個構(gòu)造器來指明貓有多少條腿,并實現(xiàn)Pet接口的方法,具體代碼如下:package Execrise2;public class Cat extends Ani
33、mal implements Pet private String name; /指定貓的名字 public Cat(String name) super(4); = name; public Cat() this(""); /傳遞一個空字符串作為參數(shù) public void setName(String name) = name; public String getName() return name; public void play() /實現(xiàn)Pet接口方法play System.out.println(name + "
34、; 喜歡玩繩子."); public void eat() /實現(xiàn)Pet接口方法eat System.out.println("貓喜歡吃魚和老鼠."); 6、創(chuàng)立Fish類,根本要求同Cat類一樣,同時,F(xiàn)ish類中還需要重寫“walk方法,其具體代碼實現(xiàn)如下:package Execrise2;public class Fish extends Animal implements Pet private String name; public Fish() super(0); public void setName(String name)
35、= name; public String getName() return name; public void play() System.out.println("魚生活在水里."); public void walk() super.walk(); System.out.println("魚在水里游來游去."); public void eat() System.out.println("大魚吃小魚,小魚吃蝦米."); 7、創(chuàng)立TestAnimal類package Execrise2;public class TestAnimals public static void main(String args) Fish f = new Fish(); Cat c = new Cat("Fluffy"); Animal a = new Fish(); Animal e = ne
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年工業(yè)萘項目立項申請報告模板
- 2025年智能化配電與電控裝置項目規(guī)劃申請報告模板
- 函授畢業(yè)生登記表自我鑒定范文15篇
- 2025年汽車安全氣囊及裝置項目提案報告
- 2025年寵物水族項目立項申請報告
- 2025年無菌包裝用包裝材料項目立項申請報告
- 2025年汽車覆蓋件模具項目提案報告模式
- 2024年度水利工程行政合同行政優(yōu)益權(quán)實施要點分析3篇
- 資料員個人工作總結(jié)范文五篇
- 房屋租賃協(xié)議書六篇
- 抗精神疾病藥物與麻醉課件
- 部編版語文一年級上冊 期末復(fù)習(xí)課件
- 脛腓骨骨折的護(hù)理查房
- 區(qū)域經(jīng)理崗位職責(zé)
- 軍事理論論述題大全
- (完整word版)中國戶口本英文翻譯模板
- 大學(xué)生安全教育智慧樹知到答案章節(jié)測試2023年中國海洋大學(xué)
- 酒店安全管理制度
- GB/T 41693-2022高關(guān)注化學(xué)物質(zhì)評估判定導(dǎo)則
- YY/T 0698.7-2009最終滅菌醫(yī)療器械包裝材料第7部分:環(huán)氧乙烷或輻射滅菌無菌屏障系統(tǒng)生產(chǎn)用可密封涂膠紙要求和試驗方法
- GB/T 18015.5-2007數(shù)字通信用對絞或星絞多芯對稱電纜第5部分:具有600MHz及以下傳輸特性的對絞或星絞對稱電纜水平層布線電纜分規(guī)范
評論
0/150
提交評論