Java類-介面-異常
實驗(2):類-介面-異常
一、實驗目的:
學生能夠自己編寫類及介面的程式設計;能夠自定義異常類。
二、實驗要求:
獨立完成程式的編寫,並把源程式貼上到每個題目的下面,字型為“Times New Roman”,大小為“小四”,單倍行距,不能有空行,實驗報告表頭部分資訊填寫完整,格式不能修改。
三、實驗內容:
(一)建立一個名為Circle的類,半徑為r,此類有2個構造方法,一個預設的無參構造方法;一個有參構造方法,引數為r。包含3個例項函式:
(1)double getR():獲得半徑r的值。
(2)double getArea():獲得圓的面積。
(3)void setR(double r):設定半徑r的值。
源程式:
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不能構成三角形”。
源程式:
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());
}
}
執行結果截圖:
四、實驗小結
(寫出你在此次試驗中遇到的問題、解決方法及你的收穫。刪除本行)