• ベストアンサー

phpでオブジェクト指向と呼べる設計をするには・・・

phpで、なるべく同じ処理は関数化し、 ひとつの大きな処理としてまとめています。 これは、オブジェクト指向といえるのでしょうか? オブジェクト指向とはもっと高度で汎用性が高く たんなる関数化ではオブジェクト指向とはいえないでしょうか? 綺麗なオブジェクト指向とは一体のどようなものなのでしょうか? どこまでオブジェクト化すれば オブジェクト指向なのかよく分かりません。 使いまわしがきけばオブジェクト指向なのでしょうか? 他のプログラムに影響を与えなければオブジェクト指向なのでしょうか? 質問が抽象的ですが、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#94983
noname#94983
回答No.2

>たんなる関数化ではオブジェクト指向とはいえないでしょうか? いえない。それは「構造化プログラミング」というものだ。プログラムを処理ごとに整理し構造化する手法だな。 オブジェクト指向は、「処理ごと」に整理するのを超え、「独立して扱える個々のプログラムの集合体」として設計する。これはクラスとして設計される。それぞれのクラスは、他のプログラムに依存せずそれぞれ単独で機能する形で設計されなければならない。そうして設計されたクラスの組み合わせによりプログラム全体を構築する。これがオブジェクト指向プログラミング。 関数は、ただ「一つの機能をまとめたもの」に過ぎない。これに対し、クラスは「機能と、値をパッケージ化」する。そのクラスに必要な機能をメソッドとして用意し、そのクラスを利用するために必要な情報をすべてメンバー変数として自身の中に保持する。そのクラスを利用するのに必要な情報は、すべて自分自身の中にある。そうした独立性のあるオブジェクトとしてプログラムを定義するのがオブジェクト指向。 ただ、PHPの場合、ちょっとしたものだとわざわざオブジェクト指向を持ち出さなくとも作れてしまうので、なかなかオブジェクト指向の考えを実践するのは難しいところがある。オレも、ちょっとしたものならまずクラスなんて定義しないで作っちまうし。すっきりと美しく作られたオブジェクト指向を理解したいなら、PHPの場合、MVCによるフレームワークを勉強するのが割と手っ取り早いんでないかと思うな。CakePHPとかZend frameworkなんかを実際に使ってみると、オブジェクト指向がどういうものか、次第にわかってくるんでないかな。

yuzuru0024
質問者

お礼

回答ありがとうございます。 構造化プログラミングで検索してみると、 同じように構造化プログラミングと、 オブジェクト指向の違いを混乱している方がたくさんおられました。 関数が動詞(~させる)としたら、 オブジェクト指向はあくまでモノであり名詞(計算機 接続) みたいな感じですかね。 CakePHPを落として組んでみることにします。

その他の回答 (2)

  • singlecat
  • ベストアンサー率33% (139/418)
回答No.3

オブジェクト指向はしっかり学習しないと、単なるライブラリーとしてしか扱えません.... まずは、継承、多態、カプセル化などをしっかり理解する事から始めましょう。

yuzuru0024
質問者

お礼

回答ありがとうございます。 >継承、多態、カプセル化 調べてみます。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

質問者が言っている「関数化」は単なる「ライブラリ化」 オブジェクト化で判りやすいのはclassを扱う事じゃないかな。 器を用意するとその時に初期化される って部分とかね。 値を入れる器、処理だけする関数 というのじゃなく 複合的に機能を持っていて、特定の指定をするとそれに合わせて動作する・・・ http://www.google.com/search?lr=lang_ja&q=%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%A8%E3%81%AF

yuzuru0024
質問者

お礼

回答ありがとうございます。 やはりclassを使うのがキモみたいですね。 単なる関数に比べてもっと柔軟なんでしょうか・・・。

関連するQ&A