1、实验面向对象编程实验面向对象编程实验项目名称:面向对象编程实验学时:同组学生姓名:郁佳慧实验地点:_实验日期:_实验成绩:批改教师:刘晶_批改时间:工科楼A207、实验目的和要求(1)熟练掌握Java语言类定义的基本语法;(2)熟练掌握类成员的访问控制,对象建立的方法;(3)熟练掌握类构造方法、成员方法的定义和重载;(4)熟练掌握类继承、多态和抽象性;(5)熟练掌握接口的定义和实现方法;(6)掌握基本的异常处理方法;(7)调试程序要记录调试过程中出现的问题及解决办法;(8)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验;(9)做完实验后给出本实验的实验报告。二、实验仪
2、器和设备奔腾以上计算机,Windows操作系统,装有JDK1.6和Eclipse4.2软件。三、实验过程(1)设计复数类,成员变量包括实部和虚部,成员方法包括实现复数加法、减法、比较、字符串描述、比较是否相等等操作。(2)包的建立与使用:设计计算器类Calculator,计算加、减、乘、除和立方体体积,并且打包为mypackage。观察源文件目录下是否生成了mypackage文件夹,在该文件夹中是否有Calculate.class文件。编辑PackageDemo.java,保存在Calculator.java同一目录下,引用计算器类的各方法显示计算结果。(3)试编码实现简单的银行业务:处理简单
3、帐户存取款、查询。编写银行帐户类BankAccount,包含数据成员:余额(balanee)、利率(interest);操作方法:查询余额、存款、取款、查询利率、设置利率。再编写主类UseAccount,包含main()方法,创建BankAccount类的对象,并完成相应操作。(4)假定根据学生的3门学位课程的分数决定其是否可以拿到学位,对于本科生,如果3门课程的平均分数超过60分即表示通过,而对于研究生,则需要平均超过80分才能够通过。根据上述要求,请完成以下Java类的设计:1)设计一个基类Student描述学生的共同特征。2)设计一个描述本科生的类Undergraduate,该类继承并扩
4、展Student类。3)设计一个描述研究生的类Graduate,该类继承并扩展Student类。4)设计一个测试类StudentDemo,分别创建本科生和研究生这两个类的对象,并输出相关信息。(5)设计三角形类,继承图形抽象类,计算三角形面积和周长。(6)试编码实现多态在工资系统中的应用:给出一个根据雇员类型利用abstract方法和多态性完成工资单计算的程序。Employee是抽象类,Employee的子类有Boss(每星期发给他固定工资,而不计工作时间)、CommissionWorker(除基本工资外还根据销售额发放浮动工资)、PieceWorker(按其生产的产品数发放工资)、Hourl
5、yWorker(根据工作时间长短发放工资)。该例的Employee的每个子类都声明为final,因为不需要再Test中测试各类雇员工资计算结果。earnings()方法,但每个人挣的工资按他所属的雇员Employee派出生的。在超类中声明earnings()为抽象方法,并且对于每个子类都提供恰当的earnings()的实现方法。为了计算雇员的工资,程序仅仅使用雇员对象的一个超类引用并调用earnings()方法。在一个实际的工资系统中,各种Employee对象的引用可以通过一个Employee引用数组来实现。程序依次使用数组的每个元素(Employee引用)调用每个对象的earnings()方
6、法。Employee类定义如下:abstractclassEmployeeprivateStringfirstName;privateStringlastName;publicEmployee(Stringfirst,Stringlast)firstName=first;lastName=last;publicStringgetEmployeeName()returnfirstName;publicStringgetLastName()returnlastName;publicStringtoString()returnfirstName+lastName;publicabstractStri
7、ngearnings();(7)设计圆柱体类和圆椎体类,继承圆类Circle并实现Volume接口,计算表面积和体积。(8)异常的捕获:计算两数相除并输出结果。使用三个catch子句,分别捕捉输入输出异常、除数为0的异常和参数输入有误异常。importjava.io.*;classEx1publicstaticvoidmain(Stringargs)tryBufferedReaderstrin=newBufferedReader(newInputStreamReader(System.in);/建立输入流缓冲区System.out.print(请输入除数:Stringcl=strin.read
8、Line();/键盘输入inta=Integer.parseInt(cl);System.out.print(请输入被除数:cl=strin.readLine();继承它们生成子类。在主测试类提示:对所有雇员类型都使用类计算,所有雇员类都是从超类intb=Integer.parseInt(cl);intc=b/a;System.out.println(商为:+c);/捕获与I/O有关的异常(空白处补全捕获语句)/捕获数值转化时的异常,如不能将字符转化成数值/捕获除数为0的异常编译并运行,当产生输入输出异常时显示异常信息;当输入除数为0时,出现算术异常,提示除数为0,并要求重新输入;当输入的不是
9、整数时,如将30输成了3o,出现数值格式异常,提示输入整数。(9)编写程序包含自定义异常MyException,当100被13和4除时抛出该异常,其余除数显示商值。要求:(1)注意选用适当的类成员修饰符(private、protected、public等用情况;),比较它们的使(2)养成良好的编程习惯,严格按照命名规则为包、类及类成员命名,包的命名方式如two.num1表示实验二的第一题;将每个程序打包,(3)学会使用Eclipse的各种调试方法;(4)学会查阅JavaAPI文档,如查找异常类的使用方法。程序清单:(建议程序中适当添加注释信息,增强可读性;较长程序可分栏书写,保证报告排版整洁美
10、观。)(实验二程序清单续1)(1)publicclassfushudoublex;doubley;publicfushu(doublex1,doubley1)x=x1;y=y1;publicfushu()x=0;y=0;publicfushufushujia(fushuc1,fushuc2)fushuc=newfushu();c.x=c1.x+c2.x;c.y=c1.y+c2.y;returnc;publicfushufushujianfa(fushuc1,fushuc2)fushuc=newfushu();c.x=c1.x-c2.x;c.y=c1.y-c2.y;returnc;publicS
11、tringfushubijiao(fushuc1,fushuc2)doublex=c1.x*c1.x+c1.y*c1.y;doubley=c2.x*c2.x+c2.y*c2.y;if(xy)returnc1c2elseif(x=y)returnc1=c2elsereturnc1c2publicStringtoString()if(y=0)return(x+y+ielsey=-y;return(x+-+y+ipublicbooleanfushuxd(fushuc1,fushuc2)booleanf=true;if(c1.x=c2.xc1.y=c2.y)returnf;elsef=false;re
12、turnf;publicclassfushutestpublicstaticvoidmain(Stringargs)fushuc1=newfushu(3.0,4.0);fushuc2=newfushu(4.0,5.0);fushuc=newfushu();System.out.println(c.fushujia(c1,c2);System.out.println(c.fushujianfa(c1,c2);System.out.println(c.fushubijiao(c1,c2);System.out.println(c1.toString();System.out.println(c2.
13、toString();if(c.fushuxd(c1,c2)System.out.println(相等elseSystem.out.println(不相等(2)publicclassCalculatorfloati;floatj;publicCalculatorjia(Calculatorx,Calculatory)Calculatorc=newCalculator();c.i=x.i+y.i;returnc;publicCalculatorjian(Calculatorx,Calculatory)Calculatorc=newCalculator();c.i=x.i-y.i;returnc;
14、publicCalculatorcheng(Calculatorx,Calculatory)Calculatorc=newCalculator();c.i=x.i*y.i;returnc;publicCalculatorchu(Calculatorx,Calculatory)Calculatorc=newCalculator();c.i=x.i;c.i=c.i/y.i;returnc;publicCalculatorlfh()Calculatorc=newCalculator();c.i=i*i*i;returnc;publicfloatfanhui(Calculatorc)returnc.i
15、;publicclassPackageDemopublicstaticvoidmain(Stringargs)Calculatori=newCalculator();Calculatory=newCalculator();i.i=3;y.i=4;Calculatorc=newCalculator();System.out.println(c.fanhui(c.jia(i,y);System.out.println(c.fanhui(c.jian(i,y);System.out.println(c.fanhui(c.cheng(i,y);System.out.println(c.fanhui(c
16、.chu(i,y);System.out.println(i.fanhui(i.lfh();System.out.println(i.fanhui(y.lfh();c=c.cheng(c.jia(i,y),c);System.out.println(c.fanhui(c);(3)importjava.util.*;publicclassUseAccountpublicstaticvoidmain(Stringargs)Scannerreader=newScanner(System.in);BankAccountc=newBankAccount();inti;floats;booleant=tr
17、ue;case3:System.out.print(请输入取出金额:s=reader.nextFloat();if(sc.balance)System.out.println(余额不足elsec.quqian(s);System.out.println(1.System.out.println(2.System.out.println(3.System.out.println(4.System.out.println(5.System.out.println(6.while(t)System.out.print(i=reader.nextInt();switch(i)case1:c.yue(c
18、);break;case2:System.out.print(s=reader.nextFloat();c.cunqian(s);break;查询余额存钱取钱设置利率查询利率结束退出请输入要进行的操作编号:)请输入存入金额:break;case4:System.out.print(请输入利率:s=reader.nextFloat();c.lilu(s);break;case5:c.sclilu();break;case6:break;if(i=6)break;/*c.interest=reader.nextFloat();while(t)Stringk;k=reader.nextLine();
19、if(k.equals(查询余额)c.yue(c);elseif(k.equals(存钱)s=reader.nextFloat();c.cunqian(s);elseif(k.equals(取钱)s=reader.nextFloat();c.quqian(s);elseif(k.equals(查询利率)c.sclilu();elseif(k.equals(结束)break;c.yue(c);*/publicclassBankAccountstaticdoublebalance=0,interest=0;publicstaticvoidyue(BankAccountx)System.out.pr
20、intln(余额为+balance+元publicstaticvoidcunqian(doublei)balance=balance+i;publicstaticvoidquqian(doublei)balance=balance-i;publicstaticvoidlilu(doublei)interest=i;publicstaticvoidsclilu()System.out.println(利率为+interest*100+%(4)classStudentfloati,j,k;floats;publicvoidStudent(Studentc)s=(i+j+k)/3;if(s60)Sy
21、stem.out.print(可以毕业elseSystem.out.println(不合格classGraduateextendsStudentpublicvoidGraduate(Studentc)if(c.s80)System.out.println(研究生classUndergraduateextendsStudentpublicvoidUndergraduate(Studentc)if(c.s=80c.s=60)System.out.println(本科生importjava.util.*;publicclassStudentDemopublicstaticvoidmain(Strin
22、gargs)Scannerreader=newScanner(System.in);Studentc=newStudent();Graduatek=newGraduate();Undergraduatem=newUndergraduate();c.i=reader.nextFloat();c.j=reader.nextFloat();c.k=reader.nextFloat();c.Student(c);k.Graduate(c);m.Undergraduate(c);(5)importjava.util.*;abstractclassjichenginti,j,k;abstractdoubl
23、emianzhi();abstractintzhouchang();classjisuanextendsjichengvoidjicheng(inti,intj,intk)super.i=i;super.j=j;super.k=k;doublemianzhi()doubles;floatp;p=(i+j+k)/2;s=Math.sqrt(p*(p-i)*(p-j)*(p-k);returns;intzhouchang()returni+j+k;publicclassjichengTestpublicstaticvoidmain(Stringargs)jisuanc=newjisuan();c.
24、jicheng(3,4,5);System.out.println(c.zhouchang();System.out.println(c.mianzhi();(6)classBossextendsEmployeeints;publicBoss(Stringfirst,Stringlast,inti)super(first,last);s=i;publicStringearnings()return(super.toString()+String.valueOf(s);classCommissionWorkerextendsEmployeeinti,j,k;publicCommissionWor
25、ker(Stringfirst,Stringlast,inti,intj,intk)super(first,last);this.i=i;this.j=j;this.k=k;publicStringearnings()return(super.toString()+String.valueOf(i+j*k);classHourlyWorkerextendsEmployeeinti,j,k;publicHourlyWorker(Stringfirst,Stringlast,inti,intj,intk)super(first,last);this.i=i;this.j=j;this.k=k;pu
26、blicStringearnings()return(super.toString()+String.valueOf(i+j*k);classPieceWorkerextendsEmployeeinti,j,k;publicPieceWorker(Stringfirst,Stringlast,inti,intj,intk)super(first,last);this.i=i;this.j=j;this.k=k;publicStringearnings()return(super.toString()+String.valueOf(i+j*k);importjava.util.*;abstrac
27、tclassEmployeeprivateStringfirstName;privateStringlastName;publicEmployee(Stringfirst,Stringlast)firstName=first;lastName=last;publicStringgetEmployeeName()returnfirstName;publicStringgetLastName()returnlastName;publicStringtoString()returnfirstName+lastName;publicabstractStringearnings();publicclas
28、sTestpublicstaticvoidmain(Stringargs)Bossa=newBoss(Boss,工资条,5000);System.out.println(a.earnings();CommissionWorkerb=newCommissionWorker(CommissionWorker,工资条,2000,100,20);System.out.println(b.earnings();PieceWorkerc=newPieceWorker(PieceWorker,工资条,2450,200,5);System.out.println(c.earnings();HourlyWork
29、erd=newHourlyWorker(HourlyWorker,工资条,2350,200,9);System.out.println(d.earnings();(7)interfaceCirclefloatpi=3.14F;voidarea(inti,intheigh);voidvolume();classyuanzhuimplementsCircleintheigh;doubles=0;doublesum=0;publicvoidarea(inti,intheigh)(8)s=i*i*pi;sum=2*pi*i*heigh+2*s;this.heigh=heigh;System.out.p
30、rintln(圆柱的表面积为+sum);publicvoidvolume()sum=s*heigh;System.out.println(圆柱的体积为+sum);classyuanzhuiimplementsCircleintheigh;doubles=0;doublesum=0;publicvoidarea(inti,intheigh)s=i*i*pi;sum=2*2*pi*i*i;this.heigh=heigh;System.out.println(圆椎的表面积为+sum);publicvoidvolume()sum=s*heigh/3;System.out.println(圆椎的体积为
31、+sum);publicclassTESTpublicstaticvoidmain(Stringargs)yuanzhuc=newyuanzhu();yuanzhuis=newyuanzhui();c.area(3,4);c.volume();s.area(3,4);s.volume();importjava.io.*;classEx1publicstaticvoidmain(Stringargs)tryBufferedReaderstrin=newBufferedReader(newInputStreamReader(System.in);/建立输入流缓冲区System.out.print(
32、请输入除数:Stringcl=strin.readLine();/键盘输入inta=Integer.parseInt(cl);System.out.print(请输入被除数:cl=strin.readLine();intb=Integer.parseInt(cl);intc=b/a;System.out.println(商为:+c);catch(IOExceptione)/捕获与I/O有关的异常(空白处补全捕获语句)System.out.println(捕获到了I/O异常catch(NumberFormatExceptione)/捕获数值转化时的异常,如不能将字符转化成数值System.out.println
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1