import java.util.ArrayList;
import java.util.List;
// Drawable インターフェイス
interface Drawable {
void draw();
}
// Circle クラス
class Circle implements Drawable {
// メンバー変数
private Point center; // 中心座標
private double radius; // 半径
// コンストラクタ
public Circle(Point center, double radius) {
this.center = center;
this.radius = radius;
}
// draw メソッドの実装
@Override
public void draw() {
System.out.println("Drawing a circle with center at " + center + " and radius " + radius);
}
}
// Rectangle クラス
class Rectangle implements Drawable {
// メンバー変数
private Point topLeft; // 左上の座標
private double width; // 幅
private double height; // 高さ
// コンストラクタ
public Rectangle(Point topLeft, double width, double height) {
this.topLeft = topLeft;
this.width = width;
this.height = height;
}
// draw メソッドの実装
@Override
public void draw() {
System.out.println("Drawing a rectangle with top left corner at " + topLeft +
", width " + width + ", and height " + height);
}
}
// DrawingBoard クラス
class DrawingBoard {
// メンバー変数
private List<Drawable> shapes;
// コンストラクタ
public DrawingBoard() {
this.shapes = new ArrayList<>();
}
// addShape メソッドの実装
public void addShape(Drawable shape) {
shapes.add(shape);
}
// 描画ボード上のすべての図形を描画するメソッド
public void drawAllShapes() {
for (Drawable shape : shapes) {
shape.draw();
}
}
}
// Point クラス(座標を表すクラス)
class Point {
// メンバー変数
private double x;
private double y;
// コンストラクタ
public Point(double x, double y) {
this.x = x;
this.y = y;
}
@Override
public String toString() {
return "(" + x + ", " + y + ")";
}
}
この解答例では、Drawable
インターフェイスを実装した Circle
クラスと Rectangle
クラスがあります。これらの図形を DrawingBoard
クラスで管理し、addShape
メソッドで描画ボードに追加できます。drawAllShapes
メソッドを呼び出すことで、描画ボード上のすべての図形を描画できます。