重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

一応、PHPマニュアルの「クラスとオブジェクト」の辺りは理解したつもりでいる者です。
最近OOPに手を出してみたのですが、いまいちOOPとはどういうものかがわからない状況です。
今まで手続き型しか知らなかったためか「関数で定義すればいいのでは」と考えてしまいます。
つまり「OOPのどこが便利なのかがわからない」と言う状況なのです。
ソースコードを示しながら解説されているサイトもありましたが、渡された値を処理して返すクラスだったりと、いまいちOOPの便利さが伝わってきません。
私が、趣味の域を脱しないと言うことに甘んじているのもあるかとは思いますが、皆さんがOOPを実践しようと思い立った際に参考にしたサイト等、あれば教えていただけませんでしょうか?
更に贅沢を言わせていただくと、実際的なコードを示しながら解説されているサイトがいいです。

教えて君ですが、どうぞよろしくお願いします。

A 回答 (3件)

私もPHPから入った人間なので、OOPの必要性は良く分かりませんでした(今でも分かっていない?)。


もともとPHPはHTMLの中にプログラミングを書くものでしたので(今でもそうかな?)、それほど凝ったプログラミングと言うものは存在しませんでした。JavaScriptで出来ないような(DB連携やファイル保存等)サーバ側のスクリプトを補完するような感じでしょうか。Perl等のいわゆるCGIは、プログラムがHTMLを出力する、と言う感じですが、PHPはHTMLの中にちょこちょこ、って感じですよね。この手軽さと、Apacheモジュールとして動くから比較的スピードも速い、と言う事もあってPHPが普及したのだと思います。しかし普及につれて大規模サイトでの利用や設計を考えると、どうしてもオブジェクト指向ということになってきたのでしょう。
ちょっと横道にそれましたが、一つの例を見てみましょう。PEARはPHPと共に配布される純正ライブラリですが、そこにDBクラスがあります。このDBクラスを利用すると、DBを変更した時にとても簡単に移行出来ます。
たとえば、当初データベースをPostgreSQLとしてプログラミングを組んでいましたので、DB接続にはpg_connect、クエリ発行にはpg_query、結果を配列にするにはpg_fetch_arrayとしていました。ところがMySQLに変更しなければならない事になり、その辺を書き換えないといけないことになりました。。。。grepして一括変換。。。でも出来るかもしれませんが、簡単ではありません。
DBクラスを使ってプログラミングしていれば最初の接続のところをほんのチョコッとだけ変えるだけですみます。
個人ではデータベースを変える、と言うような事はあまりないでしょうが、作ったプログラムを配布する場合、どんなDBにも対応出来るものが作れます。

参考まで。

# とはいえ、個人で作っているものはクラスにまで仕上げてないですけどね(笑。
    • good
    • 0
この回答へのお礼

楽ができるってことはいろいろと聞いてるんですけどね・・・
実際なかなか実感が沸かないですf^^;

まずは手をいろいろと動かしてみようと思ってます。御回答ありがとうござます。

お礼日時:2007/03/09 13:23

個人的な意見なので参考にならないかもしれないですが。



私はJavaを勉強していたので、PHPではないのですが、
OOPについてはいろいろな本(Java向けのもの)を見ました。
その中で、一番OOPが理解できたのは、OOP専門の本よりもUMLを利用した設計についての解説書の方でした。
その結果、OOPはプログラミング技術の一部、というよりも設計技術の一部である、
という思いを持っています。

おっしゃる通り、プログラムを書く際にはOOPを取り入れなくても、
関数や構造化プログラムで問題なく動きますし、再利用性もあると思います。
ただ、どうしても技術的な側面が強くでてしまうので、専門家でないと分からない部分が多くなります。
一方、OOPは現実世界にあるモノを対象にして設計しようとするので、
比較的専門家以外の人でも分かる部分が多いのでは、と思います。

私もまだ未熟者なので、あまり偉そうなことはいえませんが、
OOPは、うまく取り入れることができればより良い開発ができる、と思っています。

あまり答えになっていないですね・・・
あくまで参考までに。
    • good
    • 0
この回答へのお礼

設計に関連したところはあまり見てなかったのでいろいろサイト、書籍等、探してみようと思います。

ありがとうございます。

お礼日時:2007/03/09 13:25

がると申します。


OOに関しては、実際に現場で使うために、オブジェクト指向の実践講座とかもWeb上で書いていたりします。

で…「OOPのどこが便利なのかがわからない」はよく耳にする話なのですが。
ソースコードよりも「便利な実例」のほうがわかりやすいかもしれません。
OOPの一番便利なのは「作った後に仕様変更が発生した場合」と「多人数で開発しているとき」なので。
そのあたりの経験が薄いと仮定すると、ちょっと実感しにくいかもしれません。

以上あんまり参考にならん話で恐縮ですが。
    • good
    • 0
この回答へのお礼

仕様変更、ですか。
自分が今まで作ったものはほとんど趣味的なその場だけの物なので経験が薄いどころか「無い」かもですA--;

お礼日時:2007/03/09 13:27

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