2

形状の面積を double として返す area() メソッドを持つ Shape インターフェイスを作成します。Shape インターフェイスを実装するクラス Circle および Rectangle を作成します。これらのクラスには、コンストラクターによって設定される寸法 (円の場合は半径、四角形の場合は高さと幅) を反映する属性があります。

setColour(Color c)、setPosition(int x, int y)、および draw(Graphics g) メソッドを使用して Drawable インターフェイスを作成します。Circle と Rectangle をそれぞれ拡張し、Drawable インターフェースを実装する適切なコンストラクターを使用して、クラス DrawableCircle と DrawableRectangle を作成します。

Frame を拡張し、main メソッドと paint(Graphics g) メソッドを持つ ShapesDriver クラスを作成します。ShapesDriver 内で、Drawable タイプの ArrayList を作成します。この配列リストに、寸法、位置、色を設定した DrawableCircle と DrawableRectangle を配置します。paint メソッドで ArrayList を反復処理し、各シェイプの draw メソッドを呼び出します。

ここに私がしなければならないところがありますが、ドローアブルクラスを機能させることができないようですか?

パッケージ形状;

public interface Shape
{
    public double area();
}

パッケージ形状;

public abstract class Circle implements Shape
{
    private double radius;

    Circle(double radius)
    {
        this.radius = radius;
    }

    public double area()
    {
        return radius;
    }

}

パッケージ形状;

public abstract class Rectangle implements Shape
{
    public double height, width;

    Rectangle(double Height, double Width)
    {
        this.height = Height;
        this.width = Width;
    }

    public double area()
    {
        return width * height;
    }
}

パッケージ形状;

import java.awt.*;

public interface Drawable
{ 
    public void setColour(Color c);
    public void setPosition(double x, double y);
    public void draw(Graphics g);
}

パッケージ形状;

import java.awt.Color;
import java.awt.Graphics;

public class DrawableCircle extends Circle implements Drawable
{
    public DrawableCircle(double radius)
    {
        super(radius);
    }

    @Override
    public void setColour(Color c)
    {
        c = Color.ORANGE;
    }

    @Override
    public void setPosition(int x, int y)
    {
        x = 100;
        y = 150;
    }

    @Override
    public void draw(Graphics g)
    {
        //g.drawOval(x, y, width, height);
    }

}

パッケージ形状;

import java.awt.Color;
import java.awt.Graphics;

public class DrawableRectangle extends Rectangle implements Drawable
{
    private double x, y;

    public DrawableRectangle(double height, double width)
    {
        super(height, width);
    }

    @Override
    public void setColour(Color c)
    {
        this.setColour(c);
    }

    @Override
    public void setPosition(double x, double y)
    {
        this.x = x;
        this.y = y;
    }

    @Override
    public void draw(Graphics g)
    {
        g.drawRect(x, y, width, height);
    }

}
4

1 に答える 1

0

これで始められるはずです

public interface Shape {
    public double area(); 
}

public class Circle implements Shape{
    // constructors
    // radius
    // implement area();
}

public class Rectangle implements Shape {
    // constructors
    // height, width
    // implement area();
}

public interface Drawable {
    public void setColor(Color c);
    public void setPoistion(int x, int y);
    public void draw(Graphics g);
}

public class DrawableCirlce extends Circle implements Drawable {
    // constructors
    // implement setColor();
    // implement setPosition();
    // implement draw();
}

public class DrawableRectangle extends Rectangle implements Drawable {
    // constructors
    // implement setColor();
    // implement setPosition();
    // implement draw();
}
于 2013-11-08T13:33:01.370 に答える