Reading:オブ脳本(1)社長命令・起立!(PHP4編)
3年前くらいに買ったオブ脳本を引っ張り出してきて読んでいます。
オブジェクト脳のつくり方―Java・UML・EJBをマスターするための究極の基礎講座
- 作者: 牛尾剛,長瀬嘉秀
- 出版社/メーカー: 翔泳社
- 発売日: 2003/07/02
- メディア: 単行本
- 購入: 12人 クリック: 318回
- この商品を含むブログ (75件) を見る
で、せっかくのプログラミング演習付きなので書籍中はJavaですがPHPで書いて公開してみようかなという試み。
演習「社長命令・起立!」をまずはPHP4で書いてみました。(PHP5でも書いてみる予定)
実行結果
$ php -f Shacho.php Tanto 100 担当が普通に起立しました。 私の給料は100円です。 ボーナスは300円です。
$ php -f Shacho.php Shunin 100 主任がすばやく立ちました。 私の給料は201円です。 ボーナスは300円です。
$ php -f Shacho.php Bucho 100 部長がだるそうに立ちました。 私の給料は300円です。 ボーナスは300円です。
$ php -f Shacho.php Torishimariyaku 100 取締役がふんぞり返って立ちました。 私の給料は402円です。 ボーナスは300円です。
Shain.php
<?php class Shain { var $_kihonkyu; function setKihonkyu($kihonkyu) { $this->_kihonkyu = (int)$kihonkyu; } function getKihonkyu() { return $this->_kihonkyu; } function getBonus() { return $this->_kihonkyu * 3; } function standup() {} function getKyuryo() {} }
Tanto.php
<?php require_once './Shain.php'; class Tanto extends Shain { function standup() { echo '担当が普通に起立しました。' . "\n"; } function getKyuryo() { $kihonkyu = $this->getKihonkyu(); return $kihonkyu; } }
Shunin.php
<?php require_once './Shain.php'; class Shunin extends Shain { function standup() { echo '主任がすばやく立ちました。' . "\n"; } function getKyuryo() { $kihonkyu = $this->getKihonkyu(); return $kihonkyu * 2 + 1; } }
ShainFactory.php
<?php class ShainFactory { function factory($type) { switch ($type) { case 'Torishimariyaku': require_once './Torishimariyaku.php'; $shain = new Torishimariyaku(); break; case 'Bucho': require_once './Bucho.php'; $shain = new Bucho(); break; case 'Shunin': require_once './Shunin.php'; $shain = new Shunin(); break; case 'Tanto': default: require_once './Tanto.php'; $shain = new Tanto(); break; } return $shain; } }
Shacho.php
<?php require_once './ShainFactory.php'; class Shacho { function main($argv) { $shain = ShainFactory::factory($argv[1]); $kihonkyu = (int)$argv[2]; $shain->setKihonkyu($kihonkyu); $kyuryo = $shain->getKyuryo(); $shain->standUp(); echo '私の給料は' . $kyuryo . '円です。' . "\n"; echo 'ボーナスは' . $shain->getBonus() . '円です。' . "\n"; } } if ($argc !== 3) { exit('invalid arguments.' . "\n"); } $shacho = new Shacho(); $shacho->main($argv);