实验三类的构成和对象的使用.docx
《实验三类的构成和对象的使用.docx》由会员分享,可在线阅读,更多相关《实验三类的构成和对象的使用.docx(10页珍藏版)》请在冰豆网上搜索。
实验三类的构成和对象的使用
《面向对象技术导论》实验报告
学号:
姓名:
专业:
指导教师:
实验内容:
实验时间:
实验地点:
实验二Java基本语法练习
【开发语言及实现平台或实验环境】
Windows2000或XP,JDK1.6与Jcreator4.0
【实验目的】
1.了解Java的数据类型
2.掌握各种变量的声明方式
3.理解运算符的优先级
4.掌握java基本数据类型。
运算符与表达式、数组的使用方法
5.理解Java程序语法结构,掌握顺序结构、选择结构和循环结构语法的程序设计方法
【实验要求】
1.编写一个声明java不同数据类型变量的程序
2.编写一个使用运算符、表达式、变量的程序
3.编写一个使用java数据的程序
4.编写表达式语句、复合语句的程序
5.编写使用不同选择结构的程序
6.编写使用不同循环结构的程序
【实验内容】
一、包的应用
在Elearning下载ygw.rar文件,进行解压。
得到Circle.class、Rect.class和MyWindow.class三个字节码文件,这三个文件都在ygw包中。
解压后这三个字节码文件在ygw文件夹中。
编写一个程序,把ygw文件夹放到所编写源文件所在的文件夹中,用import导入这三个类,分别定义三个类的对象,求半径为3的圆和长、宽分别为10、5的矩形的面积,定义MyWindow的一个对象后,观察结果,理解封装的好处(不需要知道类的内部细节,就可以方便的使用它,降低编程的难度)。
注意:
在Jcreator、Netbean等集成开发工具下,当定义了某个类的对象后,例如"Circlec=newCircle();",当输入"c.",当.出现后,将出现该类可用的方法和属性列表,可用鼠标直接选择所要的方法或属性。
程序代码:
importygw.Circle;
importygw.MyWindow;
importygw.Rect;
classyingyong{
publicstaticvoidmain(String[]args){
Circlec=newCircle();
MyWindowd=newMyWindow();
Recte=newRect();
e.setHeight(10);
e.setWidth(5);
c.setRadius(10.0);
System.out.println("圆的周长为:
"+c.getZhouchang());
System.out.println("圆的面积为:
"+c.getArea());
System.out.println("矩形的周长:
"+e.getZhouchang());
}
}
结果:
二、三角形和圆柱体的类封装及构造方法的使用(每个类存为不同的.java源文件)
(1)创建一个三角形类Triangle,放入以你的姓名为包名的包中。
三角形类Triangle包含的属性有三条边的长sideA,sideB,sideC,,这些属性设为private类型;包含的方法有构造方法(两个:
一个没有参数,默认三边均为1.0;一个给定三条边的长度,并进行判定给定的三条边是否能组成三角形,如果不能构成三角形则报错),求面积方法getArea(),求周长方法getLength();
提示:
设三角形的三边长为a,b,c,则它的面积为
,其中S=(a+b+c)/2,开平方的方法为Math.sqrt()。
packagesx;
publicclassTriangle{
privatedoublesideA;
privatedoublesideB;
privatedoublesideC;
publicTriangle(){
sideA=1.0;
sideB=1.0;
sideC=1.0;
}
publicTriangle(doublea,doubleb,doublec){
if(a+b>c&&a+c>b&&b+c>a){
sideA=a;
sideB=b;
sideC=c;
}
else
System.out.println("不能构造三角形");
}
publicdoublegetArea(){
doubleS,s;
S=(sideA+sideB+sideC)/2;
s=Math.sqrt(S*(S-sideA)*(S-sideB)*(S-sideC));
returns;
}
publicdoublegetLength(){
doublec;
c=sideA+sideB+sideC;
returnc;
}
}
(2)创建一个圆柱体类YZT,放入以你的姓名为包名的包中。
圆柱体类YZT包含的属性有底面半径radius和圆柱体的高height,这些属性设为private类型;包含的方法有构造方法(两个:
一个没有参数,默认底面半径和高均为1.0;一个给定半径radius和圆柱体的高height,并且要求均大于0.0,符合实际圆柱体要求,否则报错),包含的方法有设置底面半径setRadius(),获取底面半径getRadius(),设置高setHeight(),获取高getHeight(),求体积calTJ(),求表面积calBMJ();
packagesx;
publicclassYZT{
privatedoubleheight;
privatedoubleradius;
publicYZT(){
radius=1.0;
height=1.0;
}
publicYZT(doubler1,doubleh1){
radius=r1;
height=h1;
}
publicbooleansetRadius(doubler1){
if(r1>0){
radius=r1;
returntrue;
}
else{
System.out.println("不能构造圆柱体");
returnfalse;
}
}
publicbooleansetHeight(doubleh1){
if(h1>0){
height=h1;
returntrue;
}
else{
System.out.println("不能构造圆柱体");
returnfalse;}
}
publicdoublegetRadius(){
returnradius;
}
publicdoublegetHeight(){
returnheight;
}
publicdoublecalTJ(){
returnMath.PI*Math.pow(radius,2)*height;
}
publicdoublecalBMJ(){
returnMath.PI*Math.pow(radius,2)*2+2*Math.PI*radius*height;
}
}
(3)用import导入三角形类Triangle,用Triangle类定义以下三个对象:
●定义默认的三角形,求它的面积和周长;
●定义边长分别为1.0,2.0,5.0的三角形,查看输出错误;
●定义边长分别为25,20,37.5的三角形,求它的面积和周长;
程序代码:
importsx.Triangle;
classsan{
publicstaticvoidmain(String[]args){
Trianglec=newTriangle();
System.out.println("
(1)三角形的周长为:
"+c.getLength());
System.out.println("三角形的面积为:
"+c.getArea());
Triangled=newTriangle(1.0,2.0,5.0);
System.out.println("
(2)三角形的周长为:
"+d.getLength());
System.out.println("三角形的面积为:
"+d.getArea());
Trianglee=newTriangle(25,20,37.5);
System.out.println("(3)三角形的周长为:
"+e.getLength());
System.out.println("三角形的面积为:
"+e.getArea());
}
}结果:
(4)用import导入圆柱体类YZT,用YZT类定义以下三个对象:
●定义默认的圆柱体,求它的体积和表面积;
●定义半径radius和高heigth分别为2.0,-10.5的圆柱体,查看输出错误;
●定义半径radius和高heigth分别为12.5,11.0的圆柱体,求它的体积和表面积。
程序代码:
importsx.YZT;
classsan{
publicstaticvoidmain(String[]args){
YZTc=newYZT();
System.out.println("
(1)\n圆柱体的体积为:
"+c.calTJ());
System.out.println("圆柱体的表面积为:
"+c.calBMJ());
YZTd=newYZT(-10.5,2.0);
System.out.println("
(2)");
System.out.println("高"+d.setHeight(-10.5));
System.out.println("底面半径"+d.setRadius(2.0));
YZTe=newYZT(12.5,11.0);
System.out.println("(3)\n圆柱体的体积为:
"+e.calTJ());
System.out.println("圆柱体的表面积为:
"+e.calBMJ());
}
}
结果:
三、静态成员的使用
(1)使用Math类下的静态方法计算sin30°+tan50°+sqrt(10)的值。
程序代码:
packagemath;
importjava.lang.Math;
publicclassmath{
publicstaticvoidmain(String[]args)
{
System.out.println("sin30°+tan50°+sqrt(10)的值为"+(Math.sin(Math.toRadians(30))+Math.tan(Math.toRadians(50))+Math.sqrt(10)));
}
}
结果:
(2)声明一个点类Point,有两个private类型变量保存点坐标,一个类变量(静态变量)保存已有点的个数。
生成10个点的Point数组,第i个点的坐标为(i,i2),依次生成每一个点,输出每一个点的坐标和当前已有点的个数。
程序代码:
publicclasspoint{
privateintx;
privateinty;
publicstaticintpointCount=0;
publicpoint(intx,inty){
this.x=x;
this.y=y;
pointCount++;
}
publicintgetpoint1(){
returnx;
}
publicintgetpoint2(){
returny;
}
}
classexmple{
publicstaticvoidmain(String[]args){
inti;
for(i=0;i<10;i++){
pointq=newpoint(i,i*i);
System.out.printf("点的坐标:
(%d,%d),保存的点的个数:
%d\n",q.getpoint1(),q.getpoint2(),q.pointCount);
}
}
}
结果: