Java面向对象程序设计 类封装
计算机工程系实验报告
课程名称:Java面向对象程序设计
实验项目名称: 类封装
班级: 姓名: 学号:
一、实 验 目 的:
掌握使用类来封装对象的属性和功能。
二、实 验 要 求:
1、编写一个Java应用程序,该程序中有3个类:Trangle,Lader和Circle,分别用来刻画三角形、梯
形和圆形,具体要求如下:
1)Trangle类具有三个边长、周长和面积属性,具有返回周长、面积以及修改三个边的功能。另外还
有一个boolean类型的属性,该属性用来判断三个数能否构成一个三角形。
2)Lader类具有上底、下底、高、面积属性,具有返回面积的功能。
3)Circle类具有半径、周长和面积属性,具有返回周长和面积的功能。
4)按程序模板的要求,将代码1-代码24替换为Java程序代码
5)给Trangle类增加三个方法,分别用来返回三个边:sideA,sideB,sideC。
6)让AreaAndLength类中的circle对象调用方法修改半径,然后输出修改后的半径以及修改半径后的圆
的面积和周长。
2、编写一个类Person,可描述姓名、性别、年龄,可获取姓名、性别、年龄。该类含两个构造方法,
一个无参数,一个带三个参数。编写主类,在主方法中分别用两个构造方法创建两个Person类的对象,分
别输出这两个对象的姓名、性别、年龄。
三、程 序 代 码:
1、程序模板
class Trangle
{
double sideA,sideB,sideC,area,length;
boolean boo;
public Trangle(double a,double b,double c)
{
sideA=a;
sideB=b;
sideC=c; //a,b,c分别赋值给sideA,sideB,sideC
if(sideA+sideB>sideC&&sideB+sideC>sideA&&sideA+sideC>sideB) //a,b,c构成三角形的条件
{
boo=true; //给boo赋值
}
else
{
boo=false; //给boo赋值
}
}
double getLength()
{
return length=sideA+sideB+sideC; //方法体,求出length的值并返回 }
public double getArea()
{
if(boo)
{
double p=(sideA+sideB+sideC)/2.0;
area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC)) ;
return area;
}
else
{
System.out.println("不是一个三角形,不能计算面积");
return 0;
}
}
public void setABC(double a,double b,double c)
{
sideA=a;
sideB=b;
sideC=c; //a,b,c分别赋值给sideA,sideB,sideC
if(sideA+sideB>sideC&&sideB+sideC>sideA&&sideA+sideC>sideB) {
boo=true; //给boo赋值
}
else
{
boo=false; //给boo赋值
}
}
double backsideA()
{
return sideA;
}
double backsideB()
{
return sideB;
}
double backsideC()
{
return sideC; //a,b,c构成三角形的条件
}
}
class Lader
{
double above,bottom,height,area;
Lader(double a,double b,double h)
{
above=a;
bottom=b;
height =h; //方法体
}
double getArea()
{
return area=((above+bottom)*height)/2.0; //方法体,求出area返回 }
}
class Circle
{
double radius,area,length;
Circle(double r)
{
radius=r; //方法体
}
double getArea()
{
return area=3.14*radius*radius; //方法体,求出area返回
}
double getLength()
{
return length=3.14*2*radius; //方法体,求出length返回
}
void setRadius(double newRadius)
{
radius=newRadius;
}
double getRadius()
{
return radius;
}
}
public class AreaAndLength
{
public static void main(String args[])
{
double length,area,radius;
Circle circle; //创建对象circle
Trangle trangle; //创建对象trangle
Lader lader; //创建对象lader
circle=new Circle(10.3);
trangle=new Trangle(0,0,0);
lader=new Lader(13.6,15.6,4.3);
length=circle.getLength(); // circle调用方法返回周长并赋值给length System.out.println("圆的周长:"+length);
area=circle.getArea();// circle调用方法返回面积并赋值给area
System.out.println("圆的面积:"+area);
length=trangle.getLength(); // trangle调用方法返回周长并赋值给length System.out.println("三角形的周长:"+length);
area=trangle.getArea(); // trangle调用方法返回面积并赋值给area System.out.println("三角形的面积:"+area);
area=lader.getArea(); //lader调用方法返回面积并赋值给area
System.out.println("梯形的面积:"+area);
trangle=new Trangle(12.0,34.0,1.0); //将三角形三个边修改为12,34,1 area=trangle.getArea(); // trangle调用方法返回面积并赋值给area System.out.println("三角形的面积:"+area);
circle.setRadius(15.0);
radius=circle.getRadius();
System.out.println("圆的半径:"+radius);
length=circle.getLength(); // circle调用方法返回周长并赋值给length System.out.println("圆的周长:"+length);
area=circle.getArea();// circle调用方法返回面积并赋值给area
System.out.println("圆的面积:"+area);
}
}
2、程序代码
class Person
{
int 年龄;
char 姓名, 性别;
Person()
{ }
Person(char a, char b, int c)
{
姓名 = a;
性别 = b;
年龄 = c;
}
char computer姓名()
{
return 姓名;
}
char computer性别()
{
return 性别;
}
int computer年龄()
{
return 年龄;
}
}
public class test
{
public static void main(String args[])
{
Person p1;
Person p2;
char p1姓名, p2姓名, p1性别, p2性别;
int p1年龄, p2年龄;
p1=new Person();
p2=new Person('明','男',20);
p1姓名 = p1.computer姓名();
p1性别 = p1.computer性别();
p1年龄 = p1.computer年龄();
p2姓名 = p2.computer姓名();
p2性别 = p2.computer性别();
p2年龄 = p2.computer年龄();
System.out.printf("p1的信息 %c %c %d ", p1姓名, p1性别, p1年龄); System.out.printf("p2的信息 %c %c %d ", p2姓名, p2性别, p2年龄); }
}
四、运 行 结 果 :
1.
2.
五、思 考 题
1、程序1中省略代码15,编译能通过吗?
答:不能。
2、程序1中省略代码15,运行时会出现怎样的异常提示? 答:提示“找不到符号”。