015-004-009

ArrayListとポリモーフィズムによる図形管理

上級

問題説明

ArrayListとポリモーフィズムによる図形管理

この問題では: Shapeインターフェースを実装したCircleRectangleクラスをArrayListに格納し、面積によるフィルタリングとソートを行うプログラムを作成します。

学習目標: ポリモーフィズムと動的リストを組み合わせた実用的なデータ操作を理解する

概要

ArrayListにインターフェース型で複数の異なるオブジェクトを格納し、ポリモーフィズムを活用して統一的に処理します。ストリームAPIを使って、面積の閾値によるフィルタリングとソートを実装します。

仕様

Shape インターフェース

  • double getArea() メソッドを定義

Circle クラス(Shapeを実装)

  • フィールド: double radius
  • コンストラクタ: radiusを受け取る
  • getArea(): Math.PI * radius * radius を返す
  • toString(): "Circle(radius=X.X, area=Y.YY)" の形式(areaは小数点以下2桁)

Rectangle クラス(Shapeを実装)

  • フィールド: double width, double height
  • コンストラクタ: widthheightを受け取る
  • getArea(): width * height を返す
  • toString(): "Rectangle(width=X.X, height=Y.Y, area=Z.ZZ)" の形式(areaは小数点以下2桁)

Main クラス

  1. ArrayList<Shape>にCircleとRectangleを追加:
    • new Circle(5.0)
    • new Rectangle(3.0, 4.0)
    • new Circle(2.0)
    • new Rectangle(6.0, 3.0)
    • new Circle(4.0)
  2. "All shapes:" と表示し、全図形を1行ずつ出力
  3. 空行を出力
  4. 面積が15.0以上の図形をフィルタリングし、面積の昇順でソート
  5. "Shapes with area >= 15.00 (sorted):" と表示し、該当図形を1行ずつ出力

出力形式

All shapes:
Circle(radius=5.0, area=78.54)
Rectangle(width=3.0, height=4.0, area=12.00)
Circle(radius=2.0, area=12.57)
Rectangle(width=6.0, height=3.0, area=18.00)
Circle(radius=4.0, area=50.27)

Shapes with area >= 15.00 (sorted):
Rectangle(width=6.0, height=3.0, area=18.00)
Circle(radius=4.0, area=50.27)
Circle(radius=5.0, area=78.54)

コードを実行してみませんか?

この問題のコードエディタと実行機能を使用するには、ログインしてください。

アカウントをお持ちでない方

新規登録