編寫Java程式。
(1)使用繼承機制,分别設計實作抽象基類圖形類,派生類圓形類、正方形類、長方形類,要求:
①有方法擷取圖形面積、擷取圖形周長等;
②使用構造方法為其成員屬性賦初值;
③在每個派生類中都重寫toString()方法,傳回所有屬性的資訊;
④根據文字描述合理設計類的其他成員屬性和方法。
(2)設計實作畫闆類,要求:
①長和寬分别為10.0與5.0的長方形;
②半徑為3.0的圓形;
③邊長為4.0的正方形;
④分别求三個對象的面積和周長,并将每個對象的所有屬性資訊列印到控制台。
2、基于上題背景,設計實作以下程式:
(1)設計Comparable接口,接口中設計compareTo()方法,用來比較對象。此方法的傳回值類型設計為int類型。此方法接收一個參數,參數類型為圖形類。
(2)在圖形類中實作compareTo()方法,用來比較兩個圖形的面積大小。
(3)在測試類中,建立圖形類的數組,數組中存放多個圓形、正方形、長方形對象,使用compareTo()方法找出數組中面積最大的圖形。
提示:比較對象時,可以将compareTo()方法的傳回值設定為1、0、-1,來代表比較結果,目前對象大、兩者相等或者目前對象小。再次提醒,此題涉及的代碼全部展示在此題的題号下,與上一題相獨立。
package zuoye0926;
/**
* <p>
* Title:Graph Description:抽象類的使用
*
*
*/
public abstract class Graph implements Comparable {// 定義一個抽象類
public abstract double area();
public abstract double girth();// 建立兩個方法
public int compareTo(Graph graph) {
int i = 0;
if (this.area() > graph.area()) {
return 1;
} else if (this.area() < graph.area()) {
return -1;
} else {
return i;
}
}
}
package zuoye0926;
/**
*
* @author Administrator
* 圓
*
*/
public class Round extends Graph{
private double raidus;
//構造方法,初始化參數
public Round(double raidus) {
super();
this.raidus = raidus;
}
public double getRaidus() {
return raidus;
}
public void setRaidus(double raidus) {
this.raidus = raidus;
}
/*
* 計算圓的面積
* @see zuoye0926.Graph#area()
*/
@Override
public double area() {
return 3.14*raidus*raidus;
}
/*
* 計算圓的周長
* @see zuoye0926.Graph#area()
*/
@Override
public double girth() {
return 2*3.14*raidus;
}
}
package zuoye0926;
public class Square extends Graph{
private double length;
public double getLength() {
return length;
}
public Square(double length) {
super();
this.length = length;
}
public double getlength() {
return length;
}
public void setlength(double length) {
this.length = length;
}
@Override
public double girth() {
return length*4;
}
@Override
public double area() {
return length*length;
}
}
package zuoye0926;
/**
*
* @author Administrator
* 長方形類繼承
*
*/
public class Oblong extends Graph{
private double length;
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
private double width;
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public Oblong(double length, double width) {
super();
this.length = length;
this.width = width;
}
public double getlength() {
return length;
}
public void setlength(double length) {
this.length = length;
}
public double area() {
return length*width;
}
@Override
public String toString() {
return "Square []";
}
@Override
public double girth() {
// TODO Auto-generated method stub
return length*2+width*2;
}
}
package zuoye0926;
public class TestGraph {
public static void main(String[] args) {
//使用多态的形式執行個體化圖形對象
Graph r=new Round(3.0);
System.out.println(r.area());
System.out.println(r.girth());
//圓
Graph d=new Oblong(4.0,5.0);
System.out.println(d.area());
System.out.println(d.girth());
//長方形
Graph s=new Square(5.0);
System.out.println(s.area());
System.out.println(s.girth());
//正方形
}
}

package zuoye0926;
/**
* Title:
* @author Administrator
*
*/
public interface Comparable {
public int compareTo(Graph graph);
}
package zuoye0926;
public class TestGraphs {
public static void main(String[]args){
//執行個體化對象數組
/**
* @param args
*/
//執行個體化圖形對象數組
Graph[] sha = new Graph[10];
for (int i = 0; i < 3; i++) {
Square c = new Square(2.0 + i);
sha[i] = c;
}
for (int i = 3; i < 7; i++) {
Square s = new Square(3.0 + i);
sha[i] = s;
}
for (int i = 7; i < 10; i++) {
Oblong r = new Oblong(3.0 + i ,4.0 +i);
sha[i] = r;
}
Graph max = sha[0];
for (int i = 0; i < sha.length; i++) {
if (sha[i].area() > max.area()) {
max = sha[i];
}
}
System.out.println(max.area());
}
}
