實(shí)驗(yàn)4-面向?qū)ο蠡A(chǔ)_第1頁
實(shí)驗(yàn)4-面向?qū)ο蠡A(chǔ)_第2頁
實(shí)驗(yàn)4-面向?qū)ο蠡A(chǔ)_第3頁
實(shí)驗(yàn)4-面向?qū)ο蠡A(chǔ)_第4頁
實(shí)驗(yàn)4-面向?qū)ο蠡A(chǔ)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

/xxxxx大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院實(shí)驗(yàn)報(bào)告姓名學(xué)號專業(yè)班級課程名稱Java實(shí)驗(yàn)實(shí)驗(yàn)日期成績指導(dǎo)教師批改日期實(shí)驗(yàn)名稱實(shí)驗(yàn)4面向?qū)ο蠡A(chǔ)一.實(shí)驗(yàn)?zāi)康模海ǎ保┱莆疹惖亩x、類的實(shí)例化方法;(2)掌握類中的靜態(tài)變量和靜態(tài)方法的使用;(3)掌握使用類的構(gòu)造方法對對象的數(shù)據(jù)域進(jìn)行初始化;(4)掌握getter和setter的使用;二.實(shí)驗(yàn)內(nèi)容(1)現(xiàn)在要求設(shè)計(jì)一個(gè)表示學(xué)生的類,里面有學(xué)生的姓名、學(xué)號、年齡,還要有三項(xiàng)成績:計(jì)算機(jī)成績、數(shù)學(xué)成績、英語成績,要求可以求總分、平均分、最高、最低分,并且可以輸出一個(gè)學(xué)生的完整信息,請?jiān)O(shè)計(jì)此類。提示:程序開發(fā)步驟根據(jù)需求定義出所要的類;根據(jù)題目中的要求規(guī)劃出類的屬性;所有的屬性必須封裝:private;所有的屬性必須通過getter和setter訪問;如果需要增加構(gòu)造方法,為屬性賦初值,適當(dāng)采用構(gòu)造方法重載;所有的信息不要類中直接輸出,而是交給調(diào)用處輸出,即在該類中盡量不出現(xiàn)System.out.println()語句.例如在調(diào)用類中輸出如下結(jié)果:總分:267.705平均分:89。23333333333335最高分:91.4最低分:87.3學(xué)生信息: |-學(xué)號:100?|-姓名:John?|-年齡:20?|-英語:89。0 |—計(jì)算機(jī):87.3?|-數(shù)學(xué):91.4程序代碼:packaget4;importjava.util.*;importorg。omg.CORBA.portable。ValueOutputStream;publicclassLX4_1{?publicstaticvoidmain(String[]args){? Studentstudent1=newStudent();? Scannerinput=newScanner(System。in); System。out。println("請輸入學(xué)生姓名:”);??student1.setName(input.next()); System.out.println(”請輸入學(xué)號:");??student1.setStudentNumber(input。nextInt()); ?System.out.println("請輸入年齡:”); ?student1。setAge(input.nextInt());??System。out.println("請輸入英語成績:");? student1。setEnglishGrade(input.nextDouble()); ?System.out。println(”請輸入電腦成績:");? student1.setComputerGrade(input。nextDouble()); ?System.out.println("請輸入數(shù)學(xué)成績:”);? student1。setMat(yī)hGrade(input。nextDouble());? printInformat(yī)ions(student1); }?publicstaticvoidprintInformat(yī)ions(Students1){ ?System。out.printf(”總分:%3。2f\n",Double。parseDouble(String。valueOf(s1。sumGrade())));??System。out.printf("平均分:%3.2f\n”,Double.parseDouble(String。valueOf(s1。avgGrade())));??System。out。println("最高分:”+Double.parseDouble(String.valueOf(s1。maxGrade())));??System.out.println(”最低分:”+Double。parseDouble(String。valueOf(s1.minGrade()))); System.out。println("學(xué)生信息:");? System。out.println("學(xué)號:"+s1.getStudentNumber()); ?System.out.println("姓名"+s1.getName()); ?System。out.println("年齡”+s1。getAge()); ?System。out.println(”英語成績:"+s1。getEnglishGrade()); System。out.println("電腦成績:"+s1.getComputerGrade());? System.out.println(”數(shù)學(xué)成績:"+s1.getMat(yī)hGrade()); }}classStudent{ privateintstudentNumber; privat(yī)eStringname;?privateintage; privatedoubleenglishGrade;?privatedoublecomputerGrade; privatedoublemat(yī)hGrade; voidsetStudentNumber(intnumber){ studentNumber=number; ?} intgetStudentNumber(){ returnstudentNumber;??}?voidsetName(Stringnm){ ?name=nm; }?StringgetName(){ returnname;?} voidsetAge(intage1){??age=age1; } intgetAge(){ ?returnage;?}?voidsetEnglishGrade(doublegrade){? englishGrade=grade; } doublegetEnglishGrade(){? returnenglishGrade; }?voidsetComputerGrade(doublegrade){ ?computerGrade=grade; }?doublegetComputerGrade(){? returncomputerGrade; }?voidsetMathGrade(doublegrade){? mathGrade=grade;?}?doublegetMathGrade(){??returnmathGrade;?}?doublemaxGrade(){? doublemax; max=englishGrade;? if(max<computerGrade) ?max=computerGrade; if(max<mat(yī)hGrade) ? max=mathGrade;??returnmax;?} doubleminGrade(){ doublemin;??min=englishGrade; ?if(min>computerGrade) min=computerGrade;? if(min〉mathGrade)? ?min=mathGrade; returnmin; }?doublesumGrade(){ ?doublesum;??sum=englishGrade+computerGrade+mathGrade;? returnsum; }?doubleavgGrade(){ ?doubleave;??ave=(sumGrade())/3;??returnave;?}}運(yùn)行結(jié)果貼圖:(二)1、設(shè)計(jì)類來描述真實(shí)客觀世界中的事物,使用類的成員變量來表示事物的屬性和狀態(tài),使用類的成員方法來提供對成員變量的訪問或修改程序功能:設(shè)計(jì)一個(gè)用來描述汽車的類,使用類的非靜態(tài)成員變量來表示汽車的車主姓名、當(dāng)前的速率和當(dāng)前方向盤的轉(zhuǎn)向角度,使用類的非靜態(tài)成員方法來表示改變汽車的速率和停車兩個(gè)操作.程序源代碼如下,補(bǔ)全橫線上的程序代碼。packaget4;publicclassCar{ privateStringownerName;//車主姓名?privatefloatcurSpeed;//當(dāng)前車速?privatefloatcurDirInDegree;//當(dāng)前方向盤轉(zhuǎn)向角度 publicCar(StringownerName){ ?this.ownerName=ownerName; } publicCar(StringownerName,float(yī)speed,floatdirInDegree){ this(ownerName);//調(diào)用上面那個(gè)構(gòu)造函數(shù)為ownerName賦值?curSpeed=speed; curDirInDegree=dirInDegree(cuò); }?publicStringgetOwnerName(){//提供對車主姓名的訪問 returnownerName;?}?publicfloatgetCurDirInDegree(){//提供對當(dāng)前方向盤轉(zhuǎn)向角度的訪問 returncurDirInDegree;?} publicfloat(yī)getCurSpeed(){//提供對當(dāng)前車速的訪問 returncurSpeed;?}?publicvoidchangeSpeed(float(yī)curSpeed){//提供改變當(dāng)前的車速??this。curSpeed=curSpeed;?}?publicvoidstop(){//提供停車?curSpee(cuò)d=0;?} }主方法:packaget4;importjava.util。*;publicclassLX4_2{ publicstat(yī)icvoidmain(String[]args){ ?Scannerinput=newScanner(System。in);? System.out.println(”請輸入車主姓名、車速和方向盤角度:”); Carcar1=newCar(input.next(),input。nextFloat(),input。nextFloat(yī)());??//TODO自動(dòng)生成的方法存根System.out.println("車主姓名:"+car1.getOwnerName());System.out.println(”當(dāng)前車速:”+car1.getCurSpeed());System。out.println(”當(dāng)前方向盤角度:"+car1.getCurDirInDegree(cuò)());System.out。println("修改車速:");System。out。println("請輸入新的車速:”);car1.changeSpee(cuò)d(input.nextFloat());System。out.println("當(dāng)前車速:”+car1.getCurSpeed());System.out.println("停車:”);car1。stop();System.out.println("當(dāng)前車速:”+car1。getCurSpeed()); }}編寫一個(gè)主方法,編譯并測試源程序.2、創(chuàng)建類的對象,使用對象的方法(類的非靜態(tài)方法)來訪問或修改對象的變量(類的非靜態(tài)變量)創(chuàng)建類Car的對象,在調(diào)用類的構(gòu)造函數(shù)時(shí)指定對象的變量的初始值,以后再使用對象的方法來訪問或修改對象的變量的值.程序代碼如下(需要添加代碼,要求運(yùn)行結(jié)果如下圖所示。packaget4;publicclassLX4_3{?publicstaticvoidmain(String[]args){ Carcar=newCar("成龍”,200f,25f);? System。out。println("車主姓名:”+car。getOwnerName());??System。out.println(”當(dāng)前車速:"+car.getCurSpee(cuò)d());??System.out.println(”當(dāng)前方向盤角度:"+car.getCurDirInDegree()); ?System。out.printf("在調(diào)用changeSpeed(80)后,車速變?yōu)?”);? car。changeSpee(cuò)d(80);? System.out.println(car。getCurSpeed()); System。out.printf("在調(diào)用stop()后,車速變?yōu)?"); car.stop();? System.out.println(car.getCurSpeed());?}}編譯并運(yùn)行,結(jié)果如圖所示。車主姓名:成龍車主姓名:成龍當(dāng)前車速:200.0當(dāng)前轉(zhuǎn)向角度:25.0在調(diào)用changeSpeed(80)后,車速變?yōu)?80.0在調(diào)用stop()后,車速變?yōu)?0.0(三)(賬戶類Account)設(shè)計(jì)一個(gè)名為Account的類,它包括:●一個(gè)名為id的int類型私有賬戶數(shù)據(jù)域(默認(rèn)值為0)。●一個(gè)名為balance的double類型私有賬戶數(shù)據(jù)域(默認(rèn)值為0)?!褚粋€(gè)名為annualInterestRate的double類型私有數(shù)據(jù)域存儲(chǔ)當(dāng)前利率(默認(rèn)值為0)。假設(shè)所有的賬戶都有相同的利率?!褚粋€(gè)名為dateCreated的Dat(yī)e類型私有數(shù)據(jù)域存儲(chǔ)賬戶的開戶日期?!褚粋€(gè)能創(chuàng)建默認(rèn)賬戶的無參構(gòu)造方法。●一個(gè)能創(chuàng)建帶特定id和初始余額的賬戶的構(gòu)造方法?!瘢椋?、balance和annualInterestRate的訪問器和修改器。●dateCreated的訪問器?!褚粋€(gè)名為getMonthlyInterestRat(yī)e()的方法返回月利率?!褚粋€(gè)名為withDraw的方法從賬戶提取特定數(shù)額?!褚粋€(gè)名為deposit的方法向賬戶存儲(chǔ)特定數(shù)額.實(shí)現(xiàn)這個(gè)類.編寫一個(gè)測試程序,創(chuàng)建一個(gè)賬戶ID為1122、余額為20000美元、年利率為4.5%的Account對象.使用withdraw方法取款2500美元,使用deposit方法存款3000美元,然后打印余額、月利率以及這個(gè)賬戶的開戶日期。程序代碼:packaget4;importjava。util。*;publicclassLX4_4{ publicstat(yī)icvoidmain(String[]args){? Accountaccount=newAccount(1122,20000);??account.setAnnualInterestRate(4.5); ?account。withDraw(2500); ?account.desposit(3000); print(account);?}?publicstaticvoidprint(Accountac1){ System.out.println("余額為:"+ac1.getBalance());??System.out.println("月利率:"+ac1。getAnnualInterestRate()/12*100?? ?+”%”); ?System.out。println("開戶日期:”+ac1。getDat(yī)eCreat());?}}packaget4;importjava.util。*;publicclassAccount{?privateintid; privatedoublebalance; privat(yī)estaticdoubleannualInterestRat(yī)e; privateDatedateCreated; Account(){??id=id+1; this.balance=0; dateCreated=newDate(); } Account(intid,doublebalance){??this。id=id;? this.balance=balance;??dateCreated=newDate(); }?publicintgetId(){ returnid; } publicvoidsetId(intid){??this.id=id; }?publicdoublegetBalance(){? returnbalance; }?publicvoidsetBalance(doublebalance){? this。balance=balance; } publicdoublegetAnnualInterestRat(yī)e(){? returnannualInterestRate;?}?publicvoidsetAnnualInterestRate(doublean){ ?annualInterestRate=an/100;?} publicDat(yī)egetDateCreat(){? returndateCreat(yī)ed; }?publicdoublegetMonthlyInterestRat(yī)e(){? returnannualInterestRate/12; } publicvoidwithDraw(doubledraw){ ?doublea=this.getBalance()-draw; ?this.setBalance(a);?}?publicvoiddesposit(doubledep){??doublea=this。getBalance()+dep; this。setBalance(a);?}}運(yùn)行結(jié)果貼圖:(三)(風(fēng)扇類Fan)設(shè)計(jì)一個(gè)名為Fan的類來表示一個(gè)風(fēng)扇。這個(gè)類包括:三個(gè)名為SLOW、MEDIUM、FAST而值是1、2和3的常量表示風(fēng)扇的速度。一個(gè)名為speed的int類型私有數(shù)據(jù)域表示風(fēng)扇的速度(默認(rèn)值為SLOW).一個(gè)名為on的boolean類型的私有數(shù)據(jù)域表示風(fēng)扇是否打開(默認(rèn)值為false)。一個(gè)名為radius的double類型的私有數(shù)據(jù)域表示風(fēng)扇的半徑(默認(rèn)值為5).一個(gè)名為color的String類型的數(shù)據(jù)域表示風(fēng)扇的顏色(默認(rèn)值為blue).這四個(gè)數(shù)據(jù)域的訪問器和修改器。一個(gè)創(chuàng)建默認(rèn)風(fēng)扇的無參構(gòu)造方法.一個(gè)名為toString()的方法返回描述風(fēng)扇的字符串。如果風(fēng)扇是打開的,那么該方法在一個(gè)組合的字符串中返回風(fēng)扇的速度、顏色和半徑。如果風(fēng)扇沒有打開,該方法就返回一個(gè)由“fanisoff”和風(fēng)扇顏色及半徑組合成的字符串.實(shí)現(xiàn)這個(gè)類.編寫一個(gè)測試程序,創(chuàng)建兩個(gè)fan對象。將第一個(gè)對象設(shè)置為最大速度、半徑為10、顏色為yellow、狀態(tài)為打開。將第二個(gè)對象設(shè)置為中等速度、半徑為5、顏色為blue、狀態(tài)為關(guān)閉。通過調(diào)用它們的toString方法顯示這些對象。程序代碼:packaget4;publicclassLX4_5{?publicstaticvoidmain(String[]args){ ?Fanfan1=newFan(); ?fan1.setSpeed(3); fan1.setRadius(10); fan1。setColor("yellow”);??fan1.setOn(true);? Fanfan2=newFan(); ?fan2.setSpeed(2);? fan2。setRadius(5); fan2.setColor("blue"); ?fan2。setOn(false);? System.out。println(fan1.toString());??System.out。println(fan2。toString());?}}packaget4;publicclassFan{?finalstaticintslow=1;?finalstaticintmedium=2;?finalstaticintfast=3;?privateintspee(cuò)d=slow; privatebooleanon=false;?privatedoubleradius=5; privateStringcolor=”blue"; publicintgetSpee(cuò)d(){? returnspeed; } publicvoidsetSpeed(intsp){ ?speed=sp;?} publicbooleangetOn(){ returnon; }?publicvoidsetOn(booleanon1){ ?on=on1; } publicdoublegetRadius(){ ?returnradius; }?publicvoidsetRadius(doubler){? radius=r;?} publicStringgetColor(){? returncolor; } publicvoidsetColor(Stringa){ color=a; } Fan(){?}?publicStringtoString(){??if(this。getOn()==true){ ??return”風(fēng)扇轉(zhuǎn)速:"+this.getSpeed()+"風(fēng)扇顏色:"+this.getColor() ? ?+"半徑:"+this.getRadius(); }else ? return”fanisoff"+"風(fēng)扇顏色:”+this.getColor()+"半徑:” +this.getRadius(); }}運(yùn)行結(jié)果貼圖:(四)(幾何方面:正n邊形)在一個(gè)正n邊形中,所有邊的長度都相同,且所有角的度數(shù)都相同(即這個(gè)多邊形是等邊等角的)。設(shè)計(jì)一個(gè)名為RegularPolygon的類,該類包括:一個(gè)名為n的int型私有數(shù)據(jù)域定義多邊形的邊數(shù),默認(rèn)值為3.一個(gè)名為side的double型私有數(shù)據(jù)域存儲(chǔ)邊的長度,默認(rèn)值為1。一個(gè)名為x的double型私有數(shù)據(jù)域,它定義多邊形中點(diǎn)的x坐標(biāo),默認(rèn)值為0。一個(gè)名為y的double型私有數(shù)據(jù)域,它定義多邊形中點(diǎn)的y坐標(biāo),默認(rèn)值為0。一個(gè)創(chuàng)建帶默認(rèn)值的正多邊形的無參構(gòu)造方法。一個(gè)能創(chuàng)建帶指定邊數(shù)和邊長度、中心在(0,0)的正多邊形的構(gòu)造方法.一個(gè)能創(chuàng)建帶指定邊數(shù)和邊長度、中心在(x,y)的正多邊形的構(gòu)造方法。所有數(shù)據(jù)域的訪問器和修改器。一個(gè)返回多邊形周長的方法getPerimeter()。一個(gè)返回多邊形面積的方法getArea()。計(jì)算正多邊形面積的公式是:面積=實(shí)現(xiàn)這個(gè)類。編寫一個(gè)測試程序,分別使用無參構(gòu)造方法、RegularPolygon(6,4)和RegularPolygon(10,4,5.6,7.8)創(chuàng)建三個(gè)RegularPolygon對象。顯示每個(gè)對象的周長和面積。程序代碼:packaget4;publicclassLX4_6{?publicstaticvoidmain(String[]args){??RegularPolygonro1=newRegularPolygon(); RegularPolygonro2=newRegularPolygon(6,4); RegularPolygonro3=newRegularPolygon(10,3,5.6,7.8);??print(ro1); print(ro2);? print(ro3);?}?publicstaticvoidprint(RegularPolygonc){? System。out.println(”正"+c.getN()+”的周長為:"+c。getPerimeter());??System。out.println("正"+c。getN()+"的面積為:”+c。getArea()); }}packaget4;publicclassRegularPolygon{ privateintn=3;?privatedoubleside=1;?privatedoublex=0; privatedoubley=0;?RegularPolygon(){ }?RegularPolygon(intn,doubleside){ ?this.n=n;? this.side=side;??this.x=0; this。y=0; } RegularPolygon(intn,doubleside,doublex,doubley){? this.n=n; ?this。side=side; this。x=x; ?this.y=y;?}?publicintgetN(){ ?returnn; } publicvoidsetN(intn1){? n=n1; }?publicdoublegetSide(){ ?returnside;?} publicvoidsetSide(doubleside1){? side=side1; }?publicdoublegetX(){ ?returnx; }?publicvoidsetX(doublex1){??x=x1;?}?publicdoublegetY(){? returny;?} publicvoidsetY(doubley1){ y=y1;?}?publicdoublegetPerimeter(){ ?returnn*side;?} publicdoublegetArea(){ doubles; doublet; ?t=4*Math.tan(Math.PI/n);? s=n*side*side/t; returns; }}運(yùn)行結(jié)果貼圖:(五)(代數(shù)方面:二次方程)為二次方程式設(shè)計(jì)一個(gè)名為QuadraticEquation的類。這個(gè)類包括:代表參數(shù)為a、b和c.一個(gè)參數(shù)為a、b和c的構(gòu)造方法。A、b、c的三個(gè)get方法。一個(gè)名為getDiscriminant()的方法返回判別式,.一個(gè)名為getRoot1()和getRoot2()的返回等式的兩個(gè)根:and這些方法只有在判別式為非負(fù)數(shù)時(shí)才有用。如果判別式為負(fù),這些方法返回0。實(shí)現(xiàn)這個(gè)類.編寫一個(gè)測試程序,提供用戶輸入a、b和c的值,然后顯示判別式的結(jié)果.如果判別式為正數(shù),顯示兩個(gè)根;如果判別式為0,顯示一個(gè)根;否則顯示“Theequationhasnoroots。"(這個(gè)方程無根)。程序代碼:packaget4;importjava.util.*;publicclassLX4_7{ publicstaticvoidmain(String[]args){ ?System.out。println(”請輸入a,b,c:”);??Scannerinput=newScanner(System.in);??QuadraticEquationquadratic1=newQuadraticEquat(yī)ion( ??input。nextDouble(),input.nextDouble(),input.nextDouble()); ?print(quadratic1);?} publicstaticvoidprint(QuadraticEquationa1){??if(a1.getDiscriminant()<0)? ?System.out。println("Theequationhasnoroots?。?; elseif(a1.getDiscriminant()==0)? System.out.println("有一個(gè)根:"+a1.getRoot1()); else{?? System。out。println(”第一個(gè)根為:"+a1。getRoot1()); ??System。out.println("第二個(gè)根為:"+a1.getRoot2());? } }}packaget4;publicclassQuadraticEquat(yī)ion{ privatedoublea; privatedoubleb;?privat(yī)edoublec; publicdoublegetA(){ ?returna; } publicvoidsetA(doublea1){ a=a1;?}?publicdoublegetB(){? returnb;?} publicvoidsetB(doubleb1){ b=b1;?} publicdoublegetC(){? returnc;?} publicvoidsetC(do

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論