015-001-005
ポリモーフィズム:図形描画システム
上級
問題説明
ポリモーフィズム:図形描画システム
この問題では: 抽象クラスShapeを継承したCircleとRectangleクラスを実装し、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フィールド
widthとheight - コンストラクタで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
