世界のナベアツ問題以外にも、PHPでオブジェクト指向プログラミングにもチャレンジしています。
課題はサイコロアプリを書き直すこと
最初の課題は、手続き型プログラミングを、オブジェクト指向プログラミングで書き直す、という課題を設定してみました。もともとはたった4行のコードです。
[php]
<?php
$dice1 = mt_rand(1, 6);
$dice2 = mt_rand(1, 6);
echo "サイコロの目は".$dice1."です。";
echo "サイコロの目は".$dice2."です。";
?>
[/php]
2つのサイコロの目を出して、その目がゾロ目であるかどうか、判定する内容です。
サイコロの目を出すために書き換えた内容
とりあえず、最初に書き換えた構文はこのようなりました。
[php]
<?php
class Dice {
public $dice1;
public $dice2;
public function __construct() {
$this->dice1 = $dice1;
$this->dice2 = $dice2;
}
// サイコロ1の目を取得
public function getShake1() {
$this->dice1 = mt_rand(1, 6);
}
// サイコロ2の目を取得
public function getShake2() {
$this->dice2 = mt_rand(1, 6);
}
}
$saikoro1 = new Dice($dice1);
$saikoro2 = new Dice($dice2);
echo $saikoro1->getShake1();
echo $saikoro2->getShake2();
?>?
[/php]
もちろん、このコードを実行するとエラーが出ます。何がエラーの原因かというより、オブジェクト指向そのものがよく分かってないって感じですね。
コードをどうするかと言うよりも、まず、オブジェクト指向でコードを書くときの考え方からしてやり直しです。
〔参考サイト〕