サーバーサイドWebプログラミングのOOスレです。
・OOP、MVC、デザパタなどのコンセプト的な話題
・OOにまつわる言語比較(言語批判はその言語で開発してる人に失礼にあたることが多いのでなるべく禁止でお願いします)
・保守、再利用、生産性、開発環境などの実践的な話題
・Webサーバ、DBなどの外部との親和性に関する問題
・学習、教育などの方法論
などなど。
前スレ
PHPでオブジェクト指向プログラミング
http://pc8.2ch.net/test/read.cgi/php/1113724557/
Webでオブジェクト指向プログラミング
1nobodyさん
2005/12/02(金) 11:18:17ID:lnZM9OlM159nobodyさん
2006/03/31(金) 08:09:59ID:???160nobodyさん
2006/03/31(金) 08:38:38ID:??? ・関数がいい人は関数でやればいい
・クラスがいい人はクラスでやればいい
↑ここまではおk。それじゃ、
・クラスがいい人は何のためにクラス使ってるの?しかもPHPでw ←いまここ
・クラスがいい人はクラスでやればいい
↑ここまではおk。それじゃ、
・クラスがいい人は何のためにクラス使ってるの?しかもPHPでw ←いまここ
161nobodyさん
2006/03/31(金) 08:56:52ID:??? OOP関係の本なら大概載っている
1.カプセル化
2.継承
3.ポリモフィズム
の、3つが何故良いのかを説明できれば、OOPの利点が見えるんじゃないの?
詳しい人↓よろ。
1.カプセル化
2.継承
3.ポリモフィズム
の、3つが何故良いのかを説明できれば、OOPの利点が見えるんじゃないの?
詳しい人↓よろ。
162nobodyさん
2006/03/31(金) 08:59:41ID:??? いまだにクラスを何に使ってるの、なんて聞く人がいるの?
163nobodyさん
2006/03/31(金) 09:03:25ID:??? 1.カプセル化
2.継承
3.ポリモフィズム
ならJavaのほうが初めからそういうふうに設計された言語だけあって有利じゃないの?
PHPのクラスにそういう利点て見出せないな。
2.継承
3.ポリモフィズム
ならJavaのほうが初めからそういうふうに設計された言語だけあって有利じゃないの?
PHPのクラスにそういう利点て見出せないな。
166nobodyさん
2006/03/31(金) 09:31:23ID:??? PHPはもともと関数志向?的な作りだから、
OOPに最適化されているとは言いがたいんだけど、
それでもクラスは使った方が便利だよ。
OOPに最適化されているとは言いがたいんだけど、
それでもクラスは使った方が便利だよ。
167nobodyさん
2006/03/31(金) 09:43:30ID:??? それじゃなぜPHPを使うの?
168nobodyさん
2006/03/31(金) 09:49:02ID:??? 総合的に見て、実用性に秀でているから。
171nobodyさん
2006/03/31(金) 14:59:28ID:??? カプセル化 【encapsulation】
読み方 : カプセルか
分野 : プログラミング > オブジェクト指向
オブジェクト指向プログラミングが持つ特徴の一つ。
データとそれを操作する手続きを一体化して「オブジェクト」として定義し、オブジェクト内の細かい仕様や構造を外部から隠蔽すること。
外部からは公開された手続きを利用することでしかデータを操作できないようにすることで、個々のオブジェクトの独立性が高まる。
カプセル化を進めることによりオブジェクト内部の仕様変更が外部に影響しなくなり、ソフトウェアの保守性や開発効率が高まり、プログラムの部分的な再利用が容易になる。
で、PHPで実用的なカプセル化ってどんなのよ?
読み方 : カプセルか
分野 : プログラミング > オブジェクト指向
オブジェクト指向プログラミングが持つ特徴の一つ。
データとそれを操作する手続きを一体化して「オブジェクト」として定義し、オブジェクト内の細かい仕様や構造を外部から隠蔽すること。
外部からは公開された手続きを利用することでしかデータを操作できないようにすることで、個々のオブジェクトの独立性が高まる。
カプセル化を進めることによりオブジェクト内部の仕様変更が外部に影響しなくなり、ソフトウェアの保守性や開発効率が高まり、プログラムの部分的な再利用が容易になる。
で、PHPで実用的なカプセル化ってどんなのよ?
172nobodyさん
2006/03/31(金) 15:56:15ID:??? >>171
PHP(4)ではカプセル化は無理。
だから、コメント上で、
どの情報にはアクセスできてどの情報はアクセスを禁止するかを明言する必要がある。
だからPHP(4)に関して言えば、OOPによるカプセル化の利点はない。
PHP(4)ではカプセル化は無理。
だから、コメント上で、
どの情報にはアクセスできてどの情報はアクセスを禁止するかを明言する必要がある。
だからPHP(4)に関して言えば、OOPによるカプセル化の利点はない。
173nobodyさん
2006/03/31(金) 17:08:32ID:??? Singleton前提のクラスは
インスタンス化する必要ないってことでOK?
でもコンストラクタでの初期設定ができないか…
インスタンス化する必要ないってことでOK?
でもコンストラクタでの初期設定ができないか…
174nobodyさん
2006/03/31(金) 17:39:36ID:CdaR7r2n PHPにおけるOOPの利点は、言葉で伝えてもなかなか分からないと思うので、
応用例を作ってみました。
文字列を1文字ずつ読み出すスクリプトです。
ソース
http://trashtoy.dw.land.to/app/chartest/chartest.zip
実行例
http://trashtoy.dw.land.to/app/chartest/sjis-test.php
http://trashtoy.dw.land.to/app/chartest/euc-test.php
応用例を作ってみました。
文字列を1文字ずつ読み出すスクリプトです。
ソース
http://trashtoy.dw.land.to/app/chartest/chartest.zip
実行例
http://trashtoy.dw.land.to/app/chartest/sjis-test.php
http://trashtoy.dw.land.to/app/chartest/euc-test.php
175174
2006/03/31(金) 17:44:05ID:???176nobodyさん
2006/03/31(金) 18:30:26ID:???177nobodyさん
2006/03/31(金) 18:35:59ID:???178174
2006/03/31(金) 19:14:39ID:??? ・そのスクリプトの中で、Webサイトを構築する上で有用な情報はどこにあるの?
ごめん。意味を正しく受け取ることが出来なかったんだけど、要は
「それを使って何か実際に役に立つものが作れるのか?」
ってことで良いですか?
これは自作の XML 解析モジュールに応用してます。
レンタルサーバーみたいに、外部モジュールを自由に導入できない
(すなわち libxml モジュールなどが使えない)環境のために作りました。
・そのスクリプトの中で、JavaやRubyに対するPHPの優位性はどこにあるの?
知りません。もしかしたら Java や Ruby のほうが優れているんじゃないんですか?
別に PHP が Java や Ruby より優れてなきゃいけない理由なんてないし。
ごめん。意味を正しく受け取ることが出来なかったんだけど、要は
「それを使って何か実際に役に立つものが作れるのか?」
ってことで良いですか?
これは自作の XML 解析モジュールに応用してます。
レンタルサーバーみたいに、外部モジュールを自由に導入できない
(すなわち libxml モジュールなどが使えない)環境のために作りました。
・そのスクリプトの中で、JavaやRubyに対するPHPの優位性はどこにあるの?
知りません。もしかしたら Java や Ruby のほうが優れているんじゃないんですか?
別に PHP が Java や Ruby より優れてなきゃいけない理由なんてないし。
179nobodyさん
2006/03/31(金) 19:54:05ID:??? 1つ目の質問についてだけど、いちおうWebProg板だしWebプログラミングでオブジェクト指向っていうのがテーマなスレだから、あんまりズレないようにしないとね。
XMLの解析に使ってる点はいいんじゃない。お疲れさん。
2つ目は他の言語でなくなぜPHPなのかって話題が出てたから聞いてみただけ。
PHPしか知らないってのも理由の1つとしてはいいけど、馬鹿にされるからあまり言わないほうがいいかもね。
XMLの解析に使ってる点はいいんじゃない。お疲れさん。
2つ目は他の言語でなくなぜPHPなのかって話題が出てたから聞いてみただけ。
PHPしか知らないってのも理由の1つとしてはいいけど、馬鹿にされるからあまり言わないほうがいいかもね。
180nobodyさん
2006/03/31(金) 21:05:47ID:??? >>179
そういうしょうもない煽りは
【戦場は】PHP王とJava乞食【エンタープライズ】
http://pc8.2ch.net/test/read.cgi/php/1140124172/
こっちでやれ
そういうしょうもない煽りは
【戦場は】PHP王とJava乞食【エンタープライズ】
http://pc8.2ch.net/test/read.cgi/php/1140124172/
こっちでやれ
181nobodyさん
2006/03/31(金) 22:24:05ID:??? >>171の続き
継承 【inheritance】
読み方 : けいしょう
別名 : インヘリタンス
分野 : プログラミング > オブジェクト指向
オブジェクト指向プログラミングにおいて、既に定義されているクラスをもとに、拡張や変更を加えた新しいクラスを定義すること。
元になるクラスを「スーパークラス」(super class)、あるいは「基底クラス」「基本クラス」(base class)などと呼び、新たに定義されたクラスを「サブクラス」(subclass)、あるいは「派生クラス」(derived class)と呼ぶ。
スーパークラスの性質はすべてサブクラスに受け継がれ、サブクラスではスーパークラスとの違いを定義するだけでよい。
複数のスーパークラスから新しいクラスを定義することを多重継承という。
で、PHPで実用的な継承ってどんなのよ?
継承 【inheritance】
読み方 : けいしょう
別名 : インヘリタンス
分野 : プログラミング > オブジェクト指向
オブジェクト指向プログラミングにおいて、既に定義されているクラスをもとに、拡張や変更を加えた新しいクラスを定義すること。
元になるクラスを「スーパークラス」(super class)、あるいは「基底クラス」「基本クラス」(base class)などと呼び、新たに定義されたクラスを「サブクラス」(subclass)、あるいは「派生クラス」(derived class)と呼ぶ。
スーパークラスの性質はすべてサブクラスに受け継がれ、サブクラスではスーパークラスとの違いを定義するだけでよい。
複数のスーパークラスから新しいクラスを定義することを多重継承という。
で、PHPで実用的な継承ってどんなのよ?
184nobodyさん
2006/03/31(金) 23:22:53ID:??? なんだこの流れ
PHP のスレは大量にあるんだからどこでも使えよ
単に PHP をバカにしたいやつはもうこないでくれないか
本当に知らないのならもっと真摯に勉強しろ
PHP のスレは大量にあるんだからどこでも使えよ
単に PHP をバカにしたいやつはもうこないでくれないか
本当に知らないのならもっと真摯に勉強しろ
186nobodyさん
2006/03/31(金) 23:42:06ID:??? それ以前に意味のある質問したことあるんですか?
187nobodyさん
2006/03/31(金) 23:55:31ID:??? その質問は意味があるんですか?
188174
2006/03/32(土) 00:32:20ID:???189nobodyさん
2006/03/32(土) 16:53:32ID:??? この流れじゃあ
「オブジェクト指向意味ワカランから本買うけど何がいい?」
なんて厨な質問できねーYO!
「オブジェクト指向意味ワカランから本買うけど何がいい?」
なんて厨な質問できねーYO!
191nobodyさん
2006/03/32(土) 20:29:42ID:???193nobodyさん
2006/03/32(土) 21:39:06ID:??? >>128
JavaやC++のように大規模開発でも使う場面が
多い言語ではprivateは重宝するよ。
なにせprivateをうまく使うとデバッグがしやすいしバグもとりやすく
テストもしやすくソースコードの信頼性も上がる。
JavaやC++のように大規模開発でも使う場面が
多い言語ではprivateは重宝するよ。
なにせprivateをうまく使うとデバッグがしやすいしバグもとりやすく
テストもしやすくソースコードの信頼性も上がる。
194nobodyさん
2006/03/32(土) 21:42:32ID:???195nobodyさん
2006/03/32(土) 21:43:46ID:??? >>143
この本を読めばクラスの使い方がわかるようになるよ。
超お勧め。
Amazon.co.jp:アジャイルソフトウェア開発の奥義: 本
http://www.amazon.co.jp/exec/obidos/ASIN/4797323361/249-2469696-1854764
この本を読めばクラスの使い方がわかるようになるよ。
超お勧め。
Amazon.co.jp:アジャイルソフトウェア開発の奥義: 本
http://www.amazon.co.jp/exec/obidos/ASIN/4797323361/249-2469696-1854764
196nobodyさん
2006/03/32(土) 21:45:56ID:??? >>156
おれはよく継承を使いまくってる。
将来拡張する予定があるものは
かならず(空でもいいので)スーパークラスを作って
継承してつかっている。
継承は使い方を間違えたり勘違いしている人間が使うと
継承=拡張そのものだと
誤解してだたやみくもに継承しまくることがあるので、
継承を使いこなしたければ
デザインパターンについてよく勉強した方が良い。
おれはよく継承を使いまくってる。
将来拡張する予定があるものは
かならず(空でもいいので)スーパークラスを作って
継承してつかっている。
継承は使い方を間違えたり勘違いしている人間が使うと
継承=拡張そのものだと
誤解してだたやみくもに継承しまくることがあるので、
継承を使いこなしたければ
デザインパターンについてよく勉強した方が良い。
197nobodyさん
2006/03/32(土) 21:47:44ID:??? >>160
> ・関数がいい人は関数でやればいい
> ・クラスがいい人はクラスでやればいい
> ↑ここまではおk。それじゃ、
> ・クラスがいい人は何のためにクラス使ってるの?しかもPHPでw ←いまここ
大規模化する可能性のあるソフトをPHPで作るとき。
顧客がPHPを使えと言ってきたら
PHPを使わざるを得ない。けれどもオブジェクト指向を
使わないで開発すると一体どんなとんでもない目に
あうのか散々味わってきたので
漏れはかならずオブジェクト指向でPHPコードを書く。
> ・関数がいい人は関数でやればいい
> ・クラスがいい人はクラスでやればいい
> ↑ここまではおk。それじゃ、
> ・クラスがいい人は何のためにクラス使ってるの?しかもPHPでw ←いまここ
大規模化する可能性のあるソフトをPHPで作るとき。
顧客がPHPを使えと言ってきたら
PHPを使わざるを得ない。けれどもオブジェクト指向を
使わないで開発すると一体どんなとんでもない目に
あうのか散々味わってきたので
漏れはかならずオブジェクト指向でPHPコードを書く。
198nobodyさん
2006/03/32(土) 21:49:55ID:??? 継承 = inheritance
拡張 = extends
なんだよな・・・・
拡張 = extends
なんだよな・・・・
199nobodyさん
2006/03/32(土) 21:50:04ID:??? >>163
それに関してはPHPでもJavaでも同じように実現できている。
PHPで問題なのは名前空間と型安全性問題。
メソッド引数に型指定もクラスしか使えないこと。
integer型やstring型などをメソッド引数に指定できないのが
今のPHP5の難点。Javaでいえば引数の型をObjectにしているようなものだ。
Perlでも同様だが。
それに関してはPHPでもJavaでも同じように実現できている。
PHPで問題なのは名前空間と型安全性問題。
メソッド引数に型指定もクラスしか使えないこと。
integer型やstring型などをメソッド引数に指定できないのが
今のPHP5の難点。Javaでいえば引数の型をObjectにしているようなものだ。
Perlでも同様だが。
200nobodyさん
2006/03/32(土) 21:52:35ID:??? >>171
PHP5はどうみてもJavaのパクリとしか
思えないほど十分にオブジェクト指向できるような
言語となった。問題なのは上でも述べているとおり
名前空間と型指定の曖昧さ、ほかに戻り値の型を指定できないことだね。
PHP5はどうみてもJavaのパクリとしか
思えないほど十分にオブジェクト指向できるような
言語となった。問題なのは上でも述べているとおり
名前空間と型指定の曖昧さ、ほかに戻り値の型を指定できないことだね。
202nobodyさん
2006/03/32(土) 21:59:03ID:??? >>174-175
そんなに汚くないコードだけど
ちょっと抵抗があるソースコードだな。
クラス名が全部小文字で
名前空間の替わりの役割を果たしているわけでもないのに
区切り文字に_(アンダースコア)つかうという
表記を未だに使っているとは・・・・。
やっまりキャメルケース(CamelCase)がわかりやすいと思うのだが。
それから一ファイルにつき一クラスにしておくのがベスト。
一つのファイルに複数のクラスを入れておくことはお勧めしない。
ファイル名とクラス名も一致させておく。名前空間が使えないので
そこだけ例外的にクラスだけ名に_(アンダースコア)を使う。
詳しくはPEARライブラリのソースコードを見てみてくれ。
それから文字コードがEUCだとは。
Unicode(UTF-8)で統一してくれれば
DBとのやりとりも楽なのだが。
そんなに汚くないコードだけど
ちょっと抵抗があるソースコードだな。
クラス名が全部小文字で
名前空間の替わりの役割を果たしているわけでもないのに
区切り文字に_(アンダースコア)つかうという
表記を未だに使っているとは・・・・。
やっまりキャメルケース(CamelCase)がわかりやすいと思うのだが。
それから一ファイルにつき一クラスにしておくのがベスト。
一つのファイルに複数のクラスを入れておくことはお勧めしない。
ファイル名とクラス名も一致させておく。名前空間が使えないので
そこだけ例外的にクラスだけ名に_(アンダースコア)を使う。
詳しくはPEARライブラリのソースコードを見てみてくれ。
それから文字コードがEUCだとは。
Unicode(UTF-8)で統一してくれれば
DBとのやりとりも楽なのだが。
203nobodyさん
2006/03/32(土) 22:01:42ID:???205nobodyさん
2006/03/32(土) 22:05:14ID:??? >>198
PHPやJavaではextendsで継承しているともいうし拡張するともいう。
しかしクラスそのものを拡張しているだけであって
それによってそれだけで簡単にソフトウェアの拡張性が高まるとは限らない。
という落とし穴に気をつけないといけない。
その辺りを素早く理解するにはデザインパターンを学ぶことをお勧めする。
この本は初心者には非常にわかりやすいので
かなりお勧め。
増補改訂版Java言語で学ぶデザインパターン入門
http://www.hyuki.com/dp/
PHPやJavaではextendsで継承しているともいうし拡張するともいう。
しかしクラスそのものを拡張しているだけであって
それによってそれだけで簡単にソフトウェアの拡張性が高まるとは限らない。
という落とし穴に気をつけないといけない。
その辺りを素早く理解するにはデザインパターンを学ぶことをお勧めする。
この本は初心者には非常にわかりやすいので
かなりお勧め。
増補改訂版Java言語で学ぶデザインパターン入門
http://www.hyuki.com/dp/
206nobodyさん
2006/03/32(土) 22:06:45ID:??? >>201
gotoか。Javaみたいに例外処理限定や
ラベル付きbreak, continue文だけにgoto同様の機能を
限定的に持たせるだけにしてくれればいいのだが・・・・。
C#みたいにJavaのラベル付きbreakやcontinueをgotoキーワードで
実装すると言うだけのレベルだろうか?
gotoか。Javaみたいに例外処理限定や
ラベル付きbreak, continue文だけにgoto同様の機能を
限定的に持たせるだけにしてくれればいいのだが・・・・。
C#みたいにJavaのラベル付きbreakやcontinueをgotoキーワードで
実装すると言うだけのレベルだろうか?
207nobodyさん
2006/03/32(土) 22:20:15ID:??? 188はTemplateMethodの実例を見せたかったんだろ
俺は悪いコードだとは思わないが
俺は悪いコードだとは思わないが
209nobodyさん
2006/03/32(土) 22:39:55ID:??? 何でいまどきgotoなんだろ。
俺的には無限再帰を可能にしてwhileとforみたいなダサいもんも排除した
関数言語にして欲しいと前から思っているんだけどそんな人いませんか。
俺的には無限再帰を可能にしてwhileとforみたいなダサいもんも排除した
関数言語にして欲しいと前から思っているんだけどそんな人いませんか。
210nobodyさん
2006/03/32(土) 23:12:37ID:??? Gauche とか使えば?
211nobodyさん
2006/03/32(土) 23:13:10ID:??? PHPで継承はあんまり必要ないな。
使い道がないから。
ウェブでオブジェクト指向するなら、JavaScriptが一番使いどころが多い。
使い道がないから。
ウェブでオブジェクト指向するなら、JavaScriptが一番使いどころが多い。
213nobodyさん
2006/03/32(土) 23:39:13ID:??? finalとabstractとinterfaceが
とりあえずどんなものかは
わかったけど実際にどうやって
それを有効利用できればいいか
わからない香具師に結城本はおすすめだと思う。
とりあえずどんなものかは
わかったけど実際にどうやって
それを有効利用できればいいか
わからない香具師に結城本はおすすめだと思う。
214nobodyさん
2006/03/32(土) 23:40:02ID:???216nobodyさん
2006/03/32(土) 23:56:49ID:??? デフォルトがprivateだったらすげー便利だったのになぁ。
217nobodyさん
2006/04/02(日) 00:13:33ID:??? Javaだったらデフォルトでpackage privateになるのにな。
publicと明示的につけないとパッケージ外部からアクセスできなくなる
ってことが名前空間がないPHPではできないから
デザインパターンの実装も中途半端になる。
publicと明示的につけないとパッケージ外部からアクセスできなくなる
ってことが名前空間がないPHPではできないから
デザインパターンの実装も中途半端になる。
218nobodyさん
2006/04/02(日) 01:06:11ID:???219nobodyさん
2006/04/02(日) 01:15:39ID:???220nobodyさん
2006/04/02(日) 01:57:43ID:??? PHP6のgotoは、gotoというキーワードが実装される訳ではなくて、
for () {
if () {
break foo;
}
print "bar\n";
foo:
print "baz\n";
}
こんな感じに書けるようになるもの。
for () {
if () {
break foo;
}
print "bar\n";
foo:
print "baz\n";
}
こんな感じに書けるようになるもの。
222nobodyさん
2006/04/02(日) 07:04:12ID:??? >>199,200
型安全性ならis_arrayとかis_stringとかinstanceofでチェックすればいいだけじゃないの?
型安全性ならis_arrayとかis_stringとかinstanceofでチェックすればいいだけじゃないの?
223nobodyさん
2006/04/02(日) 07:17:49ID:??? それはそうだが
何が求められているのかを知るために
中身まで見ないといけないのはあまりよろしくないだろう。
何が求められているのかを知るために
中身まで見ないといけないのはあまりよろしくないだろう。
224nobodyさん
2006/04/02(日) 07:50:00ID:??? つ @param @return
225nobodyさん
2006/04/02(日) 09:57:52ID:??? 動的型付け言語であるPHPで、型を指定したいってのがそもそも可笑しな話なんだよな。
それでもタイプヒンティングみたいにオブジェクトの型を動的にチェックしてくれるようにする構文はいいアイデアだと思った。
Javaでいう変数の静的な型指定(つーかC/C++からだけど)と構文を似せたってのも良い。
JavaScript2.0なんかもそういう方向に行ってるね。
>>199
> integer型やstring型などをメソッド引数に指定できないのが
たぶんだけど、統一性の問題があるからだと思う。
例えば引数にintを指定したメソッドがあったとして、呼び出すときにstringを渡したからってエラーにすべきではないでしょ。
その辺の仕様がうまくいかないんじゃないかな。
それでもタイプヒンティングみたいにオブジェクトの型を動的にチェックしてくれるようにする構文はいいアイデアだと思った。
Javaでいう変数の静的な型指定(つーかC/C++からだけど)と構文を似せたってのも良い。
JavaScript2.0なんかもそういう方向に行ってるね。
>>199
> integer型やstring型などをメソッド引数に指定できないのが
たぶんだけど、統一性の問題があるからだと思う。
例えば引数にintを指定したメソッドがあったとして、呼び出すときにstringを渡したからってエラーにすべきではないでしょ。
その辺の仕様がうまくいかないんじゃないかな。
227nobodyさん
2006/04/02(日) 10:24:36ID:??? >>222
以前もどこかのスレで議論があったが。
それだけでは以下の問題を解決できない。
$number = 9;
$value = 1;
$x = $number + value *2;
$y = $x * $x + 4 * $number;
$number = 1000;
$z = $x / ($y + $number);
とした適当なコードがあったとき、
あとから
$x = $number + value *2;
の部分を
$x = $nunber + value *2;
と書きかえても $numberと$nunberとの違いの
に気づかない。
そして路頭に迷ったあげくにデバッグに無駄に時間をかけることになって
開発速度が衰える。
以前もどこかのスレで議論があったが。
それだけでは以下の問題を解決できない。
$number = 9;
$value = 1;
$x = $number + value *2;
$y = $x * $x + 4 * $number;
$number = 1000;
$z = $x / ($y + $number);
とした適当なコードがあったとき、
あとから
$x = $number + value *2;
の部分を
$x = $nunber + value *2;
と書きかえても $numberと$nunberとの違いの
に気づかない。
そして路頭に迷ったあげくにデバッグに無駄に時間をかけることになって
開発速度が衰える。
228nobodyさん
2006/04/02(日) 10:28:07ID:??? >>225
Javaみたいにラッパークラスを作ってしまえばいいかもしれんな。
final class Integer extends Number {
$private $value;
__construct($value){
if($valueがint型であれば){
$this->value = $value;
} else {
throw new NumberFormatException("整数以外入力するんじゃねえぞこのバカ野郎氏ね!");
}
}
}
Javaみたいにラッパークラスを作ってしまえばいいかもしれんな。
final class Integer extends Number {
$private $value;
__construct($value){
if($valueがint型であれば){
$this->value = $value;
} else {
throw new NumberFormatException("整数以外入力するんじゃねえぞこのバカ野郎氏ね!");
}
}
}
229nobodyさん
2006/04/02(日) 10:29:01ID:??? privateに$が余分についていた。
あとは適度に必要な変換メソッドを追加しておくべし。
intValue()とか
あとは適度に必要な変換メソッドを追加しておくべし。
intValue()とか
230nobodyさん
2006/04/02(日) 10:46:56ID:???231nobodyさん
2006/04/02(日) 13:43:38ID:???234nobodyさん
2006/04/03(月) 11:16:30ID:??? >>233
つ 「それだとAUTO-BOXINGが欲しくなるな」
満足戴けたかな?
PHPみたいな型なし言語なら、Javaみたいなプリミティブ型とそのラッパークラスのオートボクシング/アンボクシングだけでなく、もう少し汎用的な自動型変換が欲しいところだな。
function method(int $x) {}
を
method("100");
っていうふうに呼び出したならintにキャストするくらいの自動化はあってもいいと思う。
(今あるPHPのタイプヒンティングだと、型が違うとエラーっていう設計だから)
もともとPHPは変数の実行時における型が文字列か整数かを意識しなくても適宜変換してくれるように設計された言語なわけだし。
つ 「それだとAUTO-BOXINGが欲しくなるな」
満足戴けたかな?
PHPみたいな型なし言語なら、Javaみたいなプリミティブ型とそのラッパークラスのオートボクシング/アンボクシングだけでなく、もう少し汎用的な自動型変換が欲しいところだな。
function method(int $x) {}
を
method("100");
っていうふうに呼び出したならintにキャストするくらいの自動化はあってもいいと思う。
(今あるPHPのタイプヒンティングだと、型が違うとエラーっていう設計だから)
もともとPHPは変数の実行時における型が文字列か整数かを意識しなくても適宜変換してくれるように設計された言語なわけだし。
236nobodyさん
2006/04/03(月) 14:54:33ID:???238nobodyさん
2006/04/03(月) 15:35:04ID:???239nobodyさん
2006/04/03(月) 23:39:48ID:??? PHPでそんなことするくらいなら、素直にJava使うわ。
240nobodyさん
2006/04/03(月) 23:50:13ID:??? 引数に型書くだけの話やんけ
241nobodyさん
2006/04/04(火) 03:55:07ID:B/b940FU 普通のclassと、
abstractなclass,
interfaceは、
クラス名から変えた方がいいんかな?
どうやってる?
abstractなclass,
interfaceは、
クラス名から変えた方がいいんかな?
どうやってる?
242nobodyさん
2006/04/04(火) 15:51:08ID:??? >>241
俺はabstractもinterfaceも普通の名前にしてる。
abstractやinterfaceをある特定クラスの仕様だけ抽象したことを表現したい場合に限り「Abstract〜」とか「〜Interface」にするかも。
例外だったら「〜Exception」てつけるけど。
俺はabstractもinterfaceも普通の名前にしてる。
abstractやinterfaceをある特定クラスの仕様だけ抽象したことを表現したい場合に限り「Abstract〜」とか「〜Interface」にするかも。
例外だったら「〜Exception」てつけるけど。
243nobodyさん
2006/04/04(火) 23:58:21ID:??? >>241-242
というか、C#やC++みたいに継承も実装もおなじ::をつかっているわけではなく
PHPはjavaのようにちゃんと継承はextends、インターフェース実装はimplements
を使うように指定されているから
名前を見ただけでインターフェースかクラスかわかるようにまでしなくてもええと思う。
IDE使えば名前指定しなくてもさらに一目でわかるし。PHPのIDEはよくわかんないけど
というか、C#やC++みたいに継承も実装もおなじ::をつかっているわけではなく
PHPはjavaのようにちゃんと継承はextends、インターフェース実装はimplements
を使うように指定されているから
名前を見ただけでインターフェースかクラスかわかるようにまでしなくてもええと思う。
IDE使えば名前指定しなくてもさらに一目でわかるし。PHPのIDEはよくわかんないけど
245nobodyさん
2006/04/14(金) 07:15:35ID:??? 質問です。
ビジネスロジックとドメインロジックとアプリケーションロジックは、プレゼンテーションロジックと対比的な位置づけですが、基本的に同じものですか?
ビジネスロジックとドメインロジックとアプリケーションロジックは、プレゼンテーションロジックと対比的な位置づけですが、基本的に同じものですか?
246nobodyさん
2006/04/14(金) 10:33:43ID:??? >>245
使用する分析・設計手法によって、使われる用語とその定義は違ってきます。
こういうインフォーマルな場では、それぞれが別の立場・定義で勝手に用語を使う
ことが多く、基本的な認識がすれ違ったまま不毛なレスが飛び交うのが常です。
まずは専門書で系統立った知識を得てから、自分なりの経験と知見を積んでいけば
その類のどーでもいい疑問は解決すると思われます。
使用する分析・設計手法によって、使われる用語とその定義は違ってきます。
こういうインフォーマルな場では、それぞれが別の立場・定義で勝手に用語を使う
ことが多く、基本的な認識がすれ違ったまま不毛なレスが飛び交うのが常です。
まずは専門書で系統立った知識を得てから、自分なりの経験と知見を積んでいけば
その類のどーでもいい疑問は解決すると思われます。
247nobodyさん
2006/04/22(土) 05:13:55ID:cnsSSisF プロパティをtrue/falseにするメソッド名ってそれぞれどんな命名にする?
249nobodyさん
2006/05/28(日) 01:10:04ID:??? >>247
どんなクラスのプロパティを作るかがわかれば
自ずとそれに見合った名前がわかると思うんだが。
どうしても名前がわからないときは>>248のようになるが。
そのプロパティがオセロの駒であれば、
setWhite(), setBlack() みたいな名前にするだろうし。
もしくはset(Color.WHITE). set(Color.BLACK)など。
表、裏を表すなら setHeads(), setTails()など
0か1なら setZero(), setOne()または>>248のように。
あと、メソッドを複数にする必要も、メソッドに引数を
割り当てる必要もないケースであるケースもありうる。
trueだったらfalse, falseだったtrueに反転するだけのメソッド
public void reverse(){
this.flagment = !this.flagment;
}
を定義するだけのものとか。
どんなクラスのプロパティを作るかがわかれば
自ずとそれに見合った名前がわかると思うんだが。
どうしても名前がわからないときは>>248のようになるが。
そのプロパティがオセロの駒であれば、
setWhite(), setBlack() みたいな名前にするだろうし。
もしくはset(Color.WHITE). set(Color.BLACK)など。
表、裏を表すなら setHeads(), setTails()など
0か1なら setZero(), setOne()または>>248のように。
あと、メソッドを複数にする必要も、メソッドに引数を
割り当てる必要もないケースであるケースもありうる。
trueだったらfalse, falseだったtrueに反転するだけのメソッド
public void reverse(){
this.flagment = !this.flagment;
}
を定義するだけのものとか。
250nobodyさん
2006/05/28(日) 09:18:03ID:??? 反転ならtoggleを使いたくなる
251nobodyさん
2006/11/04(土) 00:59:33ID:1MW2WScy スレを読まずに書くけど。
俺オブジェクト指向ってよくわかんないのね。で、
PHPでさ、テーブルごとにクラス作ってその中で
SQL発行してるソース見て思ったんだけど。こういう
のってテーブルのJOINはどう扱ってんの?
俺オブジェクト指向ってよくわかんないのね。で、
PHPでさ、テーブルごとにクラス作ってその中で
SQL発行してるソース見て思ったんだけど。こういう
のってテーブルのJOINはどう扱ってんの?
252nobodyさん
2006/11/04(土) 05:52:13ID:??? だからそれはテーブルじゃなくてデータオブジェクトです
253nobodyさん
2006/11/04(土) 15:27:28ID:??? 良スレ発見
254nobodyさん
2006/11/04(土) 17:39:13ID:???255nobodyさん
2006/11/21(火) 13:27:36ID:??? OOPを0から学ぶとすると、やはりJavaが最適なのでしょうか?
Railsで有名になったRubyでもよさそうですが、
どれを勉強しようか悩みます。
どちらも実行環境を整えるのが自分にとって一苦労な気がするので、
今まで環境が作りやすいPHPに逃げていましたが、
一向にOOPの概念がわからずじまいで、
本格的にJavaかRubyを入れてやってみようと考えています。
Railsで有名になったRubyでもよさそうですが、
どれを勉強しようか悩みます。
どちらも実行環境を整えるのが自分にとって一苦労な気がするので、
今まで環境が作りやすいPHPに逃げていましたが、
一向にOOPの概念がわからずじまいで、
本格的にJavaかRubyを入れてやってみようと考えています。
256nobodyさん
2006/11/21(火) 14:58:55ID:??? >>255
つ ttp://smalltalk.cincom.jp/scripts/smalltalk.dll/tutorials/index.ssp
つ ttp://smalltalk.cincom.jp/scripts/smalltalk.dll/tutorials/index.ssp
257nobodyさん
2006/11/23(木) 02:32:55ID:??? オブジェクト指向プログラミングの学習が目的なら、ウェブアプリやっても無駄だと思うよ。GUIのあるデスクトップアプリ作った方がいい。
258nobodyさん
2006/11/23(木) 10:48:14ID:??? > オブジェクト指向プログラミングの学習が目的なら、ウェブアプリやっても無駄だと思うよ。GUIのあるデスクトップアプリ作った方がいい。
はいはいわろすわろす。
はいはいわろすわろす。
レスを投稿する
ニュース
- イチロー氏、野球と比べてサッカーが「うらやましい」と語る 「チームのためにという感じが」「野球は個人で成績を出さないとボロカス」 [冬月記者★]
- 【サッカー】ブラジル戦、NHKは地上波なし 本田圭佑はBSで解説… 悲鳴続出「マジかよ」 地上波はフジテレビが生中継、解説は小野伸二 [冬月記者★]
- 【W杯】韓国が大窮地 悪夢のシナリオ止まらず 決勝T進出順位ボーダーの8位に転落 セネガル、イランに抜かれる ★5 [尺アジ★]
- 【自維】鮭おにぎり198円に絶望、コンビニすら遠い存在に…「生き延びられない」物価高で広がる生活苦★6 [ひぃぃ★]
- 【サッカー】W杯の「日本VSブラジル」を他で例えると…Xで問いかけ話題「湘北vs山王」「明徳義塾vs大阪桐蔭」「ドトウvsオペラオー」★2 [o(^・-・^)o★]
- 【サッカー】日本代表、ブラジル戦でアウェーユニホーム着用へ… FIFAが公式発表 爆売れの白デザイン、W杯で初お披露目! [冬月記者★]
- 安倍晋三「らめぇ!お尻がオマンコになっちゃう…!❤」 [279951338]
- 石破がアメリカに投資した80兆円って返ってくるの? [126644339]
- お前らチンポ出したか?
- 経団連「年内には訪中して習主席と面会したい😢レアアースもタングステンももう限界😢」 ★2 [904151406]
- 【高市悲報】今国会の全法案が廃案へ。。。飲みィのヤリィのしてきた結果がこれなのか・・・ [252835186]
- 【画像】台湾の安倍晋三記念公園wwwwwwwww [834922174]