- 締切済み
そもそもクラスってどう便利なんですか?
いつもお世話になってます。 根本的な質問をさせてください。 PHPでクラスってありますけど、これはどういう時に使うんでしょうか? functionで用が足りてしまうような気がするのですが、functionよりも便利なことがあるのでしょうか? クラス自体の記述方法や使い方はマニュアル等に書いてあるのですが、どういう時に使うべきなのかがわかりません。 上級者ほどよく使っているようで、記述もなんとなくプロっぽくかっこいいので使ってみたいと思っているんですが…。 初歩的で申し訳ありませんが、どなたかお教えください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- rara_sun
- ベストアンサー率50% (271/539)
クラスというのは、プログラミングのやり方論から来てます。プログラミング界では、「オブジェクト指向」という概念から来ています。 何がメリットがあるか? なんといっても再利用ができるところです。 function でも再利用はできますが、 そのメンテナンス(機能拡張など)のし易さが function と比べて優れています。 どう優れていうるか、1例をお話すると・・。 functionを使ってのプログラミング経験は長いでしょうか? 例えば、こういう経験はありませんか? ある1つの目的のために、沢山のfunctionをこしらえた事はありませんか? で、その目的が、開始から終了までの間のソースがやたら長くなったり、あっちこっちのサブルーチンにとんでいたり・・とか。 つもの目的のために作ったfunctionで、共通の引数が 必要になった場合、変数宣言ははじめにやりますが、 プログラムを作って、デバッグとかしていると、 あっちこっちに飛び火したその共通の引数が、うっとう しくなったこと・・ありませんか? オブジェクト指向では、それら変数やfunctionを1つのクラスとして扱う事ができます。 PHPでは、クラスを定義したものを使う時に $test = new クラス名; ってやります。そうすると、$test変数内に、クラスで定義した変数やfunctionが1つになって収まるわけです。 そうすると、そのクラス内のものを利用したい時には、 $testから呼び出してあげるので、扱いやすいのです。 具体的な例は、このURLを見て下さい。 http://www.studiofly.net:8080/?php/php113.html ただし、上手にクラスを作ってあげないと、せっかく作ったクラスが複雑なものになったりします。 上記ででてきた、オブジェクト指向という概念は、簡単とはいえないので、もう少し詳しく知りたいなら、”オブジェクト指向”のキーワードでネット検索してみてください。 沢山解説サイトがあります。 <PHPのクラス解説サイト> http://www.soi.wide.ad.jp/class/20020036/slides/15/14.html http://www.komonet.ne.jp/~php/chap10.htm http://oguchan.s4.xrea.com/language/php/learnphp1-9.html
- honiyon
- ベストアンサー率37% (331/872)
こんにちは、honiyonです。 簡単にいってしまえばライブラリ集の進化版、でしょうか。 1つのプログラムには色んな目的の関数が含まれています。テレビに例えると、受信機、表示(ブラウン管)、チャンネルや電源の操作ボタンがあります。これらをまとめて1つの「TV」というプログラム(機械)になります。 それぞれ受信機や表示に対して2,3個のfunctionから構成されたとして、それぞれ担当部品が違うのに1つのファイルに混合して並んでいたら後々メンテナンスが大変だと思います。 これら1つの部品を構成するのに必要なふfunction集がクラス、といった形になります。1部品=1クラスとした方がまとまりがあります。 また1部品=1クラスとする事で汎用性が高まります。クラス同士のコミュニケーションを制限し、統一する事で汎用性が高まり、例えば「ビデオ」を作るときにTVで作成した「ボタン」という部品(クラス)を使いまわして効率的にビデオというプログラムを作れちゃったりします。 結局設計が悪ければクラスを使ったところで何のメリットも出てこないですしかえって難解なプログラムになったりしますが、どんどん肥大化するアプリケーションとプログラム量を効果的に管理し、修正し、再利用する為の考え方が「クラス」です。 BorlandのDelphiやC++Builderはクラスを効果的に使用して快適な開発環境を実現しているので、クラスを学ぶ上で良い環境かも知れません。 参考になれば幸いです(..
お礼
honiyonさん、ご回答ありがとうございます! とりあえず簡単なプログラムをクラスを使って作り直して見ました。 大規模なプログラムではないので、汎用性というメリットを感じるまでには至りませんでしたが、プログラムの見た目上、確かにスッキリとまとめることが出来ました。 また、私が感じたメリットとしては、変数名の重複を気にすることなくfunction自体の開発をすることが出来る、ということでした。 ・・・何か間違ってますでしょうか?
お礼
rara_sunさん、ご回答ありがとうございます。 > $test変数内に、クラスで定義した変数やfunctionが1つになって収まるわけです。 これ、ようやくなんとなく理解しました。 「これが何の意味があるの?」って感じだったのですが 、実際にプログラミングしていくときに、混乱しなくなりますね。 サイトの紹介もありがとうございました。 #多分自分でクラスを使ってみないと、見てもわからなかったかと思いますが、ようやく理解できました。 今後は取りあえず何でもかんでもクラスを使っていこうと思います(笑)。