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