版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、GUI 應(yīng)用開發(fā)( JAVA )實驗報告學(xué)號:姓名:班級:謝從華指導(dǎo)老師:實驗一、 面向?qū)ο缶幊虒嶒炓?、實驗?zāi)康? 、理解面向?qū)ο蠹夹g(shù)中的封裝的概念。2、掌握包的編寫以及如何使用包中的類。二、 實驗設(shè)備及環(huán)境裝有 JAVA 語言工具軟件(Netbeans IDE 6.5 ) 的計算機。三、實驗內(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) 運行TestAccount
2、2 程序。四、實驗過程及結(jié)果1、根據(jù)書本的UML 圖,可以知道,在Account 類中,定義了修飾符為 public 的構(gòu)造器 Account , 同時在 Account 類中, 定義了三個公共的方法 getBalance: double , deposit: void , withdraw : void 。2、依據(jù)上述要求,在Eclipse軟件中,新建一個 Java Project 命名為BankPrj 一右擊該項目,選擇 NevwClass創(chuàng)建類Account。其中,Account代碼如下所示:package BankPrj;public class Account public doub
3、le balance; / 添加 balance 實例/ 為 Account 類創(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; /返回
4、取錢后剩余 3、創(chuàng)建 TestAccount類,在 BankPrj的目錄之下,創(chuàng)建一個包,命名為 BankPrj.test,在該類中聲明一個Main 方法,并且將Account 初始為余額為 100 的對象,同時定義一個方法147,然后將余額用標(biāo)準(zhǔn)輸出流進(jìn)行輸出。其具體實現(xiàn)代碼如下所示:先存入50.再取出package BankPrj.test;import BankPrj.Account; /導(dǎo)入 Account 類 public class TestAccount public static void main(String args) Account acct = new Account
5、(100.0); acct.balance = acct.balance + 50.0; acct.balance = acct.balance - 147.0; System.out.println(" 最終余額是:/ 給 Account 對象進(jìn)行余額的初始操作/對Account 對象進(jìn)行存入50 的操作/從現(xiàn)在的Account 對象中取出 147" + acct.balance); /標(biāo)準(zhǔn)輸出流輸入余額調(diào)試運行TestAccount 結(jié)果如下所示:最終余額是: 3.04、 創(chuàng)建 TestAccount2 類, 即在 TestAccount 的基礎(chǔ)之上進(jìn)行修改, 將在 A
6、ccount 類中定 義的方法進(jìn)行使用,利用方法的調(diào)用實現(xiàn)存取款功能的實現(xiàn),其具體實現(xiàn)代碼如下所示:package BankPrj.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 對象之
7、上添加47acct.withdraw(150);/從現(xiàn)有的Account 對象中取出 150System.out.println(" 賬戶余額最終是: " + acct.getBalance(); /標(biāo)準(zhǔn)輸出 流輸入余額 調(diào)試運行TestAccount2 ,結(jié)果如下所示:賬戶余額最終是: -3.0五、實驗小結(jié):1 、能夠理解面向?qū)ο蠹夹g(shù)中的封裝的概念;2 、掌握 Eclipse 軟件的使用,以及包的編寫和如何使用包中的類;3、能夠理解UM閡,并且根據(jù)圖中相關(guān)提示進(jìn)行類的創(chuàng)建和方法的編寫實驗二、 類設(shè)計實驗(銀行賬戶的設(shè)計)一、實驗?zāi)康? .使用繼承和方法覆蓋創(chuàng)建子類2 .綜
8、合使用面向?qū)ο蠹夹g(shù),根據(jù)現(xiàn)實問題抽象設(shè)計模擬銀行賬戶類二、 實驗設(shè)備及環(huán)境裝有 JAVA 語言工具軟件(Netbeans IDE 6.5 ) 的計算機。三、實驗內(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 程序。四、實驗過程及
9、結(jié)果1、 根據(jù)實驗要求和 UML 圖示, 進(jìn)行 SavingsAccount 和 CheckingAccount 兩個子類的創(chuàng) 建,并且對 Account 類進(jìn)行修改。2、修改Account 類:依據(jù) UML 圖示,可以知道將Account 類中的實例變量balance 改為受保護的,即為protected ,做同樣修改的,還有Account 構(gòu)造器,及此同時,還需要將deposit。方法和withdraw。方法的返回類型修改為boolean,修改后,其具體代碼如下所示:package mybank;public class Account protected double balance;p
10、ublic Account(double initBalance) balance = initBalance;public double getBalance() return balance;public 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 re
11、sult;3、創(chuàng)建SavingsAccount 類,根據(jù) UML 圖,該類是Account 類的子類,同時在該類中,應(yīng)該聲明一個由 private 所修飾的 interestRate 實例和一個由 public 所修飾的 SavingsAccount 構(gòu)造器,其具體實現(xiàn)代碼如下所示:package mybank;public class SavingsAccount extends Account /SavingsAccount 類繼承自 Account 類 private double interestRate; /聲明interrstRate 實例/創(chuàng)建一個 SavingsAccount
12、構(gòu)造器public SavingsAccount(double initBalance, double interestRate) super(initBalance);erestRate = interestRate;4 、 創(chuàng) 建 CheckingAccount 類 , 在 CheckingAccount 一 個 類 中 , 應(yīng) 當(dāng) 聲 明 一 個 overdraftAmount 實 例 變 量 , 并 且 添 加 具 有 兩 個 參 數(shù) 的 公 有 構(gòu) 造 器 : initBalance 和 overdraftAmount ,同時,使得 initBalance 能夠接收傳
13、參,而overdraftAmount 能夠保存實例變量,其代碼如下圖所示:package mybank;public class CheckingAccount extends Account /CheckingAccount 類是 Account 類的子類private double overdraftAmount;/聲明overdraftAmount 實例變量/創(chuàng)建構(gòu)造器,具有兩個參數(shù)public CheckingAccount(double initBalance, double overdraftAmount) super(initBalance);this.overdraftAmou
14、nt = overdraftAmount;/添加只有一個參數(shù)的公有構(gòu)造器,并默認(rèn)其值為0.0public CheckingAccount(double initBalance) this(initBalance, 0.0);/覆蓋withdarw 方法,使用 overdraftAmount 變量public boolean withdraw(double amount) boolean result = true;if ( balance < amount ) / 當(dāng)沒有足夠的余額來響應(yīng)wuthdraw 方法的時候,則檢查是否有足夠的可透支款項double overdraftNeeded
15、 = amount - balance;if ( overdraftAmount < overdraftNeeded ) /當(dāng)沒有透支款項或不足以透支款項不足以支付當(dāng)前所需時result = false;else balance = 0.0;overdraftAmount -= overdraftNeeded;else balance = balance - amount;return result;5、刪除當(dāng)前的TestBanking 類,復(fù)制實驗?zāi)0逯械?TestBanking 類并且修改當(dāng)前的TestBanking 類,其具體實現(xiàn)代碼如下所示:package mybank.test
16、;/導(dǎo)入mybank 包中的所有類import mybank.Account;import mybank.Bank;import mybank.CheckingAccount;import mybank.Customer;import mybank.SavingsAccount;public class TestBanking public static void main(String args) Bank bank = new Bank();Customer customer;Account account;/建立銀行客戶和他們名下的賬戶信息System.out.println("
17、; 創(chuàng)建客戶 Jane Smith.");bank.addCustomer("Jane", "Simms");customer = bank.getCustomer(0);System.out.println(" 他名下創(chuàng)建的賬戶有余額500.00 并且 3% 的利潤 .");customer.setAccount(new SavingsAccount(500.00, 0.03);System.out.println(" 創(chuàng)建客戶 Owen Bryant.");bank.addCustomer("
18、;Owen", "Bryant");customer = bank.getCustomer(1);System.out.println(" 他名下創(chuàng)建的賬戶有余額500.00 并且沒有可透支款項.");customer.setAccount(new CheckingAccount(500.00);System.out.println(" 創(chuàng)建客戶 Tim Soley.");bank.addCustomer("Tim", "Soley");customer = bank.getCusto
19、mer(2);System.out.println(" 他名下創(chuàng)建的賬戶有余額500.00 并且有 500 余額的可透支賬戶 .");customer.setAccount(new CheckingAccount(500.00, 500.00);System.out.println(" 創(chuàng)建客戶 Maria Soley.");bank.addCustomer("Maria", "Soley");customer = bank.getCustomer(3);System.out.println("Maria
20、 和她的丈夫共有著這份賬戶 .");customer.setAccount(bank.getCustomer(2).getAccount();System.out.println();/ 說明各種賬戶所發(fā)生動作的類型并為 SavingsAccount 設(shè)定測試標(biāo)準(zhǔn)System.out.println(" 已經(jīng)將 Jane Smith 和其名下賬戶信息進(jìn)行保存.");customer = bank.getCustomer(0);account = customer.getAccount();/ Perform some account transactionsSys
21、tem.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 400.00: " + account.withdraw(400.00);/ Pri
22、nt out the final account balanceSystem.out.println(" 客戶 " + customer.getLastName()+ ", " + customer.getFirstName()+ " 仍有余額 " + account.getBalance();System.out.println();/ 測試 Checking Account 中的透支款項System.out.println(" 已經(jīng)將客戶 Owen Bryant 和他的賬戶進(jìn)行更新,沒有透支款項 .");cus
23、tomer = bank.getCustomer(1);account = customer.getAccount();/ Perform some account transactionsSystem.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
24、.withdraw(47.62);System.out.println("Withdraw 400.00: " + account.withdraw(400.00);/ Print out the final account balanceSystem.out.println(" 客戶 " + customer.getLastName()+ ", " + customer.getFirstName()+ " 仍有余額 " + account.getBalance();System.out.println();Sys
25、tem.out.println(" 檢查并更新過客戶 Tim Soley 和他的賬戶信息, 其中存 在透支款項 ."); customer = bank.getCustomer(2); account = customer.getAccount();/ Perform some account transactionsSystem.out.println("Withdraw 150.00: " + account.withdraw(150.00);System.out.println("Deposit 22.50: " + accou
26、nt.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 balanceSystem.out.println(" 客戶 " + customer.getLastName()+ ", " + customer.getFirs
27、tName()+ " 仍有余額 " + account.getBalance();System.out.println();System.out.println(" 檢查并更新客戶 Maria Soley 和他丈夫共同持有的 賬 戶 ."); customer = bank.getCustomer(3); account = customer.getAccount(); / Perform some account transactionsSystem.out.println("Deposit 150.00: " + account.
28、deposit(150.00);System.out.println("Withdraw 750.00: " + account.withdraw(750.00);/ Print out the final account balanceSystem.out.println(" 客戶 " + customer.getLastName()+ ", " + customer.getFirstName()+ " 仍有余額 " + account.getBalance();6、運行TestBanking 程序其調(diào)試運行結(jié)果
29、如下所示:- 10 - / 18- 8 - / 18五、實驗小結(jié):1、能夠使用繼承和方法覆蓋創(chuàng)建子類,如 SavingsAccount 類和 CheckingAccount 類均繼承自 Account 類2、學(xué)會使用綜合使用面向?qū)ο蠹夹g(shù),根據(jù)現(xiàn)實問題抽象設(shè)計模擬銀行賬戶類,如透支款項,存取賬戶,共有財產(chǎn)等- 15 - / 18- 10 - / 18實驗三、使用接口和抽象類設(shè)計實驗一、實驗?zāi)康木毩?xí)使用抽象類和接口,并探究這些類組件的多態(tài)屬性。二、 實驗設(shè)備及環(huán)境裝有 JAVA 語言工具軟件(Netbeans IDE 6.5 ) 的計算機。三、實驗內(nèi)容創(chuàng)建一個來源于抽象類 Animal 的動物層次
30、。幾個動物類將實現(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、打開 Eclipsef新建 ProjectfExcerise22、依據(jù)書本上的UML類圖,得知接口Pet將實現(xiàn)Cat和Fish類中的方法,并且在該接口中應(yīng)當(dāng)聲明三個由 Public修飾的方法:getName, setName和Play,據(jù)此,得出接口 Pet 的代碼如下所示:pac
31、kage Execrise2;public interface Pet public void setName(String name);public String getName();public void play(); 3、創(chuàng)建Animal 類,要求聲明并初始化一個受保護的實例變量“l(fā)egs” ,來記錄動物腿的數(shù)目,同時應(yīng)當(dāng)抽象聲明方法“eat”和具體方法“ walk”,依據(jù)上述要求,實現(xiàn)代碼如下圖所示:package Execrise2;public abstract class Animal protected int legs;protected Animal(int legs)
32、this.legs = legs;public abstract void eat();/抽象方法eatpublic void walk() /具體方法walkSystem.out.println(" 這個動物用 " + legs + " 腿走路 ."); 4、創(chuàng)建Spider 類,要求 Spider 類繼承自 Animal 類,并且聲明一個構(gòu)造器和定以一個方法eat,其代碼如下圖所示:package Execrise2;public class Spider extends Animal public Spider() super(8); / 蜘蛛有八
33、只腿public void eat() /蜘蛛具體吃什么System.out.println(" 蜘蛛結(jié)網(wǎng)捕食飛行的昆蟲 .");5、創(chuàng)建Cat 類,要求能夠包含一個實例變量來存儲寵物的名字,同樣的,需要聲明一個構(gòu)造器來指明貓有多少條腿,并實現(xiàn)Pet 接口的方法,具體代碼如下:package Execrise2;public class Cat extends Animal implements Pet private String name; / 指定貓的名字public Cat(String name) super(4); = name;public
34、Cat() this("");/ 傳遞一個空字符串作為參數(shù)public void setName(String name) = name;public String getName() return name;public void play() /實現(xiàn)Pet 接口方法 playSystem.out.println(name + " 喜歡玩繩子.");public void eat() /實現(xiàn)Pet 接口方法 eatSystem.out.println(" 貓喜歡吃魚和老鼠.");6、創(chuàng)建Fish類,基本要求同 C
35、at類一樣,同時,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) = name;public String getName() return name;public void play() System.out.println(" 魚生活在水里.");
36、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 = new Spider();Pet p = new Cat();/演示接口的實現(xiàn)f.play();c.play();/演示虛擬方法的調(diào)用e.eat();e.walk();/演示調(diào)用超級方法 a.walk();8、調(diào)試運行結(jié)果如下所示:-
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 購銷合同貸款申請技巧分享
- 二年級品德與生活上冊 愛護我們的生活環(huán)境教案3 北師大版
- 八年級歷史上冊 第六單元 中華民族的抗日戰(zhàn)爭第18課 從九一八事變到西安事變教案 新人教版
- 2024-2025學(xué)年高中物理 第一章 機械振動 2 單擺教案 教科版選修3-4
- 2023四年級數(shù)學(xué)上冊 1 大數(shù)的認(rèn)識第5課時 將整萬數(shù)改寫成用“萬”作單位的數(shù)教案 新人教版
- 北京中南紅星足球?qū)W校九年級化學(xué)上冊 第三單元 課題1 分子和原子教學(xué)設(shè)計 (新版)新人教版
- 坐班合同協(xié)議書范本(2篇)
- 租的民房租房合同(2篇)
- 裝修管理費合同(2篇)
- 浮選 課件 演示
- 透水性材料施工技術(shù)方案
- 機械加工車間低壓配電系統(tǒng)及車間變電所設(shè)計【精選文檔】
- 危重患者護理質(zhì)量檢查月度分析總結(jié)
- 砌體結(jié)構(gòu)承載力計算
- 醫(yī)院科室質(zhì)量與安全管理記錄本精選
- 好餓的小蛇(繪本修改版)
- 4微笑著承受一切
- 叉車活塞連桿組的快速更換技巧
- 接種率監(jiān)測與評價ppt課件
- 高考物理試題庫-專題3.32-霍爾效應(yīng)(解析版)
- 債轉(zhuǎn)股驗資報告模板
評論
0/150
提交評論