java接口及实现接口的类实验报告.docx
《java接口及实现接口的类实验报告.docx》由会员分享,可在线阅读,更多相关《java接口及实现接口的类实验报告.docx(12页珍藏版)》请在冰点文库上搜索。
java接口及实现接口的类实验报告
实验报告
课程名称
面向对象程序设计
实验名称
实验六、接口与实现接口的类
日期
2018/4/29
学生学号
班级
实验目的:
通过本次实验,要求学生能进一步掌握接口、java.lang包中的基础类库和java.util包中的工具类库的使用方法。
实验条件:
电脑一台、能上网查阅资料。
1.定义Person类,包含name()、birthday(出生日期)、idCard(号)、sex(性别)、age(年龄)等基本信息,通过使用parator接口实验Person类可以按、年龄、出生日期等多种比较规则进行排序。
源代码:
packageperson;
publicclassPerson{
Stringname;
StringidCard;
Stringbirthday;
charsex;
intage;
publicPerson(){
}
publicPerson(Stringname,StringidCard,Stringbirthday,charsex,intage){
super();
this.name=name;
this.idCard=idCard;
this.birthday=birthday;
this.sex=sex;
this.age=age;
}
}
packageperson;
importjava.util.parator;
publicclasspareNameimplementsparator{
Override
publicintpare(Personp1,Personp2){
//TODO自动生成的方法存根
returnp1.name.pareTo(p2.name);
}
}
packageperson;
importjava.util.parator;
publicclasspareBirthdayimplementsparator{
Override
publicintpare(Personp1,Personp2){
//TODO自动生成的方法存根
returnp1.birthday.pareTo(p2.birthday);
}
}
packageperson;
importjava.util.parator;
publicclasspareAgeimplementsparator{
SuppressWarnings("deprecation")
Override
publicintpare(Personp1,Personp2){
//TODO自动生成的方法存根
returnnewInteger(p1.age).pareTo(newInteger(p2.age));
}
}
packageperson;
importjava.util.Arrays;
publicclassPersonText{
publicstaticvoidmain(String[]args){
//TODO自动生成的方法存根
intn=5;
Person[]person=newPerson[n];
person[0]=newPerson("三","4569","1996年6月6日",'男',22);
person[1]=newPerson("四","1234","1995年4月3日",'男',23);
person[2]=newPerson("王五","2589","1997年3月5日",'男',21);
person[3]=newPerson("丽","3698","1998年2月5日",'女',20);
person[4]=newPerson("宋月","5869","1998年1月1日",'女',20);
System.out.println("原来顺序为:
");
for(inti=0;iSystem.out.println(":
"+person[i].name+"性别:
"+person[i].sex+"年龄:
"+person[i].age+"生日:
"+person[i].birthday);
}
System.out.println("\n按排序后顺序为:
");
Arrays.sort(person,newpareName());
for(inti=0;iSystem.out.println(":
"+person[i].name+"性别:
"+person[i].sex+"年龄:
"+person[i].age+"生日:
"+person[i].birthday);
}
System.out.println("\n按年龄排序后顺序为:
");
Arrays.sort(person,newpareAge());
for(inti=0;iSystem.out.println(":
"+person[i].name+"性别:
"+person[i].sex+"年龄:
"+person[i].age+"生日:
"+person[i].birthday);
}
System.out.println("\n按生日排序后顺序为:
");
Arrays.sort(person,newpareBirthday());
for(inti=0;iSystem.out.println(":
"+person[i].name+"性别:
"+person[i].sex+"年龄:
"+person[i].age+"生日:
"+person[i].birthday);
}
}
}
实验结果:
2.首先定义基本几何图形接口(IShape),然后定义IShape的实现类Circle(圆形)、Square(正方形)和Triangle(三角形)。
要求计算各种图形的面积和周长。
(提示:
求三角形的面积用海伦公式:
,其中a,b,c是三角形的边长,L=(a+b+c)/2,即周长的一半。
)
源代码:
packagejiekoushape;
publicinterfaceIShape{
publicdoublearea();
publicdoublelength();
}
packagejiekoushape;
publicclassCircleimplementsIShape{
privateStringname;
privatedoubler;
publicCircle(Stringname,doubler){
super();
this.name=name;
this.r=r;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicdoublegetR(){
returnr;
}
publicvoidsetR(doubler){
this.r=r;
}
Override
publicdoublearea(){
//TODO自动生成的方法存根
returnMath.PI*Math.pow(r,2);
}
Override
publicdoublelength(){
//TODO自动生成的方法存根
returnMath.PI*r*2;
}
Override
publicStringtoString(){
//TODO自动生成的方法存根
returnname+"周长是:
"+length()+","+"面积是:
"+area();
}
}
packagejiekoushape;
publicclassSquareimplementsIShape{
privateStringname;
privatedoublea;
publicSquare(Stringname,doublea){
super();
this.name=name;
this.a=a;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicdoublegetA(){
returna;
}
publicvoidsetA(doublea){
this.a=a;
}
Override
publicdoublearea(){
//TODO自动生成的方法存根
returna*a;
}
Override
publicdoublelength(){
//TODO自动生成的方法存根
return4*a;
}
Override
publicStringtoString(){
//TODO自动生成的方法存根
returnname+"周长是:
"+length()+","+"面积是:
"+area();
}
}
packagejiekoushape;
publicclassTriangleimplementsIShape{
privateStringname;
privatedoublea;
privatedoubleb;
privatedoublec;
publicTriangle(Stringname,doublea,doubleb,doublec){
super();
this.name=name;
this.a=a;
this.b=b;
this.c=c;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicdoublegetA(){
returna;
}
publicvoidsetA(doublea){
this.a=a;
}
publicdoublegetB(){
returnb;
}
publicvoidsetB(doubleb){
this.b=b;
}
publicdoublegetC(){
returnc;
}
publicvoidsetC(doublec){
this.c=c;
}
publicdoublearea(){
//TODOAuto-generatedmethodstub
doublel=(a+b+c)/2;
returnMath.sqrt(l*(l-a)*(l-b)*(l-c));
}
publicdoublelength(){
//TODOAuto-generatedmethodstub
returna+b+c;
}
Override
publicStringtoString(){
//TODO自动生成的方法存根
returnname+"周长是:
"+length()+","+"面积是:
"+area();
}
}
packagejiekoushape;
publicclassDemoIShape{
publicstaticvoidmain(String[]args){
//TODO自动生成的方法存根
IShapeshape=null;
shape=newCircle("圆形",3);
System.out.println(shape.toString());
shape=newSquare("正方形",4);
System.out.println(shape.toString());
shape=newTriangle("三角形",3,4,5);
System.out.println(shape.toString());
}
}
实验结果:
实验总结(结论或问题分析):
本次实验,主要是对接口、java.lang包中的基础类库和java.util包中的工具类库的使用,其中最难得就是使用parator对Person类进行排序,通过查阅资料了解了parator如何使用,受益匪浅。
实验成绩
任课教师签名