0

抽象クラス Shape、いくつかのサブクラス、および面積、周囲を計算し、オーバーライドされる形状を描画するためのいくつかのメソッドがあります。このアプリケーションの抽象クラスでテンプレート メソッドを見つけようとしていますが、何も思いつきません。すべての形状で同一で、GUI でも何かを生成する一般的な方法は見つかりませんでした。2つの形状の面積を比較するメソッドを抽象クラスに持つことを考えましたが、これを使用できないと思うので(クラスのインスタンスを参照して)、その方法を理解できません抽象クラス。すべての形状に共通するものはありますか?また、テンプレートの方法は何でしょうか? ありがとうございました。

4

2 に答える 2

0

確かにareaEqualsを実行できます:

public abstract class Shape {
    public boolean areaEquals(Shape otherShape) {
        return this.area() == otherShape.area();
    }

    public abstract double area();
}

全体的な考え方は、面積の計算は各形状に固有のものであるということですが、比較は、独自の面積を計算できるすべての形状に共通です。

于 2012-12-24T07:48:20.723 に答える
0

ここにあなたのcompareArea()テンプレートメソッドがあります:

public class Test {
public static void main(String[] args) {
    Shape rec = new Rectangle();
    Shape sqr = new Square();
    int diff = rec.compareArea(sqr);
    System.out.println(diff);
 }
}

abstract class Shape{
public int compareArea(Shape otherShape){
    return computeArea() - otherShape.computeArea();
 }
abstract int computeArea();
}
class Square extends Shape{
int s = 2;
@Override
int computeArea() {
    return s * s;
 }
}
class Rectangle extends Shape{
int l = 3;
int b = 4;
@Override
int computeArea() {
    return l * b;
 }
}
于 2012-12-24T07:58:33.233 に答える