java实验01

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

电子信息学院实验报告书课程名:软件开发基础Java(2)题目:实验01继承、接口与多态实验类别:【验证、调试、设计】班级:软件1412学号:141003330212姓名:张杨松评语:实验态度:认真()一般()较差()实验结果:正确()部分正确()错()实验理论:掌握()熟悉()了解()生疏()操作技能:较强()一般()较差()实验报告:较好()一般()较差()成绩:指导教师:王中华实验时间:2015年3月11日《软件开发基础Java》实验报告1一、实验目的(1)掌握类的继承机制。(2)熟悉类中成员变量和方法的访问控制。(3)熟悉方法或构造方法多态性。(4)熟悉接口的定义方法。二、实验内容(1)定义一个球类Ball,包含一个私有成员变量——半径(doubler),两个公有成员方法:设定半径方法(voidsetR(doublex))、得到半径值方法(doublegetR())。定义一个台球类Billiards,继承Ball类,包含一个私有成员变量——颜色(Stringcolor),两个公有成员方法:设定颜色方法setColor()、输出信息方法show(),其中show()方法可以输出该台球的颜色和半径值。定义一个公有类TestBall,测试前两个类。(2)编写程序实现如下功能:已知Person类包含三个公共域变量(姓名、性别、年龄)和一个构造方法,Student类是Person类的派生类,包含两个新的公共域变量(学号、班号)、两个公共方法(修改年龄、显示基本信息)及一个构造方法。定义一组学生对象,并初始化他们的基本信息,然后依次输出。(3)接口实验程序文件TestInterface.java。运行该程序,然后按【思考问题】内容修改和观察程序。packagecn.edu.sdju.joshua;interfaceShapeAreaPeri{doublegetArea();doublegetPerimeter();}classTriangleimplementsShapeAreaPeri{inta,b,c;Triangle(inta,intb,intc){this.a=a;this.b=b;this.c=c;}publicdoublegetArea(){doublerp=(a+b+c)/2.0;returnMath.sqrt((rp-a)*(rp-b)*(rp-c));}publicdoublegetPerimeter(){《软件开发基础Java》实验报告2return(a+b+c);}}classRectangleimplementsShapeAreaPeri{intwidth,length;Rectangle(intw,intl){width=w;length=l;}publicdoublegetArea(){returnwidth*length;}publicdoublegetPerimeter(){return(2*(width+length));}}classCircleimplementsShapeAreaPeri{intridus;finaldoublepi=3.14;Circle(intr){ridus=r;}publicdoublegetArea(){returnpi*ridus*ridus;}publicdoublegetPerimeter(){return2*pi*ridus;}}publicclassInterfaceDemo{publicstaticvoidmain(Stringargs[]){ShapeAreaPeri[]sap=newShapeAreaPeri[5];sap[0]=newRectangle(3,7);sap[1]=newRectangle(10,8);sap[2]=newCircle(8);sap[3]=newTriangle(4,4,4);sap[4]=newCircle(2);《软件开发基础Java》实验报告3for(inti=0;i5;i++){System.out.println(当前形状面积=+sap[i].getArea());System.out.println(当前形状周长=+sap[i].getPerimeter());}}}【思考问题】①在实现类Rectangle中注释掉一个方法后进行编译,看发生了什么?为什么?②在实现类Rectangle中将各实现方法前的public修饰符去掉再进行编译,看发生了什么?为什么?③将接口ShapeAreaPeri中定义的两个方法前加上abstract修饰符再编译,看对程序有影响否?为什么?④不用单独的实现类Rectangle,直接在主类InterfaceDemo中实现那两个方法,如何修改程序?⑤将接口ShapeAreaPeri中定义的两个方法拆分定义成两个接口,即每个接口只定义一个方法,程序将如何修改?(4)根据功能提示写程序:设计一个实数类,一个复数类,都包含求模长(绝对值)、判断是否为0,求与它数和差积商的方法。将全部类都定义在同一个.java文件中,部分代码已给出。classRealNumber{doublerealPart;publicRealNumber(doublerealPart){this.realPart=realPart;}publicRealNumber(){this(0);}doublegetReal(){returnrealPart;}publicdoublegetModulus(){//求模长,即绝对值returnMath.abs(realPart);}publicbooleanisZero(){//调用getModulus判断是不是0并返回结果}publicRealNumberAdd(RealNumbernum){doublesumRealPart=this.realPart+num.getReal();//得到和的数值RealNumbersum=newRealNumber(sumRealPart);//用和的数值构造实数类对象returnsum;}《软件开发基础Java》实验报告4//减法Subtract//乘法Multiply//除法Divide,除数为0(用isZero方法判断)时输出错误信息,返回用0构造的实数对象}classComplexNumber{//复数类继承实数类//子类增加代表虚部的成员变量imaginaryPartpublicComplexNumber(doublerealPart,doubleimaginaryPart){//两个参数的构造方法//子类构造方法第一条语句须调用父类构造方法//给虚部赋值}//一个参数构造方法,将虚部当作0,调用两个参数的构造方法(两个参数的构造方法已包含对父类构造方法的调用,无需再调用)//无参构造方法,将实部虚部都当作0,调用两个参数的构造方法(两个参数的构造方法已包含对父类构造方法的调用,无需再调用)//getImaginary方法//根据复数模长定义,重写父类求模长方法//加法:参数与返回值都是ComplexNumber类型//减法:参数与返回值都是ComplexNumber类型//乘法:参数与返回值都是ComplexNumber类型//除法:参数与返回值都是ComplexNumber类型,分母需要实数化,需用父类isZero判断除数是否为0,若为0返回用0构造的复数对象}publicclassDemo{publicstaticvoidmain(Stringargs[]){RealNumberr1=newRealNumber(1);RealNumberr2=newRealNumber(2);RealNumbersum=r1.Add(r2);//r1和r2的和//输出r1和r2的和差积商,注意输出信息的可读性//输出r1和0的和差积商(需要用0构造实数类对象),注意输出信息的可读性,ComplexNumberc1=newComplexNumber(1,2);ComplexNumberc2=newComplexNumber(3,4);//输出c1和c2的和差积商,注意输出信息的可读性//输出c1和0的和差积商(需要用0构造复数类对象),注意输出信息的可读性}}三、实验结果(关键代码和运行结果)/***测试台球类**@paramargs*/publicclassTestBoll{《软件开发基础Java》实验报告5publicstaticvoidmain(String[]args){Billiardsbilliards=newBilliards(紅色,10);billiards.show();System.out.println(-----------);billiards.setR(20);billiards.setColor(蓝色);billiards.show();}}classBoll{privatedoubler;publicBoll(doubler){this.r=r;}publicdoublegetR(){returnr;}publicvoidsetR(doubler){this.r=r;}}classBilliardsextendsBoll{privateStringcolor;publicBilliards(Stringcolor,doubler){super(r);this.color=color;}publicvoidsetColor(Stringcolor){this.color=color;}/***显示台球的基本信息*/publicvoidshow(){System.out.println(台球的顏色:+color+\t半径:+getR());}}《软件开发基础Java》实验报告6图1-1运行结果(2)/****创建学生类,并记录每个学生的信息**@authorAdministrator**/publicclassPerson{publicStringname;publicStringsex;publicintage;publicPerson(Stringname,Stringsex,intage){this.name=name;this.sex=sex;this.age=age;}}classStudentextendsPerson{publicStringStuNum;publicStringclassNum;publicvoidsetAge(intage){this.age=age;}《软件开发基础Java》实验报告7publicStudent(Stringname,Stringsex,intage,StringStuNum,StringclassNum){super(name,sex,age);this.StuNum=StuNum;this.classNum=classNum;}/***显示学生的基本信息的方法*/publicvoidshowInfo(){System.out.println(姓名:+name+性別:+sex+年齡:+age+学号:+StuNum+班号:+classNum);}publicstaticvoidmain(String[]args){Studentstudent[]=newStudent[3];student[0]=newStudent(张杨松,男,20,141003330212,12);student[1]=newStudent(周梦帆,男,19,141003330213,13);student[2]=newStudent(陈思成,男,19,141003330211,11);/**采用for循环,遍历,然后分别打印出每个同学的信息*/for(Student_student:student){_student.showInfo();}}}《软件开发基础Java》实验报告8(3)【思考问题】①在实现类Rectangle中注释掉一个方法后进行编译,看发生了什么?为什么?编译

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功