015-001-005

ポリモーフィズム:図形描画システム

上級

問題説明

ポリモーフィズム:図形描画システム

この問題では: 抽象クラスShape継承したCircleRectangleクラスを実装し、Shape配列に格納したオブジェクトに対してポリモーフィズムを利用してdraw()getArea()を呼び出し、結果を標準出力に表示するプログラムを作成します。

学習目標: ポリモーフィズムを使って異なる型のオブジェクトを統一的に扱う方法を理解する

概要

ポリモーフィズム(多態性)は、同じインターフェースで異なる動作を実現するオブジェクト指向の重要な概念です。親クラス型の変数で子クラスのインスタンスを扱い、実行時に適切なメソッドが呼ばれます。

仕様

抽象親クラスShapeを作成:

  • abstractメソッドdraw()(実装なし)
  • abstractメソッドgetArea():面積を返す(実装なし)

子クラスCircleを作成:

  • Shapeを継承
  • privateフィールドradius(半径)
  • コンストラクタでradiusを受け取る
  • draw()を実装:"Drawing Circle with radius: [radius]"を出力
  • getArea()を実装:円の面積を返す(radius × radius × 3.14)

子クラスRectangleを作成:

  • Shapeを継承
  • privateフィールドwidthheight
  • コンストラクタでwidthとheightを受け取る
  • draw()を実装:"Drawing Rectangle [width]x[height]"を出力
  • getArea()を実装:矩形の面積を返す(width × height)

Mainクラスで:

  • Shape配列を作成(Circle(radius: 5), Rectangle(width: 4, height: 6))
  • 各要素に対してdraw()を呼び出し
  • 各要素の面積を"Area: [area]"形式で出力

出力形式

Drawing Circle with radius: 5
Area: 78.5
Drawing Rectangle 4x6
Area: 24.0

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

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

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

新規登録