一、实验目的:
学生能够自己编写类及接口的编程;能够自定义异常类。
二、实验要求:
独立完成程序的编写,并把源程序粘贴到每个题目的下面,字体为“Times New Roman”,大小为“小四”,单倍行距,不能有空行,实验报告表头部分信息填写完整,格式不能修改。
三、实验内容:
(一)创建一个名为Circle的类,半径为r,此类有2个构造方法,一个默认的无参构造方法;一个有参构造方法,参数为r。包含3个实例函数:
(1)double getR():获得半径r的值。
(2)double getArea():获得圆的面积。
(3)void setR(double r):设置半径r的值。
并编写类TestCircle测试Circle类。
源程序:
class Circle {
final double PI = 3.1415926;
private double r = 100;
Circle(){}
Circle(double r){
this.r = r;
}
public double getR(){
return r;
}
public double getArea(){
return PI*r*r;
}
public void setR(double r){
this.r = r;
}
}
public class TestCircle {
public static void main(String[] args) {
Circle c1 = new Circle();
c1.setR(1);
System.out.println(c1.getR());
System.out.println(c1.getArea());
Circle c2 = new Circle(10);
c1.setR(1);
System.out.println(c1.getArea());
System.out.println(c2.getR());
System.out.println(c2.getArea());
c2.setR(13);
System.out.println(c2.getArea());
}
private char[] getArea() {
// TODO Auto-generated method stub
return null;
}
private char[] getR() {
// TODO Auto-generated method stub
return null;
}
}
运行结果截图:
(二)创建一个名为Triangle的类,三个边为a,b,c,此类有2个构造方法,一个默认的无参构造方法;一个有参构造方法,参数为a,b,c。包含3个实例函数:
(1)double[] getABC():获得三个边的值。
(2)double getArea():获得三角形的面积。
(3)void setABC(double a, double b, double c):设置三个边的值。
(4)在有参构造方法和setABC(double a, double b, double c)方法中要判断三个参数是否能构成一个三角形。如果不能构成三角形,则抛出NotTriangleException异常(NotTriangleException类为自定义异常类),显示异常信息“a,b,c不能构成三角形”。
并编写类TestTriangle测试Triangle类。
源程序:
class Triangle {
private double a,b,c;
Triangle(){}
Triangle(double a,double b,double c){
if(a+b>c&a+c>b&c+b>a){
this.a = a;
this.b = b;
this.c = c;
}else{
System.out.println("三边不能构成三角形");
}
}
double[] gestABC(){
double[] x = {a,b,c};
return x;
}
double getArea(){
double s = a+b+c;
s = s/2;
s=s*(s-a)*(s-b)*(s-c);
System.out.println("s:"+s);
double x = Math.pow(s, 1.0/2);
System.out.println("x:"+x);
return x;
}
void setABC(double a,double b,double c){
this.a = a;
this.b = b;
this.c = c;
}
}
public class TestTriangle {
/**
* @param args
*/
public static void main(String[] args) {
Triangle c1 = new Triangle();
Triangle c2 = new Triangle(3,4,5);
System.out.println(c1.gestABC());
System.out.println(c1.getArea());
c1.setABC(3,4,5);
System.out.println(c1.getArea());
System.out.println(c2.gestABC());
System.out.println(c2.getArea());
c2.setABC(3,4,5);
System.out.println(c2.getArea());
}
}
运行结果截图:
(三)设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声,要求如下:
(1)编写接口Animal。接口中有2个抽象方法:cry()和getAnimalName(),即要求实现该接口的各种具体动物类给出自己的叫声和种类名称。
(2)编写模拟器类Simulator。该类有一个playSound(Animal animal)方法,参数animal可以调用实现Animal接口的实现类中重写的cry()方法打印具体动物的声音,调用重写的getAnimalName()方法打印动物种类的名称。
(3)编写实现Animal接口的类Dog和Cat。
(4)编写主类TestSimulator。在主类的main方法中至少包含如下代码:
Simulator simulator = new Simulator();
simulator.playSound(new Dog());
simulator.playSound(new Cat());
源程序:
class RecTangle {
double h,w;
RecTangle(){}
RecTangle(double a,double b){
this.h = h;
this.w = w;
}
double[]getHW(){
double[] x = {h,w};
return x;
}
double getArea(){
double s = h*w;
return s;
}
void setHW(double h,double w){
this.h = h;
this.w = w;
}
}
public class TestRecTangle {
/**
* @param args
*/
public static void main(String[] args) {
RecTangle c1 = new RecTangle();
c1.setHW(1,2);
System.out.println(c1.getHW());
System.out.println(c1.getArea());
RecTangle c2 = new RecTangle();
c1.setHW(1,2);
System.out.println(c1.getArea());
System.out.println(c2.getHW());
System.out.println(c2.getArea());
c2.setHW(1,2);
System.out.println(c2.getArea());
}
}
四、实验小结
(写出你在此次试验中遇到的问题、解决方法及你的收获。删除本行)