• ベストアンサー

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

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

  • PHP
  • 回答数3
  • ありがとう数4

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

  • ベストアンサー
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

  • オブジェクト指向が理解できません 教えてください

    現在Javaを勉強しているのですが、 Javaに限らず最近のプログラムの特徴であるオブジェクト指向がよくわかりません。 C言語も学んでいたので少しは知識はあります。 以下は私の解釈です。 C言語は関数の集まったものがいわゆる私たちが作るプログラムで、 作ったプログラムはそれ単体で機能する。 それに比べてオブジェクト指向を用いたプログラムでは、 オブジェクトからクラスが生成、このクラスが一つのプログラムとなる。 クラスのプログラムをいくつも集めたものが最終的なソフトとなる。 Cだとミスを一か所直すと他のところを直す羽目になるかもしれませんが、 オブジェクト指向においてはミスをオブジェクト単位で修正するので、 他のオブジェクトへの影響度は少ない。 よってオブジェクト指向の方が拡張・修正などでも優れている。 こんな感じに解釈したのですがどうでしょうか? オブジェクト指向では最終的なプログラムソフトはオブジェクトの集合体によって構成されているため、オブジェクト指向=オブジェクト中心の考えと言えるのでしょうか。

  • phpのオブジェクト指向でつまづきました・・・

    phpのプログラムをオブジェクト指向で書こうと思ったのですが、クラス間のデータのやり取りのあたりでつまづきました。 クラスはそれぞれ 1.設定用 2.データの読み書き用 3.入出力用 4.データ処理用 5.メイン です。 オブジェクト指向で書く前よりはコードも見やすくなったのですが、例えば4のデータ処理のところからは1、2、3の全てのプロパティを参照していたりして、なんだか複雑に。 オブジェクト指向で検索するとwikipediaには プログラムを構成するコードとデータのうちコードについては手続きや関数といった仕組みを基礎に整理され、その構成単位をブラックボックス とすることで再利用性を向上し、部品化を推進する仕組みが提唱され構造化プログラミング (structured programming) として1967年にエドガー・ダイクストラ (Edsger Wybe Dijkstra) らによってまとめあげられた と書いてありました。これだと関数を種類ごとにまとめただけであまり部品化はされておらず、前と変わらないような気がしてしまって・・・ 例えば設定用のクラスはのプロパティほとんどすべての所で値が必要になるのですが、毎回newを使うのは気が引けるので、クラスの外で new でインスタンス化して必要なところから毎回 global で呼び出したりしているんですが・・・使い方が間違っている気がするのですが、そういったことを解説しているサイトが見当たらなかったため、全く分からない状態です。そもそもこの場合、設定用の値はクラスにまとめるべきなのかどうか・・・。 書く時は$クラスー>メンバ変数 とか $クラスー>メンバ関数 のように書くので今何をしているのかが分かりやすく、それは便利だと思うのですが。 すみません。自分でも上手く説明できずによくわからない文章になってしまいましたが、結局の所オブジェクトがどんな物でどんな書き方をすれば良いかが分かっていないのだと思います。そういった所を分かりやすく教えてください。お願いします。

    • ベストアンサー
    • PHP
  • オブジェクト指向で作られたスクリプト.

    PHP4,5では、オブジェクト指向によるプログラムが可能になりました. で、実際にオブジェクト指向で作られた、PHPのスクリプトがあったら教えてください. スクリプトの中身が見られるものを教えてください.

    • 締切済み
    • PHP
  • PHPでオブジェクト指向開発してますか?

    実務でPHPでオブジェクト指向開発しているプログラマ(もしくは案件・企業)の割合ってどのくらいのものでしょうか? 当然、外部からPEAR等のクラスをひっぱってきたり、フレームワークを使用することはあると思いますが、設計レベルでオブジェクト指向開発をすることは、どのくらいの割合でありますでしょうか? つまり、interfaceやimplements、abstractといった単語を、仕事で使ったことがあるPHPプログラマはどのくらいいるのでしょうか? それとも、そもそもインターフェースや抽象クラス等は、ライブラリの開発者のためのものであって、一般のプログラマはむしろ使わないほうがいいのでしょうか? 周りに、PHPプログラマを本職でやってる人がいないので、ご意見を伺いたいです。

    • ベストアンサー
    • PHP
  • オブジェクト指向はなぜそんなにいいのですか?

    perlやphpでも昨今オブジェクト指向で書く人が増えてます。 同じ処理を繰り返さなくて済むとよくいいますが、 共通のファイルをrequireしてそこに共通のfunctionを定義するのとどうちがうのでしょうか? perlであったらサブルーチンを定義するのも同様。 そういうことを考えるとオブジェクト指向に乗り換えっていうのができません。 ご助言いただければ幸いです。

    • ベストアンサー
    • PHP
  • オブジェクト指向、理解しやすい?

     最近、Javaの解説書や解説サイトを見ていて、しばしば、「Javaは完全なオブジェクト指向だから理解しやすい」といった記述を見かけます。(「プログラムが見やすくなる」とかではなく)  Javaに限った話ではないのですが、個人的に、オブジェクト指向の概念は、プログラミング初心者の最大の関門ではないかと勝手に思っています。僕はPHPから入ったのですが、ある程度基本事項をマスターした後も、オブジェクト指向だけは長い間苦手としてきました。(最近やっと慣れてきたところです。)  そこで伺いたいのですが、最初にやったプログラミング言語がオブジェクト指向だったという方、オブジェクト指向の概念は、 1.わかりやすかった 2.そこでつまずいた 3.特に意識せずに通り過ぎた 4.その他 いずれでしょうか? ※最初にJavaについて書きましたが、これはただの例なので、オブジェクト指向言語全般についての質問であるととらえてください。

  • オブジェクト指向の意味

    オブジェクト指向について質問です。オブジェクト指向の意味は「オブジェクトと操作に分けてプログラムを組み立てていく考え方」で正しいですか?

  • オブジェクト指向?

    最近、プログラムを始めようと思い、色々質問を見ていたら、 オブジェクト指向という言葉がすごいいっぱいありました。 ちょっと調べてみましたが、よくわかりませんでした。どういう事なのでしょうか? 教えてくれたら嬉しいです

  • PHPフレームワーク理解に役立つ、オブジェクト指向入門書

    PHPでWEBアプリを作りたいために、html,css,Mysql,PHPなどの基本的な事柄を勉強し、cakePHPというPHPフレームワークを最近使い始めました。オブジェクト指向やクラスについてはPHP入門書に書いてあるのを読んだだけで、なんとなくしか分かっていません。 PHPのオブジェクト指向やフレームワークとのつながりを理解できるような、初心者向けのお勧めの本はないでしょうか? オブジェクト指向について学ぶよい本は探しやすいのですが、PHPフレームワークを理解するために適した本はどれなんだろうと悩んでおります。基本的な概念はすべて同じだから、PHPとかまったく関係なくオブジェクト指向関係の本を読めばいいのでしょうか? 候補の本 ・オブジェクト指向でなぜつくるのか ・Head Firstオブジェクト指向分析設計 ・いちばんやさしい オブジェクト指向の本

    • 締切済み
    • PHP
  • オブジェクト指向

    オブジェクト指向がわからなくてもPHPは学習できますか? 理解できますか?

    • ベストアンサー
    • PHP

専門家に質問してみよう