您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 28-汪宜飞-实验四
《面向对象程序设计》实验报告合肥院学院计算机科学与技术系实验名称__java继承与多态_________日期_2014.10.22姓名/学号汪宜飞_/__1304091028___专业/班级__软件工程____/___1班____指导老师_____吴晓晴____________成绩_______________________________一、实验目的:(详见指导书,宋体小四)掌握继承、多态的概念与实现方法;掌握包和接口的定义和使用方法;掌握JAVA语言实现多继承的途径;二、实验要求:(详见指导书,宋体小四)1.能实现类的继承关系;2.用多种方法创建各个类的对象;3.程序应包括各个被调用方法的执行结果的显示。4.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法。(附运行界面、源代码)。三、实验内容及过程:(宋体小四,)1.分别编写两个类Point2D,Point3D来表示二维空间和三维空间的点,使之满足下列要求:(1)Point2D有两个整型成员变量x,y(分别为二维空间的X,Y方向坐标),Point2D的构造方法要实现对其成员变量x,y的初始化。(2)Point2D有一个void型成员方法offset(inta,intb),它可以实现Point2D的平移。(3)Point3D是Point2D的直接子类,它有有三个整型成员变量x,y,z(分别为三维空间的X,Y,Z方向坐标),Point3D有两个构造方法:Point3D(intx,inty,intz)和Point3D(Point2Dp,intz),两者均可实现对Point3D的成员变量x,y,z的初始化。(4)Point3D有一个void型成员方法offset(inta,intb,intc),该方法可以实现Point3D的平移。(5)在Point3D中的主函数main()中实例化两个Point2D的对象p2d1,p2d2,打印出它们之间的距离,再实例化两个Point2D的对象p3d1,p3d2,打印出他们之间的距离。2.定义抽象类Shape,抽象方法为showArea(),求出面积并显示,定义矩形类Rectangle,正方形类Square,圆类Circle,根据各自的属性,用showArea方法求出各自的面积,在main方法中构造3个对象,调用showArea方法。定义接口DiagArea,其中包含方法doublegetDiagonal()求对角线长,doublegetArea()求面积,定义一个矩形类,实现此接口,并自行扩充成员变量和方法,定义一个正方形类继承矩形类(如矩形有长w和宽h,正方形有边x,并有相应的构造函数,有一个方法中一次直接显示边长、面积和对角线长),在另一类中的主方法里使用测试该类。1、定义一个描述人的基本类,该类包括人的性别和出生日期两个数据成员,以及设置和获取这些属性值的方法成员;再定义一个大学生类,使大学生类具有人的所有属性外,还具有姓名、学号,大学入学成绩,籍贯属性以及设置和获取这些属性值的方法成员;编写完整的程序,完成一个具有班级学生信息管理功能的程序。在这个程序中,先定义父类people,在其中输入成员变量性别和出生日期,并通过方法set和get来输入、返回成员值,定义方法String来输出成员的信息;在定义子类student继承父类,输入姓名、学号,大学入学成绩,籍贯属性数据成员,并通过方法set和get来输入、返回成员值,定义方法String来输出学生的信息;在主函数中,实例化学生类并赋值,调用String方法输出学生信息。四、实验中的问题思考及讨论:(列出你实验中出现的问题,及解决的问题和解决的思路)在第一个程序中,在类Point2D中定义了方法publicPoint2D(intx,inty)输入条件this.x=x;this.y=y;,而在类Point3D中定义publicPoint3D(Point2Dp,intz)没有输入条件this.x=p.x;this.y=p.y;导致最后输出的值为0,通过比较添加了条件程序正确运行了。五、实验总结:(简单、准确的总结本次实验的主要内容,个人收获)只要不断的上机实验,不断的发现自己的错误,才能正真的掌握Java这一门程序语言。加深了解了继承的概念,通过子类通过继承父类的属性并添加自身的属性使子类更加完善,也贴合实际有助于解决现实中的问题。六、源代码及运行结果classshiyan{publicstaticvoidmain(String[]args){Point2Dp1=newPoint2D(2,3);Point2Dp2=newPoint2D(0,0);p2=p1.offset(p1.x,p1.y);System.out.println(平移后的坐标为:+p2.x++p2.y);p2.dis(p1,p2);Point3Dp3=newPoint3D(2,3,4);Point3Dp4=newPoint3D(0,0,0);p4=p3.offset(p3.x,p3.y,p3.z);System.out.println(平移后的坐标为:+p4.x++p4.y++p4.z);p3.dis(p3,p4);}}classPoint2D{intx,y;Point2D(){}publicPoint2D(intx,inty){this.x=x;this.y=y;}publicintgetX(){returnx;}publicintgetY(){returny;}publicPoint2Doffset(intx,inty){Point2Dp2=newPoint2D(1,1);p2.x=p2.x+x;p2.y=p2.y+y;returnp2;}publicvoiddis(Point2Dp1,Point2Dp2){doublex;p1.x=(p1.x-p2.x)*(p1.x-p2.x);p1.y=(p1.y-p2.y)*(p1.y-p2.y);x=Math.sqrt(p1.x+p1.y);System.out.println(坐标p1、p2之间的距离:+x);}}classPoint3DextendsPoint2D{intz;Point3D(intx,inty,intz){this.x=x;this.y=y;this.z=z;}publicPoint3D(Point2Dp,intz){this.x=p.x;this.y=p.y;this.z=z;}publicintgetZ(){returnz;}publicPoint3Doffset(intx,inty,intz){Point3Dp4=newPoint3D(1,1,1);p4.x=p4.x+x;p4.y=p4.y+y;p4.z=p4.z+z;returnp4;}publicvoiddis(Point3Dp3,Point3Dp4){doublex;p3.x=(p3.x-p4.x)*(p3.x-p4.x);p3.y=(p3.y-p4.y)*(p3.y-p4.y);p3.z=(p3.z-p4.z)*(p3.z-p4.z);x=Math.sqrt(p3.x+p3.y+p3.z);System.out.println(坐标p3、p4之间的距离:+x);}}classShape{publicstaticvoidmain(String[]args){Rectanglea=newRectangle(3,4);a.showArea();Squareb=newSquare(3);b.showArea();b.show();Circlec=newCircle();c.showArea();}}abstractclassShape1{abstractvoidshowArea();}interfaceDiagArea{doublegetDiagonal();doublegetArea();}classRectangleimplementsDiagArea{doublea,b;doublec;doubled;Rectangle(doublea,doubleb){this.a=a;this.b=b;}publicdoublegetDiagonal(){c=Math.sqrt((a*a)+(b*b));returnc;}publicdoublegetArea(){d=a*b;returnd;}voidshowArea(){System.out.println(矩形长、宽:+a++b);System.out.println(矩形对角线:+getDiagonal());System.out.println(矩形面积:+getArea());}}classSquareextendsRectangle{inta=3;doublec;doubled;Square(inta){super(a,a);this.a=a;}voidshowArea(){System.out.println(正方形面积:+(a*a));}publicdoublegetDiagonal(){c=Math.sqrt((a*a)+(a*a));returnc;}publicdoublegetArea(){d=a*a;returnd;}voidshow(){System.out.println(正方形边长:+a);System.out.println(正方形对角线:+getDiagonal());System.out.println(正方形面积:+getArea());}}classCircle{inta=3;doublePI=3.14;voidshowArea(){System.out.println(圆面积:+(a*a*PI));}}classpersion{publicstaticvoidmain(String[]args){studenta=newstudent();a.setbir(1993/1/10);a.setgrade(69);a.setlocal(合肥);a.setname(wang);a.setsex(男);a.setnumber(1304091028);a.String();}}classpeople{publicStringsex;publicStringbir;publicvoidsetsex(Stringsex){this.sex=sex;}publicvoidsetbir(Stringbir){this.bir=bir;}publicStringgetsex(){returnsex;}publicStringgetbir(){returnbir;}voidString(){System.out.println(性别:+sex+\t出生日期+bir);}}classstudentextendspeople{publicStringname;publicStringnumber;publicStringgrade;publicStringlocal;publicvoidsetname(Stringname){this.name=name;}publicvoidsetnumber(Stringnumber){this.number=number;}publicvoidsetgrade(Stringgrade){this.grade=grade;}publicvoidsetlocal(Stringlocal){this.local=local;}voidString(){System.out.println(姓名+name+\t学号:+number+\t入学成绩+grade+\t籍贯+local+\t性别:+sex+\t出生日期+bir);}}注:报告内容不得雷同,否则视为抄袭,无成绩
本文标题:28-汪宜飞-实验四
链接地址:https://www.777doc.com/doc-2913916 .html