北京信息科技大學(xué)Java語言程序設(shè)計類和對象_第1頁
北京信息科技大學(xué)Java語言程序設(shè)計類和對象_第2頁
北京信息科技大學(xué)Java語言程序設(shè)計類和對象_第3頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗名稱】實驗 2 類和對象 【實驗?zāi)康摹?、學(xué)習(xí)和掌握J(rèn)ava創(chuàng)建對象的方法。2、學(xué)習(xí)和掌握通過創(chuàng)建對象、使用類的方法。3、學(xué)習(xí)和掌握J(rèn)ava類定義的方法。4、了解類設(shè)計的一般原則。【實驗內(nèi)容】1、(Java API類的應(yīng)用)使用類,創(chuàng)建種子是1000 的Ran dor對象,然后使用n extl nt(1OO)方法顯示0到100之間前50個隨 機整數(shù)。說明:題目來源編程練習(xí)8.4( P238)。請查閱JavaAPI文檔,了 解的功能和使用方法。【實驗預(yù)習(xí)】1、輸出0-100之間的 50個隨機整數(shù)。2、建立種子為1000的random對象,返回0-100之間的隨機整數(shù)型 值,再輸出這些值。3、

2、技術(shù)支持:用了 類,及循環(huán)語句?!靖剑撼绦虼a】public class RandomProgrampublic static void main(Stringargs)/以1000構(gòu)造random對象/輸出0-100內(nèi)的50個隨機整型值for(int i=0;i<50;i+)【實驗過程及結(jié)果記錄】在實驗中遇到的問題:忘記寫特定種子,這樣使用的就是當(dāng)前時間作為種子構(gòu)造random對象。2、(使用StackOfIntegers類,顯示素數(shù)因子)編寫一個程序,提示 用戶輸入一個正整數(shù),然后以降序顯示它的所有最小因子。例如:如 果整數(shù)為120,那么顯示的最小因子為5、3、2、2、2。使用Sta

3、ckOfIntegers類存儲因子(如:2、2、2、3、5),獲取之后按倒 序顯示這些因子。說明:題目來源編程練習(xí)10.5( P296)。StackOfIntegers類實現(xiàn),參見10.9 “堆棧類設(shè)計”、類圖10-11(P288)。求素數(shù)因子算法, 參考編程練習(xí)4.16( P117)?!緦嶒烆A(yù)習(xí)】1. 輸出一個正整數(shù)的所有素數(shù)因子。2. 輸入:用 scanner 輸入一個正整數(shù)。處理:當(dāng)改正整數(shù)能被 2以上整除時,將除數(shù)放入棧中,商賦給除數(shù),否則除數(shù)加 1,循環(huán)上述步驟,知道被除數(shù)為 1停止。 輸出:將棧中的數(shù)一次輸出。3:技術(shù)支持:創(chuàng)建了 StackOfIntegers 類,使用了堆棧類設(shè)

4、計方法, 使用了循環(huán)語句,條件語句,輸出語句等。【附:程序代碼】public class testStacksOfIntegerspublic static void main(String args) / 創(chuàng)建 StacksOfIntegers 類StackOfIntegers stack = new StackOfIntegers();/ 輸入一個正整數(shù)Scanner input=new Scanner(System.in);int limit=input.nextInt();int k,s,i=2;s=limit;/ 判斷除數(shù)是否為該整數(shù)的素數(shù)因子dok= s%i;if(k=0)s=s/

5、i;stack.push(i);elsei+;while(s!=1);/ 輸出棧中的數(shù),即素數(shù)因子while (!stack.empty()+ " ");/ 創(chuàng)建 StacksOfIntegers 類Public class StackOfIntegers private int elements;private int size;public static final int DEFAULT_CAPACITY = 16;/ 構(gòu)建一個默認(rèn)容量為 16的空棧public StackOfIntegers() this(DEFAULT_CAPACITY);/ 構(gòu)建一個指定容量的空

6、棧public StackOfIntegers(int capacity) elements = new intcapacity;/ 將一個整數(shù)存儲到棧頂public void push(int value) if (size >= elements.length) int temp = new intelements.length * 2;temp, 0,System.arraycopy(elements, 0, elements.length);elements = temp;elementssize+ = value;/ 刪除棧頂?shù)恼麛?shù)并返回它public int pop() re

7、turn elements-size;/ 返回棧頂?shù)恼麛?shù)而不從棧中刪除該數(shù)public int peek() return elementssize - 1;/ 如果棧為空則返回 truepublic boolean empty() retur n size = 0;/返回棧中元素個數(shù)public int getSize() retur n size;【實驗過程及結(jié)果記錄】在實驗中遇到的問題:在實驗開始時不會使用堆棧類設(shè)計方法,經(jīng)過看書上例題,學(xué)會了如何使用。3、(風(fēng)扇類Fan的應(yīng)用和實現(xiàn))根據(jù)編程練習(xí)8.8( P239)的描述,第 一步,請畫出風(fēng)扇Fan類的UM類圖。第二步,編寫一個測試程序

8、(Fan 類應(yīng)用),創(chuàng)建兩個Fan對象,用第一個Fan對象表示“最大速度 運轉(zhuǎn)、半徑為10、顏色為黃色、處于打開狀態(tài)”的風(fēng)扇;用第二個 Fan對象表示“中等速度運轉(zhuǎn)、半徑為5、顏色為藍(lán)色、處于關(guān)閉狀態(tài)” 的風(fēng)扇;通過調(diào)用toString()方法顯示這些風(fēng)扇的屬性信息。 程序 可以TestFan.java中。第三步,實現(xiàn)風(fēng)扇類Fan,可以編寫在Fan.java 文件中。第四步,編譯運行該程序?!緦嶒烆A(yù)習(xí)】1. 通過創(chuàng)建Fan類,輸出一個風(fēng)扇的自身屬性2. 構(gòu)建一個風(fēng)扇類,構(gòu)建特殊實例,通過調(diào)用其中的方法,顯示該 實例的屬性。3. 技術(shù)支持:構(gòu)建風(fēng)扇類,使用了構(gòu)造方法、一般方法,訪問器, 修改器。

9、使用了輸出語句等。4. 實驗步驟:畫出uml圖,構(gòu)建風(fēng)扇類,再寫出main方法?!綰M圖】4SLCIW: int = 1+MED1UM: int 二 2-H=AST; int = 3-speed: int = 1 -on: boclMn = false -radu&: doubly = 5 -color: 5trTig = blue4ei£peed0! int +5etSpeedne7-.'Speed: int); void -HsOnQ: boolean-4-setOn(newStatus: boolean): void-t-ge(Radius0: double-l

10、-setRadnewRadius: double): double -1-getCDlDrO! string肝亡tCobrfne'zColor; string); string +toStringQ: void【附:程序代碼】public class Fan Program/主方法public static void main( Stri ngargs)/創(chuàng)建一個Fan對象,其設(shè)置為最大風(fēng)速、半徑為10、顏色為yellow、 狀態(tài)為打開。Fan fan1=new Fan();fan1.setSpeed(Fan.FAST); fan1.setRadius(10);fan1.setColo

11、r("yellow"); fan1.setOn(true);/ 輸出該實例對象的屬性 / 創(chuàng)建一個對象,其設(shè)置為中等風(fēng)速、半徑為 5、顏色為 blue 、狀態(tài) 為關(guān)閉。Fan fan2=new Fan();fan2.setSpeed(Fan.MEDIUM); fan2.setRadius(5);fan2.setColor("blue"); fan2.setOn(false);/ 輸出該實例對象的屬性/ 創(chuàng)建一個風(fēng)扇類Public class Fanfinal static int SLOW=1;final static int MEDIUM=2;fina

12、l static int FAST=3;private int speed=1;private boolean on=false;private double radius=5;private String color="blue"/ 風(fēng)扇類的無參構(gòu)造方法Fan()/ 返回這個風(fēng)扇類的風(fēng)速public int getSpeed()return speed;/ 設(shè)置這個風(fēng)扇的新風(fēng)速public void setSpeed(int newSpeed) speed=newSpeed;/ 返回這個風(fēng)扇的狀態(tài)public boolean isOn()return on;/ 設(shè)置這個風(fēng)

13、扇的新的狀態(tài)public void setOn(boolean newSpeed)on=newSpeed;/ 返回這個風(fēng)扇的半徑public double getRadius()return radius;/ 設(shè)置這個風(fēng)扇的新的半徑public void setRadius(double newRadius) radius=newRadius;/ 返回這個風(fēng)扇的顏色public String getColor()return color;/ 設(shè)置這個風(fēng)扇的新的顏色public void setColor(String newColor)color=newColor;/ 返回描述風(fēng)扇的字符串pu

14、blic String toString()return "speed "+speed+"n"+"color "+color+"n"+"radius "+radius+"n"+(on) ? "fan is on" : " fan is off");【實驗過程及結(jié)果記錄】在實驗中遇到的問題:在用toString時,使用了選擇運算符,簡化代 碼。用if語句,比較長。4. (tax類的應(yīng)用和實現(xiàn))根據(jù)編程練習(xí)10.8( P297)的描述,使用

15、 和實現(xiàn)Tax類,計算繳納的稅款額。第一步,畫出 Tax類的UM圖。第 二步,編寫一個測試程序,使用 Tax類,對所給4種納稅人打印2009 年的稅款表(2009稅率表參見表2),可征稅收入范圍在50,00060,000 美元之間,間隔為1000美元。第三步,實現(xiàn)Tax類。第四步,編譯、運行該程序?!緦嶒烆A(yù)習(xí)】1. 通過創(chuàng)建Tax類,輸出一個Tax的自身屬性2. 構(gòu)建一個Tax類,構(gòu)建特殊實例,通過調(diào)用其中的方法,計算稅款。3. 技術(shù)支持:構(gòu)建Tax類,使用了構(gòu)造方法、一般方法,訪問器,修改器。使用了輸出語句等。4. 實驗步驟:畫出uml圖,構(gòu)建Tax類,再寫出main方法?!綰M圖】Tax+

16、SINGUE_FILER: rt = 1+MARRIEDJOINTTLY; int = 2+MARRIED_SEPARATLr; int = 3+HEAD0F_H0U5EH0LD! int =斗-fiingStatuSn int = 1-bradets: objettO -rates: objecttaxa Wein come: int+TaxQ-FTaxtfiiingStatus: double, brackets: objectQjrates obj&ctQ) +setEradcet5(brackets: cjectCI ;: void+setRatESrates; atjject

17、Q): '.'okJ-letTax ablel ncome 0: double +5etraxblelncome(tdxablelncome: double): void -bgetFilrigStstusO1 int45etFilwigStatustfilingStatus: intj: void+findTaKL 0: double【附:程序代碼】public class taxProgram /主方法public static void main(String args) in t bracketsFor2009 = 6000,27950, 67700, 141250,

18、307050, / Single filer12000,46700, 112850, 171950, 307050, / marriedfili ng joi ntly6000,23350,56425, 85975,153525,/ marriedfili ng separately10000,37450, 96700, 156600, 307050 / head ofhouseholddouble ratesFor2009 = 0.1, 0.15, 0.27, 0.30, 0.35, 0.386;Tax taxFor2009 = new Tax(0, bracketsFor2009, rat

19、esFor2009, 50000);for (int taxableIncome = 50000; taxableIncome <= 60000; taxableIncome += 1000) taxFor2009.setTaxableIncome(taxableIncome); taxFor2009.setFilingStatus(0);int taxForStatus0 = (int)taxFor2009.findTax(); taxFor2009.setFilingStatus(1);int taxForStatus1 = (int)taxFor2009.findTax(); ta

20、xFor2009.setFilingStatus(2);int taxForStatus2 = (int)taxFor2009.findTax(); taxFor2009.setFilingStatus(3);int taxForStatus3 = (int)taxFor2009.findTax();"t"taxForStatus0 + "t" +taxForStatus1 + "t" + taxForStatus2 + "t" +taxForStatus3);/創(chuàng)建Tax類Public class Tax pub

21、lic final static int SINGLE_FILER = 1;public final static int MARRIED_JOINTLY = 2;public final static int MARRIED_SEPARATELY = 3;public final static int HEAD_OF_HOUSEHOLD = 4;private int filingStatus = SINGLE_FILER;private int brackets = 6000, 27950, 67700, 141250, 307050, / Single filer12000 , 4670

22、0, 112850, 171950, 307050, / married filing jointly6000,23350, 56425, 85975, 153525,/ marriedfiling separately10000,37450, 96700, 156600, 307050 / head ofhouseholdprivate double rates = 0.1, 0.15, 0.27, 0.30, 0.35,0.386;private double taxableIncome = 100000;/ 構(gòu)建一個默認(rèn)的稅款對象public Tax() / 構(gòu)建一個制定納稅人類型,收入

23、及稅率的稅款對象public Tax(int filingStatus, int brackets, double rates,double taxableIncome) this.filingStatus = filingStatus; this.brackets = brackets;this.rates = rates;this.taxableIncome = taxableIncome;/ 設(shè)置這個對象的收入范圍public void setBrackets(int brackets) this.brackets = brackets;/ 設(shè)置稅率public void setRate

24、s(double rates) this.rates = rates;/ 返回稅款對象的收入public double getTaxableIncome() return taxableIncome;設(shè)置稅款對象的收入public void setTaxableIncome(double taxableIncome) this.taxableIncome = taxableIncome;/ 返回納稅人所屬類型public int getFilingStatus() return filingStatus;/ 設(shè)置納稅人所屬類型public void setFilingStatus(int filingStatus) this.filingStatus = filingStatus;/ 計算稅款,并返回稅款值public double findTax() double tax = 0;if (taxableIncome <= bracketsfilingStatus0)return tax = taxableIncome * rates

溫馨提示

  • 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

提交評論