Webでオブジェクト指向プログラミング (442レス)
1-

200
(1): 2006/03/32(土)21:52 ID:??? AAS
>>171
PHP5はどうみてもJavaのパクリとしか
思えないほど十分にオブジェクト指向できるような
言語となった。問題なのは上でも述べているとおり
名前空間と型指定の曖昧さ、ほかに戻り値の型を指定できないことだね。
201
(1): 2006/03/32(土)21:57 ID:??? AAS
>>199
PHP6もgoto付けるとか言ってないで
そのへん整備すりゃいいのにな
202: 2006/03/32(土)21:59 ID:??? AAS
>>174-175
そんなに汚くないコードだけど
ちょっと抵抗があるソースコードだな。

クラス名が全部小文字で
名前空間の替わりの役割を果たしているわけでもないのに
区切り文字に_(アンダースコア)つかうという
表記を未だに使っているとは・・・・。
やっまりキャメルケース(CamelCase)がわかりやすいと思うのだが。
それから一ファイルにつき一クラスにしておくのがベスト。
一つのファイルに複数のクラスを入れておくことはお勧めしない。
ファイル名とクラス名も一致させておく。名前空間が使えないので
そこだけ例外的にクラスだけ名に_(アンダースコア)を使う。
詳しくはPEARライブラリのソースコードを見てみてくれ。

それから文字コードがEUCだとは。
Unicode(UTF-8)で統一してくれれば
DBとのやりとりも楽なのだが。
203: 2006/03/32(土)22:01 ID:??? AAS
>>188
悪いがあなたが書いたソースコードが実用的な例だとは
とても思えない・・・・。
あのコードがPHPで有ろうとJavaに置き換えようと実用的になるとは
とても思えない。
204: 2006/03/32(土)22:02 ID:??? AAS
>>190
オブ脳
オブジェクト脳のつくりかた

で良いんでないかな?
205
(1): 2006/03/32(土)22:05 ID:??? AAS
>>198
PHPやJavaではextendsで継承しているともいうし拡張するともいう。
しかしクラスそのものを拡張しているだけであって
それによってそれだけで簡単にソフトウェアの拡張性が高まるとは限らない。
という落とし穴に気をつけないといけない。
その辺りを素早く理解するにはデザインパターンを学ぶことをお勧めする。

この本は初心者には非常にわかりやすいので
かなりお勧め。

増補改訂版Java言語で学ぶデザインパターン入門
外部リンク:www.hyuki.com
206: 2006/03/32(土)22:06 ID:??? AAS
>>201
gotoか。Javaみたいに例外処理限定や
ラベル付きbreak, continue文だけにgoto同様の機能を
限定的に持たせるだけにしてくれればいいのだが・・・・。

C#みたいにJavaのラベル付きbreakやcontinueをgotoキーワードで
実装すると言うだけのレベルだろうか?
207: 2006/03/32(土)22:20 ID:??? AAS
188はTemplateMethodの実例を見せたかったんだろ
俺は悪いコードだとは思わないが
208: 2006/03/32(土)22:23 ID:??? AAS
>>205
結城本はガチだな
ただOOPはじめたばかりの人がいきなり分かるほど
簡単だとも思わないが…
209: 2006/03/32(土)22:39 ID:??? AAS
何でいまどきgotoなんだろ。
俺的には無限再帰を可能にしてwhileとforみたいなダサいもんも排除した
関数言語にして欲しいと前から思っているんだけどそんな人いませんか。
210: 2006/03/32(土)23:12 ID:??? AAS
Gauche とか使えば?
211
(1): 2006/03/32(土)23:13 ID:??? AAS
PHPで継承はあんまり必要ないな。
使い道がないから。
ウェブでオブジェクト指向するなら、JavaScriptが一番使いどころが多い。
212
(1): 2006/03/32(土)23:16 ID:??? AAS
>>193
そりゃあれば使うよ
ないものねだりしてもしゃーないでしょってこと
213
(1): 2006/03/32(土)23:39 ID:??? AAS
finalとabstractとinterfaceが
とりあえずどんなものかは
わかったけど実際にどうやって
それを有効利用できればいいか
わからない香具師に結城本はおすすめだと思う。
214: 2006/03/32(土)23:40 ID:??? AAS
>>211
> ウェブでオブジェクト指向するなら、JavaScriptが一番使いどころが多い。

まてまてw それはJavaの間違いではw
215
(1): 2006/03/32(土)23:40 ID:??? AAS
>>212
privateの利点が解らない香具師はあっても使わない。
216: 2006/03/32(土)23:56 ID:??? AAS
デフォルトがprivateだったらすげー便利だったのになぁ。
217: 2006/04/02(日)00:13 ID:??? AAS
Javaだったらデフォルトでpackage privateになるのにな。
publicと明示的につけないとパッケージ外部からアクセスできなくなる
ってことが名前空間がないPHPではできないから
デザインパターンの実装も中途半端になる。
218: 2006/04/02(日)01:06 ID:??? AAS
>>215
そんなやつの話を持ち出されても知らない
ダメコーダに強制できないとかいう話ならご愁傷さま
としか言いようがないですな
219: 2006/04/02(日)01:15 ID:??? AAS
>>213
俺も最初そのへん「これ必要か?」と思ったな
他の人(近未来の自分含む)に対しての「使われ方の説明」を
ソースの中に機能的として組み込むものだとわかって
得心した。
220
(2): 2006/04/02(日)01:57 ID:??? AAS
PHP6のgotoは、gotoというキーワードが実装される訳ではなくて、

for () {
if () {
break foo;
}
print "bar\n";
foo:
print "baz\n";
}

こんな感じに書けるようになるもの。
221: 2006/04/02(日)02:36 ID:??? AAS
>>220
これならあってもいいかも。
222
(1): 2006/04/02(日)07:04 ID:??? AAS
>>199,200
型安全性ならis_arrayとかis_stringとかinstanceofでチェックすればいいだけじゃないの?
223: 2006/04/02(日)07:17 ID:??? AAS
それはそうだが
何が求められているのかを知るために
中身まで見ないといけないのはあまりよろしくないだろう。
224: 2006/04/02(日)07:50 ID:??? AAS
つ @param @return
225
(1): 2006/04/02(日)09:57 ID:??? AAS
動的型付け言語であるPHPで、型を指定したいってのがそもそも可笑しな話なんだよな。
それでもタイプヒンティングみたいにオブジェクトの型を動的にチェックしてくれるようにする構文はいいアイデアだと思った。
Javaでいう変数の静的な型指定(つーかC/C++からだけど)と構文を似せたってのも良い。
JavaScript2.0なんかもそういう方向に行ってるね。

>>199
> integer型やstring型などをメソッド引数に指定できないのが

たぶんだけど、統一性の問題があるからだと思う。
例えば引数にintを指定したメソッドがあったとして、呼び出すときにstringを渡したからってエラーにすべきではないでしょ。
その辺の仕様がうまくいかないんじゃないかな。
226: 2006/04/02(日)10:18 ID:??? AAS
>>220
普通にJavaのパクリじゃないか。
Java自体もCあたりからパクッタ者だが
227
(3): 2006/04/02(日)10:24 ID:??? AAS
>>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との違いの
に気づかない。
そして路頭に迷ったあげくにデバッグに無駄に時間をかけることになって
開発速度が衰える。
228
(1): 2006/04/02(日)10:28 ID:??? AAS
>>225
Javaみたいにラッパークラスを作ってしまえばいいかもしれんな。

final class Integer extends Number {
 $private $value;
 __construct($value){
  if($valueがint型であれば){
   $this->value = $value;
  } else {
   throw new NumberFormatException("整数以外入力するんじゃねえぞこのバカ野郎氏ね!");
  }
 }
}
229: 2006/04/02(日)10:29 ID:??? AAS
privateに$が余分についていた。

あとは適度に必要な変換メソッドを追加しておくべし。
intValue()とか
1-
あと 213 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.011s