形状の面積を 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);
}
}