


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)4抽象類和接口【實(shí)驗(yàn)宗旨】每天做一點(diǎn)編程練習(xí)?!緦?shí)驗(yàn)?zāi)康摹?、學(xué)習(xí)和掌握J(rèn)ava抽象類的定義和使用。2、學(xué)習(xí)和掌握J(rèn)ava接口的定義和使用。3、進(jìn)一步學(xué)習(xí)和掌握通用程序設(shè)計(jì)方法?!緦?shí)驗(yàn)步驟(解題過程)】參見實(shí)驗(yàn)2?!緦?shí)驗(yàn)容】1、( CompareableCirlce 類)創(chuàng)建名為 CompareableCircle 類,它擴(kuò)展 Circle 類并 實(shí)現(xiàn)Compareable接口。畫出UM圖,實(shí)現(xiàn)compareTc方法,使其可以根據(jù)面積比 較兩個(gè)圓。編寫一個(gè)測試程序求出 CompareableCircle對象的兩個(gè)實(shí)例中的較大 者。說明:來源編程練習(xí)14.2 (P399)。java.lang
2、.Compareable 接口參見14.5 小節(jié)(P378)。Circle類的實(shí)現(xiàn),參見程序清單11.2 ( P303)?!緦?shí)驗(yàn)預(yù)習(xí)】1. 問題描述:該題描述的是創(chuàng)建一個(gè) CompareableCircle類來實(shí)現(xiàn)兩個(gè)圓的比 較。2. 創(chuàng)建兩個(gè)CompareableCircle類的實(shí)例,利用Comparable接口,并調(diào)用 ComparableMa方 法實(shí)現(xiàn)?!靖匠绦虼a】SuppressWar nin gs(" un checked") public class testCompareableCircle/主方法public static void main( Stri
3、ngargs) CompareableCircle C仁new CompareableCircle(10); CompareableCircle C2=new CompareableCircle(3);System.out.pri ntl n("Themax niumCircleis"+ComparableMax(C1,C2)+"的圓");/比較兩個(gè)圓的大小public static Comparable ComparableMax(Comparable C1,Comparable C2)if(CpareTo(C2)>0)return C1;els
4、e return C2;public class CompareableCircle exte nds Circle impleme nts Comparable/建立個(gè)指定半徑的圓CompareableCircle(double radius)super(radius);/Comparable 接口的方法 public int compareTo(Object o) if(getArea()>(CompareableCircle)o).getArea() return 1;else if(getArea()v(CompareableCircle)o).getArea() return
5、-1;else return 0;public class Circle exte nds GeometricObject1 private double radius;public Circle() public Circle(double radius) this.radius = radius;/返回半徑public double getRadius() return radius;/設(shè)置一個(gè)新的半徑public void setRadius(double radius) this.radius = radius;/返回圓的面積public double getArea() retur
6、n radius * radius * Math.PI;/返回圓的直徑public double getDiameter() retur n 2 * radius;/返回圓的周長public double getPerimeter() return 2 * radius * Math.PI;/打印圓的信息public Stri ng toStri ng() retur n "created in" + getDateCreated() + "and the radius is " + radius;【Um圖】【實(shí)驗(yàn)過程及運(yùn)行結(jié)果】E豈匡員:ndovjs
7、.system 521|cmd.e>:e最天朗圓為inThu May 2?CST 201-1 aridralius is 10.e£區(qū)LJI在運(yùn)行過程中遇到的錯(cuò)誤是,在寫ComparableMaX方法時(shí),我寫的返回值是ComparableCircle 類型。應(yīng)該返回值的類型是Comparable類型。這樣直接調(diào)用了它的ToString方法。2、(將Circle類變成可比較的)改寫程序清單11-2(P303)中的Circle類,它擴(kuò) 展G eometricObject 類(程序清單 14-1 (P371),并實(shí)現(xiàn)Compareable接口。覆蓋Object類中的equals方法。
8、當(dāng)兩個(gè)Circle對象所 表示的圓的半徑相等時(shí),則這兩個(gè)對象是相同的。畫出包括Circle、 GeometricObject和Compareble的UM圖。編寫測試程序,判斷兩個(gè)圓是否相同。如果不同,按照練習(xí)1的思路,比較兩個(gè)圓對象的大小。(來源:編程練習(xí)14.5 (P399)?!緦?shí)驗(yàn)預(yù)習(xí)】1問題描述:創(chuàng)建Circle類,比較兩個(gè)圓的大小。2.創(chuàng)建兩個(gè)Circle類的實(shí)例,調(diào)用CompareT方法和equals方法,比較兩個(gè)圓的 大小。【附程序代碼】public class testCircle2public static void main( Stri ngargs)Circle1 C1=
9、new Circle1 (2);/建立一個(gè)半徑為 2的圓Circle1 C2=new Circle1 (3);/建立一個(gè)半徑為 3的圓System.out.pri ntln( C1.equals(C2);System.out.pri ntln (CpareTo(C2);public class Circle1 extends GeometricObject implements Comparableprivate double radius;public Circle1() public Circle1(double radius) this.radius = radius;/返回半徑publ
10、ic double getRadius() return radius;/設(shè)置一個(gè)新的半徑public void setRadius(double radius) this.radius = radius;/返回圓的面積public double getArea() retur n radius * radius * Math.PI;/返回圓的直徑public double getDiameter() retur n 2 * radius;/返回圓的周長public double getPerimeter() return 2 * radius * Math.PI;/打印圓的信息public
11、Stri ng toStri ng() retur n "created in" + getDateCreated() +"and the radius is " + radius;/Comparable 接口的方法public int compareTo(Object o) if (this.getArea() > (Circle1)o).getArea() return 1;else if (this.getArea() < (Circle1)o).getArea() return -1;elsereturn 0;ode/覆蓋Object
12、中的equals方法public boolea n equals(Object o) retur n this.getArea() = (Circle1)o).getArea(); 【UM圖】domUt 9>nv 恥匸 s«*i對6*: Won*6*tAf«C: doubWsrrpQrt甸亡【實(shí)驗(yàn)過程與運(yùn)行結(jié)果】1 “啓沁獲総懐魏觀泌熒避陸ISH 苣理員;C:Wi n dov*fssystem 3 2cmd. eKeu回霽E: XjavaJ和多態(tài)>jaua testCircle2 False-1E:jauax4ft和多jS>color f0 半二4 L _
13、 PH卜LJ在實(shí)驗(yàn)過程中,不會編寫equals的覆蓋方法。解決方法:應(yīng)該是寫成;public boolea n equals(Object o) retur n this.getArea() = (Circle1)o).getArea();3、(求幾何對象的面積之和)編寫一個(gè)方法,求數(shù)組中所有幾何對象的面積之和。 方法簽名如下:public static double sumArea(GeometricObject a)編寫測試程序,創(chuàng)建4個(gè)對象(兩個(gè)圓形和兩個(gè)矩形)的數(shù)組,然后使用 sumArea 方法求它們的總面積。說明:來源:編程練習(xí)14.8 ( P4O0 ;分別實(shí)現(xiàn)Geometric
14、Object類(程序 清單 14-1( P372)、Rectangle 類(程序清單 11-3(P305)和Circle 類(程序清單 11-2 (P303);建立 GeometricObject 類層次結(jié)構(gòu)(圖 14-2 ( P372) 【附程序代碼】public class Areapublic static void main( Stri ng args) new Area();public Area() GeometricObject a = new Circle(5), new Circle(6), new Rectangle(2, 3), new Rectangle(2, 3);S
15、ystem.out.pri ntl n("The total area is " + sumArea(a);public static double sumArea(GeometricObject a) double sum = 0;for (int i = 0; i < a.len gth; i+)sum += ai.getArea();return sum;/矩形類class Recta ngle exte nds GeometricObject private double width;private double height;/創(chuàng)建一個(gè)指定長和寬的矩形pub
16、lic Recta ngle(double width, double height) this.width = width;this.height = height;/返回矩形的寬public double getWidth() return width;/設(shè)定矩形的寬public void setWidth(double width) this.width = width;/返回舉矩形的高public double getHeight() retur n height;/設(shè)定矩形的高public void setHeight(double height) this.height = hei
17、ght;/返回矩形面積public double getArea() return width*height;/求矩形的周長public double getPerimeter() return 2*(width + height);/ 覆蓋equals方法public boolea n equals(Recta ngle recta ngle) return (width = recta ngle.getWidth() && (height = recta ngle.getHeight();/返回基本信息public Stri ng toStri ng() retur n &
18、quot;Recta ngle width = " + width +"and height = " + height;【運(yùn)行結(jié)果】【思考題】1、練習(xí)1和練習(xí)2中,使用了不同的方法建立了可比較的 Circle類。結(jié)合編程實(shí)現(xiàn),說說你對不同設(shè)計(jì)方案的想法和體會。利用不同的設(shè)計(jì)方案可易于解決不同的實(shí)際問題。2、 練習(xí)3中,如果將方法sumArea的參數(shù)數(shù)組定義為Cirlce,可以實(shí)現(xiàn)相應(yīng) 的功能嗎?定義為 Object呢?為什么?結(jié)合本題,說說你對通用程序設(shè)計(jì)的 理解。前者不可以,后者可以。編程就是讓計(jì)算機(jī)為解決某個(gè)問題而使用某種程序設(shè)計(jì) 語言編寫程序代碼,并最終得到結(jié)果的過程。為了使計(jì)算機(jī)能夠理解人的意圖, 人類就必須要將需解決的問題的思路、方法、和手段通過計(jì)算機(jī)能夠理解的形式 告訴計(jì)算機(jī),使得計(jì)算機(jī)能夠根據(jù)人的指令一步一步去工作,完成某種特定的任務(wù)。3、說說抽象類和接口的相同
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司禮儀提升活動方案
- 公司端午節(jié)文體活動方案
- 公司文匯活動方案
- 公司留深過年活動方案
- 公司活動設(shè)計(jì)策劃方案
- 公司組織公益活動方案
- 公司組織建設(shè)活動方案
- 公司百人活動策劃方案
- 公司搞運(yùn)動會活動方案
- 公司福利娛樂活動方案
- 國開經(jīng)濟(jì)學(xué)(本)1-14章練習(xí)試題及答案
- 外墻雙排腳手架搭設(shè)施工方案
- 婦科急診常見病的課件
- 2022年呼倫貝爾職業(yè)技術(shù)學(xué)院輔導(dǎo)員招聘筆試題庫及答案解析
- 綠電制綠氫及其綜合利用技術(shù)PPT
- 各類安全事故案例圖片合集
- 婚姻家庭咨詢師考試復(fù)習(xí)提綱
- 上海市學(xué)生健康促進(jìn)工程實(shí)施方案
- 實(shí)驗(yàn)室CNAS評審常見問題精編要點(diǎn)
- 通信管道施工三級-安全技術(shù)交底記錄表
- 橋梁荷載試驗(yàn)
評論
0/150
提交評論