1. ホーム
  2. java

[解決済み] (Triangle クラス) GeometricObject を継承した Triangle というクラスを設計する。

2022-01-31 22:25:02

質問

クラスが含まれています。

  • 3つの ダブル というデータフィールドがあります。 サイド1 , サイド2 そして サイド3 をデフォルト値として使用します。 1.0 三角形の3辺を表す

  • を指定した三角形を作成する引数なしのコンストラクタです。 サイド1 , サイド2 サイド3 .

  • 3つのデータフィールドのアクセッサメソッド。

  • という名前のメソッドは getArea() は、この三角形の面積を返します。

  • という名前のメソッドは getPerimeter() は、この三角形の周囲長を返します。

*というメソッドがあります。 toString() は、三角形の説明を文字列で返す。

三角形の面積を計算する公式は、An introduction to java programming 9th edition の ProgrammingExercise 2.15() を参照してください。 は、その toString() メソッドは次のように実装されています。

三角形:side1 = " + side1 + " side2 = " + side2 + " side3 " + side3.Return "。

クラスの UML ダイアグラムを作成します。 トライアングル ジオメトリックオブジェクト を作成し、そのクラスを実装する。三角形の3つの辺、色、および三角形が塗りつぶされるかどうかを示すブール値を入力するようユーザに促すテストプログラムを作成しなさい。このプログラムでは 三角形 オブジェクトにこれらの辺を設定し フィルド プロパティを入力する。プログラムは、面積、周囲長、色、および塗りつぶされているかどうかを示す真偽を表示する必要があります。


練習問題で困っているのは、テストプログラムの部分です。

もし、入力から三角形を作る方法について、ご指摘いただければ幸いです。

現在、私が持っているコードは次のとおりです。

GeometricObject

public class GeometricObject {
    private String color = " white ";
    private boolean filled;
    private java.util.Date dateCreated;

    public GeometricObject() {
        dateCreated = new java.util.Date();
    }

    public GeometricObject(String color, boolean filled) {
        dateCreated = new java.util.Date();
        this.color = color;
        this.filled = filled;   
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public boolean isFilled() {
        return filled;
    }

    public void setFilled(boolean filled) {
        this.filled = filled;
    }

    public java.util.Date getDateCreated() {
        return dateCreated;
    }

    public String toString() {
        return "Created on " + dateCreated + "\n color: " + color + " and filled ";                 
    }   
 }

トライアングル・プログラム

public class Triangle extends GeometricObject {
    private double side1 = 1.0;
    private double side2 = 1.0;
    private double side3 = 1.0;

    public Triangle() {
    }

    public Triangle(double side1, double side2, double side3) {
        this.side1 = side1;
        this.side2 = side2;
        this.side3 = side3;
    }

    public double setSide1() {
        return side1;
    }

    public double setSide2() {
        return side2;
    }

    public double setSide3() {
        return side3;
    }

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

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

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

    public double getArea() {
        return (side1 + side2 + side3) / 2;
    }

    public double getPerimeter() {
        return side1 + side2 + side3;
    }

    public String toString() {
    return " Triangle: Side 1 = " + side1 + " Side 2 = " + side2
           + " Side 3 = " + side3;
    }
}

テストプログラムです。

import java.util.Scanner;

public class TestTriangle  {
    private double side1 = 1.0;
    private double side2 = 1.0;
    private double side3 = 1.0;

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("Enter three sides of the Triangle");
        double side1 = input.nextDouble();
        double side2 = input.nextDouble();
        double side3 = input.nextDouble();

        System.out.println("Enter the color of the Triangle");
        String color = input.next();

        System.out.println(" Is the Triangle filled? Reply with 'True' or 'False' ");

        String filled = input.next(); 
    }
    {
        new Triangle(side1, side2, side3);
        //How do i get the information into theTriangle?

        System.out.println("The Triangle Sides are \n side 1: " + side1 + "\n Side 2: " + side2 + "\n Side 3: " + side3);
        System.out.println("The Triangle's Area is " + (side1 + side2 + side3) / 2);
        System.out.println("The Triangle's Perimeter is "
                           + (side1 + side2 + side3));
        System.out.println("The Triangle's Color is " + //what goes here?);
        System.out.println("Is the Triangle filled? " + //what goes here?);

    }
}

解決方法は?

を新規に作成する必要があります。 Triangle を参照できるようにするため、このようなオブジェクトを作成します。

Trangle triangle = new Triangle(side1, side2, side3);

  //     ^^^^^^ This is the most important thing you're missing.  You need a reference
  //            point for your object.  That's the only way you can access it's
  //            properties.    

また filledcolor プロパティ

triangle.setFilled(filled);
triangle.setColor(color);

そして、そのメソッドを次のように呼び出すことができる。

System.out.println("The Triangle Sides are \n side 1: " 
       + triangle.getSide1() + "\n Side 2: " + triangle.getSide2() 
       + "\n Side 3: " + triangle.getSide3());

System.out.println("The Triangle's Area is " + triangle.getArea());

System.out.println("The Triangle's Perimeter is " + triangle.getPerimeter();

System.out.println("The Triangle's Color is " + triangle.getColor());
System.out.println("Is the Triangle filled? " + triangle.isFilled());

にアクセスできるようになりました。 GeometricObject 's isFilled() , setFilled() , getColor() および setColor() というのも TriangleGeometricObject ( extends ) のすべてのメソッドを継承しています。

ちなみに、これは三角形の面積を計算する方法ではない。

public double getArea() {
    return (side1 + side2 + side3) / 2;   // This is so wrong
}

これをチェックする リンク 正しい計算式はこちら

編集:コードに別の問題がある場合

public double setSide1() {
    return side1;
}

public double setSide2() {
    return side2;
}

public double setSide3() {
    return side3;
}

/**** Should Be ******/

public double getSide1() {
    return side1;
}

public double getSide2() {
    return side2;
}

public double getSide3() {
    return side3;
}

編集:トライアングル・フォーミュラ

public double getArea() {
    int p = getPerimeter() / 2
    return Math.sqrt(p * ((p - side1) * (p - side2) * (p - side3));
}