0

以下の質問は私を混乱させます、私は私の考えが正しいかどうかわかりません。これが質問です

3本の直線a、b、cが与えられます。2本の線の合計が常に3本目の線よりも大きい場合(つまり、a +b>cおよびb+c>aおよびa+c)、三角形を形成できます。

b)。次のようにJavaクラスTriangleを記述します。

Attributes: length of the three sides of the triangle 
Behaviour:
  • 渡された値に3辺の長さを設定するコンストラクター。値が三角形を形成できない場合、コンストラクターはInvalidValueExceptionオブジェクトをスローする必要があります。
    • 数式area=a + b + cを使用してTriangleオブジェクトの面積を計算するfindArea()メソッド

質問の次の部分は、GUIを作成することです。私はすでにそれをしました。

それで、上記の質問は、単に値を取得するように私に求めていますが、どこからですか?GUI経由ですか?またはコマンドラインベース?質問は具体的ではなかったので、値を受け入れる準備ができている変数を簡単に作成すると仮定できますか?

4

3 に答える 3

1

GUIの開発を依頼された場合は、GUIを介して値を入力する必要があると思います...そして、Triangleクラスにはa、b、cの3つのプロパティが必要です。

于 2012-10-11T09:00:36.360 に答える
0

テストクラスなどで今のところハードコーディングしてみませんか。

new Triangle(3,4,5);

このシナリオでは、さまざまな関数(有効か無効か)についてコードをテストすることに関心があるため、特定のデータセットを含むテスト(または複数のテスト)を作成します。

   // expected to be ok
   new Triangle(3,4,5);

   // expected exception
   new Triangle(1,1,3);

後者の場合、例外をキャッチし、例外が発生しない場合はエラーでプログラムから脱退する必要があります。

これを支援するために、単体テストフレームワークを確認することをお勧めします。

編集:あなたの修正された質問には、Triangleサイドのセッターが含まれています。フィールドを読み取り専用にし、構築時にこれを実行し、コンストラクターから例外をスローする方がよいと思います。セッターが必要な場合は、validate()ある段階でメソッドを呼び出す必要があります。そうしないと、Triangle無効なを作成する可能性があります。複数のサイドを設定している可能性があり、中間状態が無効である可能性があるため、セッターの呼び出しごとにバリデーターを呼び出すことはできないことに注意してください。

于 2012-10-11T08:43:42.980 に答える
0

それで、上記の質問は、単に値を取得するように私に求めていますが、どこからですか?

コンストラクターの引数から。それが次の意味です。

「3辺の長さを渡された値に設定するコンストラクター。」

例えば:

    public Triangle(int a, int b, int c) {
        this.a = a; this.b = b; this.c = c;
    }

GUI経由ですか?またはコマンドラインベース?

GUI(またはコマンドラインエントリポイント)は、おそらくどこかから値を取得し、それらをコンストラクター引数として渡します。または...任意のコードはTriangle、側面のハードワイヤード値を使用して単純にインスタンス化できます。例えば

    Triangle pythagorasFavourite = new Triangle(3, 4, 5);

質問は具体的ではなかったので、値を受け入れる準備ができている変数を作成するだけだと思いますか?

実際、それは具体的でした:上記を参照してください。


ただし、三角形の面積はではないことに注意してくださいarea = a + b + c。実際の式は次のとおりです。

三辺の長さがわかっているときの三角形の面積は

 1/4 * square-root [ P * (P-2a) * (P-2b) * (P-2c)]

ここで、Pは全周長と、aは3辺の長さです。bc

参照: http: //library.thinkquest.org/20991/gather/formula/data/297.html

于 2012-10-11T08:53:51.613 に答える