实验课程名称:Java语言程序设计A实验项目名称实验3:接口实验成绩实验者专业班级组别同组者无开始日期第一部分:实验预习报告(包括实验目的及意义,实验基本原理与方法,主要仪器设备及耗材,实验内容及要求,实验方案与技术路线等)一.实验目的及意义1.自定义接口。2.自定义类实现接口。3.接口及实现类的多态处理。二.实验基本原理与方法1.接口的概念。2.接口对多态的支持。三.主要仪器设备及耗材1.PC及其兼容机。2.计算机操作系统。3.程序编辑器EditPlus/Eclipse。4.Java开发工具JDK。四.实验内容及要求自定义形状接口Shape,该接口声明了计算面积、周长的方法。然后,分别编写三角形类Triangle、六边形类Hexagon、椭圆形类Ellipse,它们都实现了Shape接口。最后,编写测试类ShapesDemo,多态地创建各种形状对象,计算面积、周长。五.实验方案及技术路线(含各种形状面积、周长的计算公式,UML类图,注意事项)因为每种形状的面积、周长计算所需要的参数个数不同,并且不同类型的三角形计算周长的面积的方法也不同,所以抽象类的参数就定为可变长度集合ArrayList,一般三角形的面积S=a*h/2,周长L=a+b+c;直角三角形面积S=a*b,周长L=a+b+22ba,等边三角形的面积S=4/*32a,周长L=3*a;六边形的面积S=2/*332a,周长L=6*a。以下是简略的UML类图:1)接口Shape2)三角形类Triangle3)六边形类4)椭圆形类第二部分:实验过程记录(可加页)(代码、运行结果、实验中出现的问题及解决过程)Shape接口:importjava.util.List;publicinterfaceShape{publicdoubleculArea(ListDoublelist);publicdoubleculGirth(ListDoublelist);}六边形类Hexagon:importjava.util.*;publicclassHexagonimplementsShape{privatedoublea;ListDoublelistData=newArrayListDouble();publicHexagon(doublea){this.a=a;listData.add(a);}@OverridepublicdoubleculArea(ListDoublelist){doubles=0;s=Math.sqrt(3)*3*Math.pow(list.get(0),2)/2;returns;}@OverridepublicdoubleculGirth(ListDoublelist){doublel=0;l=list.get(0)*6;returnl;}publicListDoublegetListData(){returnlistData;}}三角形类Triangle:importjava.util.*;publicclassTriangleimplementsShape{privatedoublea;privatedoubleb;privatedoublec;privatedoubleh;ListDoublelistData=newArrayListDouble();publicTriangle(doublea){this.a=a;listData.add(1.0);listData.add(a);}publicTriangle(doublea,doubleb){this.a=a;this.b=b;listData.add(2.0);listData.add(a);listData.add(b);}publicTriangle(doublea,doubleb,doublec,doubleh){super();this.a=a;this.b=b;this.c=c;this.h=h;listData.add(3.0);listData.add(a);listData.add(b);listData.add(c);listData.add(h);}publicListDoublegetListData(){returnlistData;}publicvoidsetListData(ListDoublelistData){this.listData=listData;}@OverridepublicdoubleculArea(ListDoublelist){doubles=0;if(list.get(0)==1.0){s=Math.sqrt(3)*Math.pow(list.get(1),2)/4;}if(list.get(0)==2.0){s=list.get(1)*list.get(2)/2;}if(list.get(0)==3.0){s=list.get(1)*list.get(4)/2;}returns;}@OverridepublicdoubleculGirth(ListDoublelist){doublel=0;if(list.get(0)==1.0){l=3*list.get(1);}if(list.get(0)==2.0){l=list.get(1)+list.get(2)+Math.sqrt(Math.pow(list.get(1),2)+Math.pow(list.get(2),2));}if(list.get(0)==3.0){l=list.get(1)+list.get(2)+list.get(3);}returnl;}}测试类ShapesDemo:publicclassShapesDemo{publicstaticvoidmain(String[]args){menuStrip();}publicstaticvoidmenuStrip(){Scannersc=newScanner(System.in);Stringchoice=null;do{System.out.println(选择需要计算面积和周长的图形形状。);System.out.println(1.三角形);System.out.println(2.正六边形);System.out.println(3.椭圆形);System.out.println(4.退出);System.out.println(请输入选项【1-4】);choice=sc.next();switch(choice){case1:option1();break;case2:option2();break;case3:option3();break;case4:System.exit(0);default:System.err.println(输入错误!);menuStrip();}}while(!(choice.equals(4)));}privatestaticvoidoption1(){Scannersc1=newScanner(System.in);StringtempChoice=null;System.out.println(请选择需要三角形的类型。);System.out.println(1.等边三角形);System.out.println(2.直角形);System.out.println(3.普通);System.out.println(请输入选项【1-3】(返回上一级请输入'0'));tempChoice=sc1.next();if(tempChoice.equals(1)){try{for(;;){System.out.print(请输入等边三角形的边长:);doubleaIn=sc1.nextDouble();if(aIn0){Triangletriangle1=newTriangle(aIn);doublearea=triangle1.culArea(triangle1.getListData());doublegirth=triangle1.culGirth(triangle1.getListData());System.out.println(此三角形的面积为:+area+\n此三角形的周长为:+girth);break;}else{System.err.println(输入错误,请输入大于0的数值!);}}}catch(Exceptione){System.err.println(输入错误,请重新输入!);option1();}}elseif(tempChoice.equals(2)){try{for(;;){System.out.print(请输入一条直角边长:);doubleaIn=sc1.nextDouble();System.out.print(请输入另一条直角边长:);doublebIn=sc1.nextDouble();if(aIn0&&bIn0){Triangletriangle1=newTriangle(aIn,bIn);doublearea=triangle1.culArea(triangle1.getListData());doublegirth=triangle1.culGirth(triangle1.getListData());System.out.println(此三角形的面积为:+area+\n此三角形的周长为:+girth);break;}else{System.err.println(输入错误,请输入大于0的数值!);}}}catch(Exceptione){System.err.println(输入错误,请重新输入!);option1();}}elseif(tempChoice.equals(3)){try{for(;;){System.out.print(请输入三角形底边长:);doubleaIn=sc1.nextDouble();System.out.print(请输入高:);doublehIn=sc1.nextDouble();System.out.print(请输入三角形一条侧边边长:);doublebIn=sc1.nextDouble();System.out.print(请输入三角形另一条侧边边长:);doublecIn=sc1.nextDouble();if(aIn0&&bIn0&&cIn0&&hIn0){if((aIn+bIn)cIn&&(aIn+cIn)bIn&&(bIn+cIn)aIn){Triangletriangle1=newTriangle(aIn,bIn,cIn,hIn);doublearea=triangle1.culArea(triangle1.getListData());doublegirth=triangle1.culGirth(triangle1.getListData());System.out.println(此三角形的面积为:+area+\n此三角形的周长为:+girth);break;}else{System.err.println(输入错误!不能构成三角形!请重新输入数.);}}else{System.err.println(输入错误,请输入大于0的数值!);}}}catch(Exceptione){System.err.println(输入错误,请重新输入!);option1();}}elseif(tempChoice.equals(0)){menuStrip();}else{System.err.println(输入错误!);Stringc=reChoice();if(c.equals(1)){option1();}else{//返回主菜单}}}privatestaticvoidoption2(){Scannersc2=newScanner(System.in);Stringc=reChoice();if(c.e