【PHP/演習問題】parent[1]
問題
次の実行結果になる会計プログラムを作成してください。
なお、下記条件を満たすものとします。
- 小計クラス(Subtotal)を作成する
- 小計クラスは複数料金を記憶する$pricesフィールド(配列)を持つ
- 小計クラスは小計金額を計算するcalcメソッドを持つ(小計金額は$pricesに記憶された値の合計値)
- 会計クラス(Bill)を作成する
- 会計クラスは小計クラスを継承する
- 会計クラスはcalcメソッドをオーバーライドし、小計に消費税を加算した値を計算する。
※ 消費税率は10%とします。 - 会計クラスのcalcメソッドは小計クラスのcalcメソッドを使う
- 料金は標準入力で与える(空文字を入力するまで)
$ php practice.php
1000
2300
3500
合計金額 : 7480円
解答例
<?php
class Subtotal {
public $prices = [];
public function __construct( $prices ) {
$this->prices = $prices;
}
public function calc() {
$total = 0;
foreach( $this->prices as $price ) {
$total += $price;
}
return $total;
}
}
class Bill extends Subtotal {
public const TAX_RATE = 0.1;
public function calc() {
$total = parent::calc();
$total = $total + $total * self::TAX_RATE;
return $total;
}
}
$prices = [];
while( true ) {
$price = trim(fgets(STDIN));
if( $price == '' ) {
break;
}
$prices[] = $price;
}
$bill = new Bill($prices);
$total = $bill->calc();
echo '合計金額 : '.$total."円\n";
?>