プロが教える店舗&オフィスのセキュリティ対策術

ごきげんよう。
オブジェクト指向、初心者です。
いろいろと素人ながら分かっているつもりなのですが、継承の利用法がピンと来ません。
なにかいいサンプルはないでしょうか?

カウンタとする機能を継承させて、画像カウンターにするのは、便利と思ったのですが、PHPならではの書き込み処理や他の処理を継承させるコツがわかりません。

私の中で、継承はお客様の無理な仕様の変更や、最初のアイディアの甘さを埋めるためと認識しているので、一つの関数でできるだけ不備のないものを作ろうと考えるので、あまり継承がピンとこないのかもしれません。
わたくしは、あくまで自分のHP内で、一人でスクリプトを作っているもので。

例えば、掲示板を作るに当たって、継承を使うサンプルがあったら、おねがいいたします。

A 回答 (2件)

ありきたりなたとえですが、


トラックは車です。
ごみ収集車は車です。
レーシングカーは車です。

同じ車なので、タイヤがついていたり、
エンジンがついていたり、エンジンを掛けることができたり、
走ることができたり、燃料があったり、補充したり、などなど
多くの部分で、共通項があります。

ただし、レーシングカーに荷台は必要ありませんし、
トラックにゴミを潰す機能は必要ありません。

掲示板のプログラムでも、同じようなことが言えないでしょうか。
題名と本文はだいたい、どんな掲示板にもあります。
共通項です。(タイヤ、燃料にあたる)

画像掲示板には画像を表示する機能が必要です。
音を再生する機能は必要ありません。
ファイルアップができる掲示板には、
画像を表示する機能は必要ありませんが、
ダウンロード用にファイルへのリンクを表示する機能が必要です。

ここで、複数の機能を作るために共通項である部分を複数の機能の数だけ作るのは大変手間のかかることです。
コードをコピーしてしまえばいいように思えますが、
共通項の部分に、変更を加えた場合どうなるでしょうか。
すべてのコードを修正しなければなりません。

その点で継承は便利です。
ミスも少なくなります。

この回答への補足

はい、それはわかります。
ただ、この例えだと、タイヤとエンジンの構造で基礎を作り、関数で重ねる処理ですむような気がします。
荷台関数、ゴミをつぶす関数で。
関数自体を別のファイルで作れば、さほど、デバッグの処理も難しくはありません。
画像掲示板も、画像を表示する関数を作り、関数で処理できると思います

継承は、レーシングカーなら、通常のタイヤをレーシングカー用のタイヤに継承するイメージなのですが。
これを関数で作ると、レーシングカー用のタイヤと、普通のタイヤを作らないといけません。

しかも、現実の世界として、レーシングカーと、ゴミ集積車と普通の車の設計図は本当に同じでしょうか?
わたくしは、素人ゆえにオブジェクト指向=現実的な表現をしてしまいますが、詳しい方は、あくまで”掲示板を作るに当たってのサンプル”をお願い致します。

オブジェクト指向は、現実を模したものとするのは、誤解を生じさせる可能性がある表現だと思います。

補足日時:2007/02/21 18:26
    • good
    • 0

掲示板プログラムの規模であれば、継承を利用した方が劇的に良くなる場面というのが思いつきません。


もう少し規模が大きいアプリケーション、もしくは汎用性が高いライブラリを題材にすると良い例が示せるかもしれません。

継承は無理に使う必要はありませんよ。
    • good
    • 0
この回答へのお礼

ごきげんよう。
やはり、掲示板程度では・・・というか、素人が作るPHPでオブジェクト指向が必要か?というのに、疑問を持っていたので、そう言って頂けると助かります。
とりあえず、オブジェクト指向は少しずつと思っています。
ありがとうございます。

お礼日時:2007/02/22 00:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!