Webでオブジェクト指向プログラミング (442レス)
上下前次1-新
149: 2006/03/30(木)16:29 ID:??? AAS
PHP 限定で言えば global を書かずにコードを書く
ためにあると思っておいて間違いではない
コードにまとまりがないうちは不便だが、まとまりが
ない段階でダメだと思えばいい
150(1): 2006/03/30(木)17:18 ID:??? AAS
それだったら普通の関数でよくね?
151: 2006/03/30(木)21:38 ID:??? AAS
PHPだとそうなっちゃうよな
152(1): 2006/03/31(金)00:12 ID:??? AAS
perlみたいにパッケージがあれば関数ライブラリだけでやってけるかも知れないが、PHPにパッケージはない。
代わりにクラスを使うしかない。
153: 2006/03/31(金)00:31 ID:??? AAS
>>147
むしろなぜ分類(除外)するのか、というところにOOの本質があるのでは?
154: 2006/03/31(金)05:07 ID:mYeRlPC0(1) AAS
>>152
PHPのクラスがパッケージの代替でしかないなら、インスタンス化は無意味ってこと?
$hoge = new Hoge; $hoge->kansuu();
より
Hoge::kansuu();
の方が早いもんね
155: 2006/03/31(金)05:13 ID:??? AAS
インスタンスにしないと継承でけんやん
156(1): 2006/03/31(金)05:31 ID:??? AAS
継承とかPHPで使ってるの見たことない。
グローバル変数使わないだけなら定数使うとかあるし
157: 2006/03/31(金)05:36 ID:??? AAS
ばりばり使いますよ
フレームワークなんて継承前提だし
158(1): 2006/03/31(金)08:04 ID:??? AAS
インスタンスにせんでも継承はできまっせ
159: 2006/03/31(金)08:09 ID:??? AAS
>>150
普通の関数でいいと思うならそれでいけばいいじゃんてことでしょ
つかそういうスレつけてる人はこのスレ覗く必要全然ない
160(1): 2006/03/31(金)08:38 ID:??? AAS
・関数がいい人は関数でやればいい
・クラスがいい人はクラスでやればいい
↑ここまではおk。それじゃ、
・クラスがいい人は何のためにクラス使ってるの?しかもPHPでw ←いまここ
161: 2006/03/31(金)08:56 ID:??? AAS
OOP関係の本なら大概載っている
1.カプセル化
2.継承
3.ポリモフィズム
の、3つが何故良いのかを説明できれば、OOPの利点が見えるんじゃないの?
詳しい人↓よろ。
162(1): 2006/03/31(金)08:59 ID:??? AAS
いまだにクラスを何に使ってるの、なんて聞く人がいるの?
163(1): 2006/03/31(金)09:03 ID:??? AAS
1.カプセル化
2.継承
3.ポリモフィズム
ならJavaのほうが初めからそういうふうに設計された言語だけあって有利じゃないの?
PHPのクラスにそういう利点て見出せないな。
164(1): 2006/03/31(金)09:11 ID:??? AAS
>>162
みんなのために説明よろしく。
165: 2006/03/31(金)09:23 ID:??? AAS
>>158
本当だ…
ちゃんと親クラスの関数にアクセスできる。
てっきりインスタンス時点で合成されるのかと思ってた。
166: 2006/03/31(金)09:31 ID:??? AAS
PHPはもともと関数志向?的な作りだから、
OOPに最適化されているとは言いがたいんだけど、
それでもクラスは使った方が便利だよ。
167: 2006/03/31(金)09:43 ID:??? AAS
それじゃなぜPHPを使うの?
168: 2006/03/31(金)09:49 ID:??? AAS
総合的に見て、実用性に秀でているから。
169(1): 2006/03/31(金)11:27 ID:??? AAS
>>164
みんなのためだなんて嘘書かないの。
ぼく分からないから教えてって言え。
170: 2006/03/31(金)11:55 ID:??? AAS
>>169
ぼく分からないから教えて
これでいいか?さあ早く教えろ。
171(3): 2006/03/31(金)14:59 ID:??? AAS
カプセル化 【encapsulation】
読み方 : カプセルか
分野 : プログラミング > オブジェクト指向
オブジェクト指向プログラミングが持つ特徴の一つ。
データとそれを操作する手続きを一体化して「オブジェクト」として定義し、オブジェクト内の細かい仕様や構造を外部から隠蔽すること。
外部からは公開された手続きを利用することでしかデータを操作できないようにすることで、個々のオブジェクトの独立性が高まる。
カプセル化を進めることによりオブジェクト内部の仕様変更が外部に影響しなくなり、ソフトウェアの保守性や開発効率が高まり、プログラムの部分的な再利用が容易になる。
で、PHPで実用的なカプセル化ってどんなのよ?
172: 2006/03/31(金)15:56 ID:??? AAS
>>171
PHP(4)ではカプセル化は無理。
だから、コメント上で、
どの情報にはアクセスできてどの情報はアクセスを禁止するかを明言する必要がある。
だからPHP(4)に関して言えば、OOPによるカプセル化の利点はない。
173(1): 2006/03/31(金)17:08 ID:??? AAS
Singleton前提のクラスは
インスタンス化する必要ないってことでOK?
でもコンストラクタでの初期設定ができないか…
174(6): 2006/03/31(金)17:39 ID:CdaR7r2n(1) AAS
PHPにおけるOOPの利点は、言葉で伝えてもなかなか分からないと思うので、
応用例を作ってみました。
文字列を1文字ずつ読み出すスクリプトです。
ソース
外部リンク[zip]:trashtoy.dw.land.to
実行例
外部リンク[php]:trashtoy.dw.land.to
外部リンク[php]:trashtoy.dw.land.to
175(2): 174 2006/03/31(金)17:44 ID:??? AAS
>>173
例えば >>174 のソースの中にある
euc_jp_reader クラスや shift_jis_reader クラスなんかは Singleton 前提のクラスですが、
char_iterator クラスのコンストラクタの引数となるため、インスタンス化してやる必要があります。
Singleton 前提のクラスを敢えてインスタンス化する利点の一つは、
ポリモルフィズムが応用できるってことかな。
176: 2006/03/31(金)18:30 ID:??? AAS
>>175
なるほど
○他の関数の引数に出来る
○その結果クラス名を指定しないメソッド呼び出しも可能になる
(ポリモーフィズム)
ってことだね
177: 2006/03/31(金)18:35 ID:??? AAS
>>174
2つ質問がある。
・そのスクリプトの中で、Webサイトを構築する上で有用な情報はどこにあるの?
・そのスクリプトの中で、JavaやRubyに対するPHPの優位性はどこにあるの?
178: 174 2006/03/31(金)19:14 ID:??? AAS
・そのスクリプトの中で、Webサイトを構築する上で有用な情報はどこにあるの?
ごめん。意味を正しく受け取ることが出来なかったんだけど、要は
「それを使って何か実際に役に立つものが作れるのか?」
ってことで良いですか?
これは自作の XML 解析モジュールに応用してます。
レンタルサーバーみたいに、外部モジュールを自由に導入できない
(すなわち libxml モジュールなどが使えない)環境のために作りました。
・そのスクリプトの中で、JavaやRubyに対するPHPの優位性はどこにあるの?
知りません。もしかしたら Java や Ruby のほうが優れているんじゃないんですか?
別に PHP が Java や Ruby より優れてなきゃいけない理由なんてないし。
上下前次1-新書関写板覧索設栞歴
あと 264 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.010s