Menu
Coddy logo textTech

まとめ:図形計算機

CoddyのPHPジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 32/91。

challenge icon

チャレンジ

簡単

柔軟で拡張性の高いコードを作成するためのインターフェースの力を実証する、図形計算機を作成しましょう。面積を計算するためのコントラクトを定義するインターフェースを作成し、それを異なる図形クラスで実装します。

コードは4つのファイルに分けて構成します:

  • Calculable.phpcalculateArea() という単一のメソッドシグネチャを持つ Calculable インターフェースを定義します。このコントラクトにより、計算可能な図形はすべてその面積を計算できることが保証されます。
  • Rectangle.phpCalculable を実装する Rectangle クラスを作成します。インターフェースファイルをインクルードしてください。このクラスは、コンストラクタを通じて設定されるプライベートな $width プロパティと $height プロパティを持つ必要があります。calculateArea() を実装して、面積(幅に高さを掛けたもの)を返すようにします。
  • Circle.php — 同じく Calculable を実装する Circle クラスを作成します。インターフェースファイルをインクルードしてください。このクラスは、コンストラクタを通じて設定されるプライベートな $radius プロパティを持つ必要があります。calculateArea() を実装して、pi() * radius * radius の公式を使用して面積を返すようにします。
  • main.php — 両方の図形ファイルをインクルードします。Calculable パラメータと図形名(文字列)を受け取る displayArea という関数を作成します。この関数は、"[name] area: [area]" と出力する必要があります。ここで、面積は number_format() を使用して小数点以下2桁に丸められます。

4つの入力を受け取ります:長方形の幅、長方形の高さ、円の半径、および円の図形名です。幅と高さ(floatに変換)を使用して Rectangle を作成し、半径(floatに変換)を使用して Circle を作成します。displayArea() を2回呼び出します。1回目は長方形に対して "Rectangle" を名前として使用し、2回目は円に対して提供された図形名を使用します。各結果をそれぞれの行に出力してください。

displayArea() 関数は、Calculable を実装している図形であれば何でも機能します。長方形、円、あるいは将来追加する可能性のある他の図形の面積を計算しているのかを、この関数が知る必要はありません。それがインターフェースに対してプログラミングすることの素晴らしさです!

自分で試してみよう

<?php
// 図形ファイルをインクルードする
require_once 'Rectangle.php';
require_once 'Circle.php';

// TODO: displayArea という名前の関数を作成する
// この関数は Calculable パラメータと図形名(文字列)を受け取る必要がある
// 出力形式: "[name] area: [area]"(area は number_format() を使用して小数点以下2桁に丸めること)

// 入力を読み込む
$width = floatval(trim(fgets(STDIN)));
$height = floatval(trim(fgets(STDIN)));
$radius = floatval(trim(fgets(STDIN)));
$circleName = trim(fgets(STDIN));

// TODO: 幅と高さを使用して Rectangle を作成する

// TODO: 半径を使用して Circle を作成する

// TODO: 名前として "Rectangle" を使用し、長方形に対して displayArea() を呼び出す

// TODO: 提供された図形名を使用して、円に対して displayArea() を呼び出す
?>

オブジェクト指向プログラミングのすべてのレッスン