前回、PHPでオブジェクト指向プログラミングをしようと全然だめだった話を しました。今回はその続き、そもそも論であるオブジェクト指向の考え方についてです。
読むだけでは理解不能
オブジェクト指向の考え方といえば、 ググればそういうサイトは山ほど出てくるかと思います。書いている内容そのものは、「一応」理解できるのできます。
しかし、読んだだけで使えるのであれば、 苦労はありません。 そこで今回のサイコロアプリでは、どのようにオブジェクト指向が 適用されるのか考えてみたいと思います。
[php]
$dice1 = mt_rand(1, 6);
$dice2 = mt_rand(1, 6);
echo "サイコロの目は".$dice1."です。";
echo "サイコロの目は".$dice2."です。";
[/php]
サイコロをオブジェクト指向で考えると…
ここからは、Google+のプログラム質問コミュニティで 教えていただいことをもとに、まとめています。
オブジェクト指向の考え方
クラスを定義していく場合形状や物事、 人物などいろんなものの1物体を1個体としてクラス化する。
サイコロアプリにおける物体と個体
物体:サイコロ 個体:(サイコロを)振る つまりサイコロという物体で振るという個体の動作を 実現する「サイコロを振る」というクラスを定義する。
new演算子で量産化する
サイコロを振るというクラスを定義してやれば、 あとはいくらでも量産できます。 今回は2回サイコロを振るため、 2回new(インスタンス化)することになります。
実際のコード
上記のオブジェクト指向の考え方を取り入れて 前回のコードを 修正すると次のようになります。
[php]
<!–?php
class Saikoro {
public $dice;
public function __construct() {
$this—>dice = mt_rand (1, 6);
}
public function shake() {
echo "サイコロの目は{$this->dice}です。";
}
}
$p1 = new Saikoro();
$p1->shake();
$p2 = new Saikoro();
$p2->shake();
?>
[/php]
このコードを実行すると次のように表示されます。
[php]
サイコロの目は6です。
サイコロの目は3です。
[/php]
〔参考サイト〕