Java-面向對象編程練習02


(1)設計一個名為Geometric的幾何圖形的抽象類,該類包括:

①兩個名為color、filled屬性分別表示圖形顏色和是否填充。

②一個無參的構造方法。

③一個能創建指定顏色和填充值的構造方法。

④一個名為getArea()的抽象方法,返回圖形的面積。

⑤一個名為getPerimeter()的抽象方法,返回圖形的周長。

⑥一個名為toString()的方法,返回圓的字符串描述。

 

代碼部分:

package com.sdbi.edu.zhaojiaao;
/*(1)設計一個名為Geometric的幾何圖形的抽象類,該類包括:

①兩個名為color、filled屬性分別表示圖形顏色和是否填充。

②一個無參的構造方法。

③一個能創建指定顏色和填充值的構造方法。

④一個名為getArea()的抽象方法,返回圖形的面積。

⑤一個名為getPerimeter()的抽象方法,返回圖形的周長。

⑥一個名為toString()的方法,返回圓的字符串描述。
 
 */

abstract class Geometric {
//①兩個名為color、filled屬性分別表示圖形顏色和是否填充。
    String color;// 表示圖形顏色
    boolean filled;// 表示是否填充

//②一個無參的構造方法。    
    public Geometric() {

    }

//③一個能創建指定顏色和填充值的構造方法。
    public Geometric(String color, boolean filled) {
        this.color = color;
        this.filled = filled;
    }

//④一個名為getArea()的抽象方法,返回圖形的面積。    
    abstract double getArea();

//⑤一個名為getPerimeter()的抽象方法,返回圖形的周長。
    abstract double getPerimeter();

//⑥一個名為toString()的方法,返回圓的字符串描述。
    @Override
    public String toString() {
        return "Geometric [color=" + color + ", filled=" + filled + ", getArea()=" + getArea() + ", getPerimeter()="
                + getPerimeter() + ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()="
                + super.toString() + "]";
    }

}

效果截圖:

 

 

(2)設計一個名為Circle的圓類來實現Geometric類,該類包括:

①一個名為radius的double屬性表示半徑。

②一個無參構造方法創建圓。

③一個能創建指定radius的圓的構造方法。

④radius的訪問器方法。

⑤一個名為getArea()的方法,返回該圓的面積。

⑥一個名為getPerimeter()的方法,返回圓的周長。

⑦一個名為toString()的方法,返回該圓的字符串描述。

 

代碼部分:

package com.sdbi.edu.zhaojiaao;
/*(2)設計一個名為Circle的圓類來實現Geometric類,該類包括:

①一個名為radius的double屬性表示半徑。

②一個無參構造方法創建圓。

③一個能創建指定radius的圓的構造方法。

④radius的訪問器方法。

⑤一個名為getArea()的方法,返回該圓的面積。

⑥一個名為getPerimeter()的方法,返回圓的周長。

⑦一個名為toString()的方法,返回該圓的字符串描述。
*/

public class Circle extends Geometric {
//①一個名為radius的double屬性表示半徑。
    double radius;// 表示半徑

//②一個無參構造方法創建圓。
    public Circle() {

    }

//③一個能創建指定radius的圓的構造方法。
    public Circle(double radius) {
        this.radius = radius;
    }

//④radius的訪問器方法。
    public double getRadius() {
        return radius;
    }

    public void setRadius(double radius) {
        this.radius = radius;
    }

//⑤一個名為getArea()的方法,返回該圓的面積。
    @Override
    double getArea() {
        return radius * radius * 3.14;
    }

//⑥一個名為getPerimeter()的方法,返回圓的周長。
    @Override
    double getPerimeter() {
        return radius * 2 * 3.14;
    }

//⑦一個名為toString()的方法,返回該圓的字符串描述。
    @Override
    public String toString() {
        return "Circle [radius=" + radius + ", color=" + color + ", filled=" + filled + ", getRadius()=" + getRadius()
                + ", getArea()=" + getArea() + ", getPerimeter()=" + getPerimeter() + ", toString()=" + super.toString()
                + ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + "]";
    }

}

效果截圖:

 

 

(3)設計一個名為Rectangle的矩形類來實現Geometric類,該類包括:

①兩個名為side1、side2的double屬性表示矩形的兩條邊。

②一個無參構造方法創建矩形。

③一個能創建指定side1和side2的矩形的構造方法。

④side1和side2的訪問器方法。

⑤一個名為getArea()的方法,返回該矩形的面積。

⑥一個名為gelPerimeter()的方法,返回該矩形的周長。

⑦一個名為toString()的方法,返回該矩形的字符串描述。

 

代碼部分:

package com.sdbi.edu.zhaojiaao;
/*(3)設計一個名為Rectangle的矩形類來實現Geometric類,該類包括:

①兩個名為side1、side2的double屬性表示矩形的兩條邊。

②一個無參構造方法創建矩形。

③一個能創建指定side1和side2的矩形的構造方法。

④side1和side2的訪問器方法。

⑤一個名為getArea()的方法,返回該矩形的面積。

⑥一個名為gelPerimeter()的方法,返回該矩形的周長。

⑦一個名為toString()的方法,返回該矩形的字符串描述。
*/

public class Rectangle extends Geometric {
//①兩個名為side1、side2的double屬性表示矩形的兩條邊。
    double side1;// 表示矩形的兩條邊
    double side2;

//②一個無參構造方法創建矩形。
    public Rectangle() {

    }

//③一個能創建指定side1和side2的矩形的構造方法。
    public Rectangle(double side1, double side2) {
        this.side1 = side1;
        this.side2 = side2;
    }

//④side1和side2的訪問器方法。
    public double getSide1() {
        return side1;
    }

    public void setSide1(double side1) {
        this.side1 = side1;
    }

    public double getSide2() {
        return side2;
    }

    public void setSide2(double side2) {
        this.side2 = side2;
    }

//⑤一個名為getArea()的方法,返回該矩形的面積。
    @Override
    double getArea() {
        return side1 * side2;
    }

//⑥一個名為gelPerimeter()的方法,返回該矩形的周長。
    @Override
    double getPerimeter() {
        return (side1 + side2) * 2;
    }

//⑦一個名為toString()的方法,返回該矩形的字符串描述。
    @Override
    public String toString() {
        return "Rectangle [side1=" + side1 + ", side2=" + side2 + ", color=" + color + ", filled=" + filled
                + ", getSide1()=" + getSide1() + ", getSide2()=" + getSide2() + ", getArea()=" + getArea()
                + ", getPerimeter()=" + getPerimeter() + ", toString()=" + super.toString() + ", getClass()="
                + getClass() + ", hashCode()=" + hashCode() + "]";
    }
}

效果截圖:

 

 

(4)設計一個名為Triangle的三角形類來實現Geometric類,該類包括:

①三個名為side1,side2和side3的double屬性表示三角形的三條邊。

②一個無參構造方法創建三角形。

③一個能創建指定side1,side2和side3的矩形的構造方法。

④side1,side2和side3的訪問器方法。

⑤一個名為getArea()的方法,返回該三角形的面積。

⑥一個名為getPerimeter()的方法,返回該三角形的周長。

⑦一個名為isTriangle()的方法,判斷三邊是否能構成三角形。

⑧一個名為toString()的方法,返回三邊較小的字符串描述。

 

代碼部分:

package com.sdbi.edu.zhaojiaao;
/*(4)設計一個名為Triangle的三角形類來實現Geometric類,該類包括:

①三個名為side1,side2和side3的double屬性表示三角形的三條邊。

②一個無參構造方法創建三角形。

③一個能創建指定side1,side2和side3的矩形的構造方法。

④side1,side2和side3的訪問器方法。

⑤一個名為getArea()的方法,返回該三角形的面積。

⑥一個名為getPerimeter()的方法,返回該三角形的周長。

⑦一個名為isTriangle()的方法,判斷三邊是否能構成三角形。

⑧一個名為toString()的方法,返回三邊較小的字符串描述。
*/

public class Triangle extends Geometric {
//①三個名為side1,side2和side3的double屬性表示三角形的三條邊。
    double side1;// 表示三角形的三條邊
    double side2;
    double side3;

//②一個無參構造方法創建三角形。
    public Triangle() {

    }

//③一個能創建指定side1,side2和side3的矩形的構造方法。
    public Triangle(double side1, double side2, double side3) {
        this.side1 = side1;
        this.side2 = side2;
        this.side3 = side3;
    }

//④side1,side2和side3的訪問器方法。
    public double getSide1() {
        return side1;
    }

    public void setSide1(double side1) {
        this.side1 = side1;
    }

    public double getSide2() {
        return side2;
    }

    public void setSide2(double side2) {
        this.side2 = side2;
    }

    public double getSide3() {
        return side3;
    }

    public void setSide3(double side3) {
        this.side3 = side3;
    }

//⑤一個名為getArea()的方法,返回該三角形的面積。
    @Override
    double getArea() {
        double s = (side1 + side2 + side3) / 2;
        return Math.sqrt(s * (s - side1) * (s - side2) * (s - side3));
    }

//⑥一個名為getPerimeter()的方法,返回該三角形的周長。
    @Override
    double getPerimeter() {
        return side1 + side2 + side3;
    }

//⑦一個名為isTriangle()的方法,判斷三邊是否能構成三角形。
    boolean isTriangle(double side1, double side2, double side3) {
        if ((side1 + side2) > side3 && (side1 + side3) > side2 && (side2 + side3) > side1) {
            return true;// 能構成三角形
        } else {
            return false;// 不能構成三角形
        }
    }

//⑧一個名為toString()的方法,返回三邊較小的字符串描述。
    @Override
    public String toString() {
        // 求較小的邊
        // (1)利用if語句使得side1 <= side2
        double temp;
        if (side1 >= side2) {
            temp = side1;
            side1 = side2;
            side2 = temp;
        }
        // (2)利用if語句使得side1 <= side3
        if (side1 >= side3) {
            temp = side1;
            side1 = side3;
            side3 = temp;
        }
        // (3)此時side1變量里存儲的數值最小,即為較小的邊
        return "Triangle [side1=" + side1 + "]";

    }
}

效果截圖:

 

 

 (5)編寫測試類,測試圖形的面積和周長。

 

代碼部分:

package com.sdbi.edu.zhaojiaao;

import java.util.Scanner;

//(5)編寫測試類,測試圖形的面積和周長。

public class Demo {
    private static Scanner sc;

    public static void main(String[] args) {
        sc = new Scanner(System.in);
        // Circle類(圓)
        // 創建一個Circle類的對象(圓),並為其半徑賦初始值
        System.out.println("請為圓的半徑賦值:");
        double radius = sc.nextDouble();
        Circle circle = new Circle(radius);
        // 測試圓的面積和周長
        System.out.println("圓的面積為:" + circle.getArea());
        System.out.println("圓的周長為:" + circle.getPerimeter());
        // 返回該圓的字符串描述
        System.out.println(circle.toString());
        System.out.println("--------------------------");

        // Rectangle類(矩形)
        // 創建一個Rectangle類的對象(矩形),並分別為其兩邊長賦初始值
        System.out.println("請分別為矩形的兩條邊長賦值:");
        double side1 = sc.nextDouble();
        double side2 = sc.nextDouble();
        Rectangle rectangle = new Rectangle(side1, side2);
        // 測試矩形的面積和周長
        System.out.println("矩形的面積為:" + rectangle.getArea());
        System.out.println("矩形的周長為:" + rectangle.getPerimeter());
        // 返回該矩形的字符串描述
        System.out.println(rectangle.toString());
        System.out.println("--------------------------");

        // Triangle類(三角形)
        // 創建一個Triangle類的對象(三角形),並分別為其三邊長賦初始值
        To: while (true) {
            System.out.println("請分別為三角形的三條邊長賦值:");
            double side01 = sc.nextDouble();
            double side02 = sc.nextDouble();
            double side03 = sc.nextDouble();
            Triangle triangle = new Triangle(side01, side02, side03);
            // 判斷能否構成三角形
            if (triangle.isTriangle(side01, side02, side03)) {
                // 能構成三角形
                // 測試三角形的面積和周長
                System.out.println("三角形的面積為:" + triangle.getArea());
                System.out.println("三角形的周長為:" + triangle.getPerimeter());
                // 返回三邊較小的字符串描述
                System.out.println(triangle.toString());
                break To;
            } else {
                // 不能構成三角形
                System.out.println("不能構成三角形,請重新為其三條邊長賦值");
            }
        }
    }
}

效果截圖:

  運行結果:

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM