先日、PHPでオブジェクト指向プログラミング 一応動いたが何かと問題が出た話という記事を書きました。本日はその問題点を修正したお話。
修正したコード
まずは修正したコードは、以下の通りです。
[php]
<?php
class Saikoro {
public $dice;
// サイコロを振る
public function shake() {
$this->dice = mt_rand (1, 6);
}
// サイコロの目を表示する
public function display() {
echo "サイコロの目は".$this->dice."です。";
}
}
$p = new Saikoro();
$p->shake();
$p->display();
echo "<br/>";
$p->shake();
$p->display();
?>
[/php]
前回のコードとの相違点
このコードは前回のコードと比べて、サイコロを振った時の動作が、より詳しくなっています。
前回は、shakeメソッドがサイコロを表示するという動作しかしていませんでした。そこで今回はそのサイコロの動作をよりく詳しく分解し、
- 「振る」
- 「表示する」
という2つの動作に分け、shakeメソッドとdisplayメソッドに分解しています。
まとめ
ちなみにこの発想は自分自身の頭からひねくりだしたわけではありません。プログラミングのコミュニティ掲示板やWeb制作の勉強会で、ヒント(といっても限りなく答えに近いヒント)を下さったものです。みなさんありがとうございました。
あとこの問題を解決するにあたって参考としたサイトが2つあるんで、紹介しておきます。オブジェクト指向プログラミングについて、お悩みの方の参考になれば幸いです。
〔参考サイト〕