java程序设计实验五类的设计二.docx
- 文档编号:30224740
- 上传时间:2023-08-07
- 格式:DOCX
- 页数:15
- 大小:45.04KB
java程序设计实验五类的设计二.docx
《java程序设计实验五类的设计二.docx》由会员分享,可在线阅读,更多相关《java程序设计实验五类的设计二.docx(15页珍藏版)》请在冰豆网上搜索。
java程序设计实验五类的设计二
实验报告
课程名称
实验项目
专业班级
姓名学号
指导教师实验成绩
年月日
实验五、JAVA类的设计
(二)
一、实验目的:
1、理解Java语言是如何体现面向对象编程基本思想。
2、掌握类的封装方法,以及如何创建类和对象。
3、掌握成员变量和成员方法的特性。
4、掌握类的继承性和多态性的作用。
二、实验内容
1、编写一个Java应用程序,要求定义一个抽象类Point,包含x,y坐标、若干构造函数、坐标移动方法和坐标打印方法,以及两个计算面积和周长的抽象函数。
以该类为基础扩展如下3个类:
Trangle、Leder和Circle,分别用来刻画“三角形”、“梯形”、和“圆形”。
具体要求如下:
a)Trangle类具有类型为double的三个边,定义必要的构造函数,Trangle类具有返回周长、面积以及修改三个边的功能。
另外,Trangle类还具有一个boolean型的属性,该属性用来判断三个属能否构成一个三角形。
还包括打印三角形坐标和三条边的方法。
b)Lader类具有类型double的上底、下底、高,具有返回面积和周长的功能,还包括打印梯形坐标和三条边的方法。
c)Circle类具有类型为double的半径、具有返回周长和面积的功能,还包括打印圆的坐标和三条边的方法。
要求如下定义:
Pointt[]=newPoint[9];
前三个元素用Trangle类的构造方法初始化三个三角形对象,接下来三个元素用Lader类的构造方法初始化三个不同的梯形对象,最后三个元素初始化三个不同的圆的对象,分别调用类型定义的方法进行测试,最后输出9个图形的总周长和总面积。
abstractclassPoint
{
doublex;
doubley;
doublez;
Point()
{
x=0;y=0;z=0;
}
Point(doublexx,doubleyy,doublezz)
{
x=xx;y=yy;z=zz;
}
abstractdoubleyidong(doublea,doubleb,doublec);
abstractvoiddayingzuobiao();
abstractdoublezhouchang();
}
classTrangleextendsPoint//三角形
{
Trangle(doublexx,doubleyy,doublezz)
{
super(xx,yy,zz);
}
doublemianji()
{
return(x*y*z*(1/2.0));
}
doubleyidong(doublea,doubleb,doublec)
{
x=x+a;
y=y+b;
z=z+c;
return(x*y*z*(1/2.0));
}
voiddayingzuobiao()
{
System.out.println("("+x+","+y+","+z+")");
}
doublezhouchang()
{
returnx+y+z;
}
}
classLaderextendsPoint//梯形
{
Lader(doubleshangdi,doublexiadi,doublegao)
{
super(shangdi,xiadi,gao);
}
doublemianji()
{
return((x+y*z)/2.0);
}
doubleyidong(doublea,doubleb,doublec)
{
x=x+a;
y=y+b;
z=z+c;
return((x+y*z)/2.0);
}
voiddayingzuobiao()
{
System.out.println("("+x+","+y+","+z+")");
}
doublezhouchang()
{
returnMath.sqrt(z*z+(y-x)*(y-x));
}
}
classCircleextendsPoint//圆形
{
doubler;
Circle()
{
r=1;
}
Circle(doublebanjin)
{
r=banjin;
}
doublemianji()
{
return(r*r*3.14);
}
doubleyidong(doublea,doubleb,doublec)
{
x=x+a;
y=y+b;
z=z+c;
return(r*r*3.14);
}
voiddayingzuobiao()
{
System.out.println("("+x+","+y+","+z+")");
}
doublezhouchang()
{
return2*r*3.14;
}
}
publicclasszc{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Tranglea=newTrangle(2.0,2.0,2.0);
Pointb;
b=a;
System.out.println("三角形的面积:
"+a.mianji());
System.out.println("移动后三角形的面积:
"+b.yidong(1.0,1.0,1.0));
System.out.println("三角形的周长:
"+a.zhouchang());
System.out.print("三角形的坐标:
");
a.dayingzuobiao();
Laderaa=newLader(2.0,4.0,2.0);
Pointbb;
bb=aa;
System.out.println("梯形的面积:
"+aa.mianji());
System.out.println("移动后梯形的面积:
"+bb.yidong(1.0,1.0,1.0));
System.out.println("梯形的周长:
"+aa.zhouchang());
System.out.print("梯形的坐标:
");
aa.dayingzuobiao();
Circleaaa=newCircle(2.0);
Pointbbb;
bbb=aaa;
System.out.println("圆形的面积:
"+aaa.mianji());
System.out.println("移动后圆形的面积:
"+bbb.yidong(1.0,1.0,1.0));
System.out.println("圆形的周长:
"+aaa.zhouchang());
System.out.print("圆形的坐标:
");
aaa.dayingzuobiao();
}
}
2、编写一个Java应用程序,要求定义一个接口Shape,包含PI的定义,以及两个计算面积和周长的函数。
以该接口为基础扩展如下3个类:
Trangle、Leder和Circle,分别用来刻画“三角形”、“梯形”、和“圆形”。
具体要求如下:
a)Trangle类具有类型为double的三个边,定义必要的构造函数,Trangle类具有返回周长、面积以及修改三个边的功能。
另外,Trangle类还具有一个boolean型的属性,该属性用来判断三个属能否构成一个三角形。
还包括打印三角形坐标和三条边的方法。
b)Lader类具有类型double的上底、下底、高,具有返回面积和周长的功能,还包括打印梯形坐标和三条边的方法。
c)Circle类具有类型为double的半径、具有返回周长和面积的功能,还包括打印圆的坐标和三条边的方法。
测试类要求如下定义:
Shapet[]=newShape[9];
前三个元素用Trangle类的构造方法初始化三个三角形对象,接下来三个元素用Lader类的构造方法初始化三个不同的梯形对象,最后三个元素初始化三个不同的圆的对象,分别调用类型定义的方法进行测试,最后输出9个图形的总周长和总面积。
interfaceShape
{
publicstaticfinaldoublePI=3.14;
doublemianji();
doublezhouchang();
}
classTrangleimplementsShape//三角形
{
doublebian1;
doublebian2;
doublebian3;
Trangle()
{
bian1=1;
bian2=1;
bian3=1;
}
Trangle(doublebiana,doublebianb,doublebianc)
{
bian1=biana;
bian2=bianb;
bian3=bianc;
}
publicdoublemianji()
{
return(bian1*bian2*bian3*(1/2.0));
}
publicdoublezhouchang()
{
returnbian1+bian2+bian3;
}
doubleyidong(doubleyidong1,doubleyidong2,doubleyidong3)
{
bian1=bian1+yidong1;
bian2=bian2+yidong2;
bian3=bian3+yidong3;
return(bian1*bian2*bian3*(1/2.0));
}
booleanisPanduan(Trangles){
if(this.bian1+this.bian2>this.bian3||this.bian1+this.bian3>this.bian2||
this.bian2+this.bian3>this.bian1)
returntrue;
returnfalse;
}
voiddaying()
{
doublezuobiao;
zuobiao=Math.sqrt((bian2*bian2-bian1*bian1/4.0));
System.out.println("三角形第1边:
"+bian1);
System.out.println("三角形第2边:
"+bian2);
System.out.println("三角形第3边:
"+bian3);
System.out.println("三角形坐标1:
"+"("+"0"+","+"0"+")");
System.out.println("三角形坐标2:
"+"("+"0"+","+"bian1"+")");
System.out.println("三角形坐标3:
"+"("+bian1/2.0+","+zuobiao);
}
}
classLaderimplementsShape//梯形
{
doubleshangdi;
doublexiadi;
doublegao;
Lader()
{
shangdi=1;
xiadi=1;
gao=1;
}
Lader(doubleshangdi1,doublexiadi1,doublegao1)
{
shangdi=shangdi1;
xiadi=xiadi1;
gao=gao1;
}
publicdoublemianji()
{
return(((shangdi+xiadi)*gao)/2.0);
}
doubleyidong(doublea,doubleb,doublec)
{
shangdi=shangdi+a;
xiadi=xiadi+b;
gao=gao+c;
return0;
}
publicdoublezhouchang()
{
doublebiao;
biao=Math.sqrt(gao*gao+(xiadi-shangdi*shangdi)*(xiadi-shangdi*shangdi));
return2*biao+shangdi+xiadi;
}
voiddaying()
{
System.out.println("梯形上底"+shangdi);
System.out.println("梯形下底高"+xiadi);
System.out.println("梯形高"+gao);
}
}
classCircleimplementsShape//圆形
{
doubler;
Circle()
{
r=1;
}
Circle(doublebanjin)
{
r=banjin;
}
publicdoublemianji()
{
return(r*r*PI);
}
publicdoublezhouchang()
{
return2*r*PI;
}
voiddaying()
{
System.out.println("圆的半径"+r);
}
}
publicclasszzz{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
doublet[]={1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0};
Tranglea=newTrangle(t[0],t[1],t[2]);
Shapeb;
b=a;
System.out.println("三角形的面积:
"+a.mianji());
System.out.println("移动后三角形的面积:
"+a.yidong(1.0,1.0,1.0));
System.out.println("三角形的周长:
"+a.zhouchang());
System.out.print("三角形的坐标:
");
a.daying();
Laderaa=newLader(t[3],t[4],t[5]);
Shapebb;
bb=aa;
System.out.println("梯形的面积:
"+aa.mianji());
System.out.println("移动后梯形的面积:
"+aa.yidong(1.0,1.0,1.0));
System.out.println("梯形的周长:
"+aa.zhouchang());
System.out.print("梯形的坐标:
");
aa.daying();
Circleyuan1=newCircle(t[6]);
Circleyuan2=newCircle(t[7]);
Circleyuan3=newCircle(t[8]);
//Shapebbb;
//bbb=aaa;
System.out.println("圆形1的面积:
"+yuan1.mianji());
System.out.println("圆形2的面积:
"+yuan2.mianji());
System.out.println("圆形3的面积:
"+yuan3.mianji());
System.out.println("圆形1的周长:
"+yuan1.zhouchang());
System.out.println("圆形2的周长:
"+yuan2.zhouchang());
System.out.println("圆形3的周长:
"+yuan3.zhouchang());
System.out.print("圆形的坐标:
");
yuan1.daying();
yuan2.daying();
yuan3.daying();
}
}
三、实验小结
(调试过程中遇到的问题是如何解决的以及经验和体会;有哪些不明白的地方等。
)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 程序设计 实验 设计