資源描述:
《實(shí)驗(yàn)7面向?qū)ο缶幊?doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、利用面向抽象的編程思想,計(jì)算各種柱體的體積。右圖為該程序的UML類圖。編寫測(cè)試類PillarTest,輸出底為圓形、長(zhǎng)方形、三角形的柱體體積。(在實(shí)驗(yàn)3的基礎(chǔ)上修改)publicabstractclassGeometry{privatedoubler;Geometry(doubler){this.r=r;}//計(jì)算圓的面積publicdoublegetArea();}/***創(chuàng)建一個(gè)面向抽象類的的Pillar類**/publicclassPillar{privateGeometrygeometry;privatedoubleheight;Pillar(Geometr
2、ygeometry,doubleheight){this.geometry=geometry;this.height=height;}publicdoublegetVolumn(){returngeometry.getArea()*height;}}/***創(chuàng)建一個(gè)Geometry的子類Rectangle**/publicclassRectangleextendsGeometry{doublewidth;doubleheight;Rectangle(doublewidth,doubleheight){this.width=width;this.height=heig
3、ht;}@OverridepublicdoublegetArea(){returnwidth*height;}}/***創(chuàng)建一個(gè)Application計(jì)算柱體的體積**/publicclassApplication{publicstaticvoidmain(String[]args){Geometrygeometry=newRectangle(10.0,12.0);Pillarpillar=newPillar(geometry,12.0);doublevolumn=pillar.getVolumn();System.out.println("矩形底的柱體的體積:"+
4、volumn);}}要求有一個(gè)abstract類,類名為Employee。Employee的子類有YearWorker、MonthWorker和WeekWorker。
YearWorker對(duì)象按年薪領(lǐng)取薪水,MonthWorker按月領(lǐng)取薪水,WeekWorker按周領(lǐng)取薪水。
Employee類有一個(gè)abstract方法:Publicabstractearnings();子類必須重寫父類的earnings()方法,給出各自領(lǐng)取報(bào)酬的具體方式。
有一個(gè)Company類,該類用Employee數(shù)組作為成員,Employee數(shù)組的單元
5、可以是YearWorker對(duì)象的上轉(zhuǎn)型對(duì)象、MonthWorker對(duì)象的上轉(zhuǎn)型對(duì)象或WeekWorker對(duì)象的上轉(zhuǎn)型對(duì)象。程序能輸出Company對(duì)象一年需要支付的薪水總額。packagehomework;classCompany{Employee[]em;//Employee作為成員Company(Employee[]em){//構(gòu)造函數(shù)this.em=em;}publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubEmployee[]em=newEmployee[3];em[0]=newY
6、earWorker(1,12000.0);//上轉(zhuǎn)型對(duì)象em[1]=newMonthWorker(11,8000.0);em[2]=newWeekWorker(40,1200.0);Companycom=newCompany(em);doublesum;sum=em[0].earnings()+em[1].earnings()+em[2].earnings();System.out.println("總工資為:"+sum);}}abstractclassEmployee{abstractdoubleearnings();//抽象方法}classMonthWorker
7、extendsEmployee{intmonth;doublemonthSalary;MonthWorker(intm,doubles){month=m;monthSalary=s;}doubleearnings(){returnmonth*monthSalary;}}classWeekWorkerextendsEmployee{intweek;doubleweekSalary;WeekWorker(intw,doubles){week=w;weekSalary=s;}doubleearnings(){returnweek*weekSalary;}}classY