人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP

PHPをはじめて半年が経とうとしています。しかしいまだにオブジェクト指向やらを理解できません。

そこで質問です。

どうやったら簡単にオブジェクト指向を理解することができますか?分かりやすく簡潔にお願いします。

又、なぜオブジェクト指向はいいのでしょうか?ただ、簡単に別のパーツを扱えるという利点しかないのでしょうか?

よろしくお願いいします。

●質問者: esecua
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:PHP オブジェクト指向 半年
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● katsube
●26ポイント

Javaの入門書あたりを開くと詳しく載っていたりするんですが(^^;

オブジェクトなどの概念的な物ではなく、手っ取り早く効能を知りたいと言うことであれば「カプセル化」「継承」「ポリモーフィズム」あたりから調べられてはいかがでしょう。


カプセル化はコードの独立性を高める効能があります。

・カプセル化と隠蔽

http://www.nextindex.net/java/capsulate.html


継承は同じコードをちょっと改良して再利用したいといった際に活用できます。

・クラスの継承

http://www.nextindex.net/java/inherit.html

・ewords

http://e-words.jp/w/E7B699E689BF.html


ポリモーフィズムは直訳すると「多様性」のことです。

オブジェクトを生成する際に状況によって何パターンもの生成方法に対応できます。

・Wikipedia

http://ja.wikipedia.org/wiki/%E3%83%9D%E3%83%AA%E3%83%A2%E3%...


仕事ではなく個人レベルでの小規模なプログラミングであれば、無理に使う必要はありませんが、コードが大きくなってくると重宝するシーンが多いです。


2 ● aiaina
●1ポイント

オブジェクト指向とはなにか

http://www.s34.co.jp/cpptechdoc/article/oo/

こちらが解りやすいと思います

◎質問者からの返答

ぐぐるぐらい私でもできます


3 ● ratbeta
●20ポイント

!簡潔な説明を行うために、以下の文章は多くの語弊/誤りを含みます!

オブジェクト指向というのは、簡単に言うと関数がすべて箱の中に入れられて整理されている状態で提供されていることを言います。

つまり、例えばC言語などではstrlen()やstrcpy()のような名前の関数を用いますが、オブジェクト指向のC#などの言語では

String.LengthやString.copy()などという名前の関数が用いられます。

これらは、Stringという名前の箱(オブジェクト)に含まれている変数や、関数を指します。

オブジェクト指向にはいろいろな利点があると私は思いますが、

一番即物的な部分では、「関数名の重複が起こりにくい」ことだと思います。

reset()とか、exit()とか、"よくある"名前を関数につけてしまうと、既に提供されている関数の名前と被ってしまってエラーを吐く場合が多いです。

オブジェクト指向では、始めから箱の中に整理されているわけですから、

そういった意味で名称が重複する可能性は格段に少なくなるといえます。

◎質問者からの返答

?C言語ではなくてPHPの例でお願いします。


4 ● くまっぷす
●30ポイント

オブジェクト指向の本を読むと、オブジェクト指向が思考の道具でみんながクラス定義をやって継承して…というようなことをしないといけないかのように思ってしまいますが、実際にはそういう作業を個人でする必要はあんまりありません。

どちらかというと「誰かが用意してくれた機能(クラスライブラリ)を使うためにたまたまオブジェクト指向の知識が必要」ぐらいのケースが大半です。実はそれはオブジェクト指向の特徴のひとつである「カプセル化(情報の隠蔽機能)」などを活かしているのですが。

例えば、PHPでもクラスライブラリはいろいろ用意されていますね。ちょっとググっていて面白いのを見つけたんですが

http://plaza.rakuten.co.jp/pgmemo/diary/200511290000/

PDFを生成するためのクラスライブラリ。ここのblogで紹介されているサンプルプログラムのうち

$pdf = new MBFPDF();

でMBFPDFクラスのオブジェクトを生成、その後の

$pdf->AddMBFont(GOTHIC ,'SJIS');

$pdf->AddMBFont(PGOTHIC,'SJIS');

...

などでそのオブジェクトの中のメソッドを呼び出しています。

なので最初は「こういう書き方をするものだ」と割り切って使うだけに徹する方がよいと思います。

そのうちにメリットに気が付いて(例えば上記の場合、PDFを生成するオブジェクトをたくさん並べたい場合は

$pdf2 = new MBFPDF();

$pdf3 = new MBFPDF();

$pdf4 = new MBFPDF();

...のようにどんどん宣言するだけで、pdf,pdf2,pdf3,pdf4…のお互いの内部の状態などを一切考えずに使うことができます)中身はいったいどうなってるんだろう、と思ったときにソースを眺めるなどして理解していく、というのがわかりやすいでしょう。

あと、PHPよりもRubyのほうがオブジェクト指向理解するにははるかによいと思いますが、これは好みですからなんとも。

◎質問者からの返答

なるほど


5 ● kappaebisen
●23ポイント

http://piro.sakura.ne.jp/latest/flakes/033oo_javascript.html

http://squeak.hp.infoseek.co.jp/

PHPはPHP5でもまだまだオブジェクト指向言語としては甘い上、これからも言語仕様が大きく変わる可能性があるのであまりオススメできません。

そこで、最近脚光を浴びてきたJavaScriptはどうでしょうか。JavaScriptは「すべてがオブジェクト」という一風変わったスタイルを持つ言語ですが、それゆえにオブジェクト指向を理解するにはうってつけといえます。

視覚的にオブジェクト指向を理解したいのであれば、Squeakも馬鹿にできません。割とお手軽にオブジェクト指向的なプログラム(?)を作って遊べます。


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ