Java程序设计Inheritance and Polymorphism.docx
- 文档编号:30650974
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:16
- 大小:188.12KB
Java程序设计Inheritance and Polymorphism.docx
《Java程序设计Inheritance and Polymorphism.docx》由会员分享,可在线阅读,更多相关《Java程序设计Inheritance and Polymorphism.docx(16页珍藏版)》请在冰豆网上搜索。
Java程序设计InheritanceandPolymorphism
福建农林大学计算机与信息学院
(程序设计类课程)
实验报告
课程名称:
JAVA语言程序设计
姓名:
系:
计算机
专业:
计算机科学与技术
年级:
09级
学号:
指导教师:
职称:
年月日
实验项目列表
序号
实验项目名称
成绩
指导教师
1
实验一ControlStatements
2
实验二Array
3
实验三ClassesandObjects
4
实验四InheritanceandPolymorphism
5
实验五GUIProgramming
6
7
8
9
10
11
12
福建农林大学计算机与信息学院实验报告
系(教研室):
计算机专业:
计算机科学与技术年级:
09级实验课程:
姓名:
学号:
实验室号:
_______计算机号:
实验时间:
2012.5.2指导教师签字:
成绩:
实验名称InheritanceandPolymorphism
一、实验目的和要求
1.GraspInheritanceofObject-OrientedLanguage
2.GraspOverridingofObject-OrientedLanguage
3.GraspPolymorphismofObject-OrientedLanguage
4.GrasptheImplementationofInterface
二、实验内容和原理
(1)设计一个类Shape,包括3个protected方法,分别是计算形状的周长和面积,以及比较面积大小。
设计类Rectangle和Circle,分别表示矩形和圆,它们都是Shapes的子类。
编写测试类,其中包含一个通用的排序程序和一个通用的二分查找程序(自己写代码实现),能对这二种类型的数组进行排序并查找指定的对象。
(2)重构上一题代码,设计一个抽象类Shape,包括2个抽象方法,分别是计算形状的周长和面积。
设计具体类Rectangle和Circle,分别表示矩形和圆,它们都是Shapes的子类。
使Rectangle和Circle都实现Comparable接口(根据面积比较大小),编写测试类,编写一个通用的排序程序和一个通用的二分查找程序(自己写代码实现),能对这二种类型的数组进行排序并查找指定的对象。
(考虑代码重构后的好处,理解抽象类和接口的区别和适用场合)
三、实验环境
eclipse
四、算法描述及实验步骤
1、EdittheJavaprogram;
2、CompileJavaprogram,findthesyntacticerrorsintheprogram,recordthemainerrorsandcorrectthem;
3、Testtheprogramusingthepre-designedtestcase,findthelogicalerrorsintheprogramandcorrectthem;
4、Runthefinalprogram,andanalyzetheresults。
五、调试过程
1.人工检查
2.上机调试
3.改正语法错误
4.运行结果
六、实验结果
七、总结
这次实验让我明白了接口和抽象类的用法,同时也让我明白了与接口有关的时候不能乱用@Override
附录:
//排序接口
packageJohnS;
publicinterfaceComparable{//比较大小接口
doublecompareTo(doublec1,doublec2);
}
//图形抽象类
packageJohnS;
publicabstractclassShape{
protectedabstractdoublegetPerimeter();
protectedabstractdoublegetArea();
}
//圆形
packageJohnS;
publicclassCircleextendsShapeimplementsComparable{
privatestaticfinaldoublePI=3.14159;
privatedoubleradius;
publicCircle(){
}
publicCircle(doubleradius){
}
publicdoublegetRadius(){
returnradius;
}
publicvoidsetRadius(doubleradius){
this.radius=radius;
}
@Override
protecteddoublegetArea(){
returnPI*radius*radius;
}
@Override
protecteddoublegetPerimeter(){
return2*PI*radius;
}
publicdoublecompareTo(doublec1,doublec2){//比较大小
returnc1-c2;
}
publicvoidtoString(double[]a){
for(inti=0;i System.out.print(a[i]+""); System.out.println(); } } //长方形 packageJohnS; publicclassRectangleextendsShapeimplementsComparable{ privatedoublelength; privatedoublewidth; publicRectangle(doublelength,doublewidth){ } publicRectangle(){ } publicdoublegetLength(){ returnlength; } publicvoidsetLength(doublelength){ this.length=length; } publicdoublegetWidth(){ returnwidth; } publicvoidsetWidth(doublewidth){ this.width=width; } @Override publicdoublegetArea(){ returnlength*width; } @Override publicdoublegetPerimeter(){ return2*(length+width); } publicdoublecompareTo(doubler1,doubler2){//比较大小 returnr1-r2; } publicvoidtoString(double[]a){ for(inti=0;i System.out.print(a[i]+""); System.out.println(); } } //包含主函数的类 packageJohnS; importjava.util.Arrays; importjava.util.Scanner; publicclassProgram{ inti=0,j=0; doubleradius,length,width; double[]d1; double[]d2; Scannersc=newScanner(System.in); Circlec=newCircle(); Rectangler=newRectangle(); staticdouble[]order(double[]a)//通用排序 { Arrays.sort(a); returna; } staticdouble[]BinaryOrdering(double[]a){//二分排序 intlow,high,mid; doubletemp; for(inti=1;i<10;i++){ temp=a[i]; low=0; high=i-1; while(low<=high){ mid=(low+high)/2; if(a[mid]>temp) high=mid-1; else low=mid+1; } for(intj=i-1;j>high;j--) a[j+1]=a[j]; a[high+1]=temp; } returna; } voidrecontinue(){ Strings; System.out.println("是否继续? (y/n)"); s=sc.next(); if(s.equals("y")||s.equals("yes")) input(); elseif(s.equals("n")||s.equals("no")){ System.out.println("您退出了程序! "); System.exit(0); }else { System.out.println("您输入有误,请重新输入"); recontinue(); } } voidinput(){ inta,b,d,k; doublec1,c2,r1,r2; System.out.println("您所需要的服务是? \n1.求圆\n2.求长方形\n3.比较大小"); a=sc.nextInt(); if(a==1){ System.out.print("您要求几个圆的相关数据? "); k=sc.nextInt(); d1=newdouble[k]; while(k>0){ System.out.print("请输入圆半径"); radius=sc.nextDouble(); c.setRadius(radius); System.out.println("圆周长为"+c.getPerimeter()); System.out.println("圆面积为"+c.getArea()); d1[i]=c.getArea(); i++; k--; } System.out.println("圆的通用排序为: "); c.toString(order(d1)); System.out.println("圆的二分排序为: "); c.toString(order(d1)); }elseif(a==2){ System.out.print("您要求几个长方形的数据? "); k=sc.nextInt(); d2=newdouble[k]; while(k>0){ System.out.print("请输入长方形的长"); length=sc.nextDouble(); r.setLength(length); System.out.print("请输入长方形的宽"); width=sc.nextDouble(); r.setWidth(width); System.out.println("长方形周长为"+r.getPerimeter()); System.out.println("长方形面积为"+r.getArea()); d2[j]=r.getArea(); j++; k--; } System.out.println("长方形的通用排序为: "); r.toString(order(d2)); System.out.println("长方形的二分排序为: "); r.toString(order(d2)); }elseif(a==3){ System.out.println("请输入第一个要比较的图形\n1.圆形\n2.长方形"); b=sc.nextInt(); if(b==1){ System.out.print("请输入圆半径"); radius=sc.nextDouble(); c.setRadius(radius); c1=c.getArea(); System.out.println("请输入第二个要比较的图形\n1.圆形\n2.长方形"); d=sc.nextInt(); if(d==1){ System.out.print("请输入圆半径"); radius=sc.nextDouble(); c.setRadius(radius); c2=c.getArea(); if(pareTo(c1,c2)>0||pareTo(c1,c2)==0) System.out.println("第一个圆比第二个圆大"+pareTo(c1,c2)); else System.out.println("第一个圆比第二个圆小" +Math.abs(pareTo(c1,c2))); }elseif(d==2){ System.out.print("请输入长方形的长"); length=sc.nextDouble(); r.setLength(length); System.out.print("请输入长方形的宽"); width=sc.nextDouble(); r.setWidth(width); r2=r.getArea(); if(pareTo(c1,r2)>0||pareTo(c1,r2)==0) System.out.println("第一个圆比第二个圆大"+pareTo(c1,r2)); else System.out.println("第一个圆比第二个圆小" +Math.abs(pareTo(c1,r2))); } } elseif(b==2){ System.out.print("请输入长方形的长"); length=sc.nextDouble(); System.out.print("请输入长方形的宽"); width=sc.nextDouble(); r.setWidth(width); r1=r.getArea(); System.out.println("请输入第二个要比较的图形\n1.圆形\n2.长方形"); b=sc.nextInt(); if(b==1){ System.out.print("请输入圆半径"); radius=sc.nextDouble(); c.setRadius(radius); c2=c.getArea(); if(pareTo(r1,c2)>0||pareTo(r1,c2)==0) System.out .println("第一个圆比第二个长方形大"+pareTo(r1,c2)); else System.out.println("第一个圆比第二个长方形小" +Math.abs(pareTo(r1,c2))); }elseif(b==2){ System.out.print("请输入长方形的长"); length=sc.nextDouble(); r.setLength(length); System.out.print("请输入长方形的宽"); width=sc.nextDouble(); r.setWidth(width); r2=r.getArea(); if(pareTo(r1,r2)>0||pareTo(r1,r2)==0) System.out.println("第一个长方形比第二个长方形大" +pareTo(r1,r2)); else System.out.println("第一个长方形比第二个长方形小" +Math.abs(pareTo(r1,r2))); } } }else{ System.out.println("您输入有误! 请重新输入"); input(); } recontinue(); } publicstaticvoidmain(String[]args){ Programp=newProgram(); p.input(); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java程序设计Inheritance and Polymorphism Java 程序设计 Inheritance
![提示](https://static.bdocx.com/images/bang_tan.gif)