Webでオブジェクト指向プログラミング
1 :nobodyさん :2005/12/02(金) 11:18:17 ID:lnZM9OlM.net サーバーサイドWebプログラミングのOOスレです。 ・OOP、MVC、デザパタなどのコンセプト的な話題 ・OOにまつわる言語比較(言語批判はその言語で開発してる人に失礼にあたることが多いのでなるべく禁止でお願いします) ・保守、再利用、生産性、開発環境などの実践的な話題 ・Webサーバ、DBなどの外部との親和性に関する問題 ・学習、教育などの方法論 などなど。 前スレ PHPでオブジェクト指向プログラミング http://pc8.2ch.net/test/read.cgi/php/1113724557/
2 :nobodyさん :2005/12/02(金) 11:41:45 ID:???.net 乙カレーション。 ついでにズザー
3 :nobodyさん :2005/12/02(金) 11:54:27 ID:???.net 見かけた関連スレ(内容未確認) PHPとJAVAさぶれっと http://pc8.2ch.net/test/read.cgi/php/987850713/ オブジェクト指向perl http://pc8.2ch.net/test/read.cgi/php/1022604696/ ウェブプログラミングで使えるデザインパターン http://pc8.2ch.net/test/read.cgi/php/1069451782/ 【PHP】フレームワークについて語るスレ【総合】 http://pc8.2ch.net/test/read.cgi/php/1123608068/ CGI VS PHP VS JAVA http://pc8.2ch.net/test/read.cgi/php/1006006800/ Python vs Ruby vs PHP vs Perl http://pc8.2ch.net/test/read.cgi/php/1124710112/ WEBアプリにもっとも適した言語は何か? http://pc8.2ch.net/test/read.cgi/php/1130115690/ 良質なサイトや書籍など、情報ある人プリーズ
4 :nobodyさん :2005/12/02(金) 11:57:58 ID:???.net >>3 ゴミ情報邪魔
5 :nobodyさん :2005/12/02(金) 11:59:46 ID:???.net >>4 うるさいわね
6 :nobodyさん :2005/12/02(金) 12:05:33 ID:???.net MVC はともかく、デザパタとか入るとメタ議論好きが入ってきそうだなぁ。 適宜ム板、マ板に誘導していかないと。
7 :nobodyさん :2005/12/02(金) 12:08:49 ID:???.net そうだね。 とりあえず議論がWebプログラミングに関係なくなった時点でスレ違いってことで。
8 :nobodyさん :2005/12/02(金) 16:18:39 ID:???.net 前スレのスレタイと比較すると、ぱっとみJAVA関連のスレと 思ってしまう俺は古い人間なのか?
9 :nobodyさん :2005/12/02(金) 16:23:36 ID:???.net ここはSmallTalkスレですよ?
10 :nobodyさん :2005/12/02(金) 16:36:26 ID:???.net webページレベルではオブジェクト思考でなくてもまぁ、苦労はしないけど、webシステムになると、データやモジュールをクラス管理しないとやってられない。この板でスレ違いって言う人間こそスレ違い。
11 :nobodyさん :2005/12/02(金) 16:52:18 ID:???.net 素人趣味プログラマですが、 綺麗にOOが書けません>< プロの方のソースを拝見させてもらうと感動します><
12 :nobodyさん :2005/12/02(金) 17:33:27 ID:???.net >>10 それは別に Web に限らないからスレ違いなのでは? むしろ webprog でやらない方が有意義になると思われ >>11 ごめん、それはどれのこと? 公開されてるやつで、プロが書いたかどうか分かるものってあるの?
13 :nobodyさん :2005/12/02(金) 17:40:43 ID:???.net >>11 Apahce JakartaプロジェクトやStrutsプロジェクトなど、 オープンソースソフトウェアのソースコードは公開されているから参考にしてみれば?
14 :nobodyさん :2005/12/02(金) 18:38:14 ID:???.net >>1 乙。 このスレ、荒れるだろうねえ。
15 :nobodyさん :2005/12/02(金) 18:48:51 ID:???.net >>14 俺様が荒れないように見張っているので大丈夫だ。安心してくれ。
16 :nobodyさん :2005/12/02(金) 20:04:21 ID:4lCzPlwh.net >>14 議論で荒れるならいいけどね。 アホとかバカとか低脳な荒れ方はしないといいんだけど。
17 :nobodyさん :2005/12/02(金) 21:25:10 ID:???.net JavaScriptでOOって無理があるだろ 派生クラスだとprivateプロパティとして使いたい部分が共有されてしまう。 全部publicならできるのか?
18 :nobodyさん :2005/12/03(土) 00:11:04 ID:???.net <?php class State{ var $user; var $pass; var $host; var $database; function State($user,$pass,$host,$database){ $this->user = $user; $this->pass = $pass; $this->host = $host; $this->database = $database; } function GetCon(){ $con = mysql_connect($this->host,$this->user,$this->pass); if($con && mysql_select_db($this->database,$con)) return $con; else return NULL; } }
19 :nobodyさん :2005/12/03(土) 00:12:07 ID:???.net class TEST{ var $con; var $sql; var $data; function TEST($user,$pass,$host,$database){ $d = new State($user,$pass,$host,$database); $this->con = $d->GetCon(); } function MakeSQL(){ $this->sql = "SELECT user,host FROM user "; } function RunSQL(){ $rst = mysql_query($this->sql,$this->con); if($rst) for($i=0; $col=mysql_fetch_array($rst) ; $i++) $this->data[$i] = $col; else return NULL; return 1; } }
20 :nobodyさん :2005/12/03(土) 00:12:47 ID:???.net class MAIN{ function MAIN($user,$pass,$host,$database){ $obj = new TEST($user,$pass,$host,$database); if($obj->con){ $obj->MakeSQL(); $obj->RunSQL(); $this->ShowData($obj); } else printf("error"); } function ShowData($obj){ for($i=0;$i<sizeof($obj->data);$i++) printf("%s,%s<BR>",$obj->data[$i]["user"],$obj->data[$i]["host"]); } } ?>
21 :nobodyさん :2005/12/03(土) 00:14:16 ID:???.net <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> </HEAD> <BODY> <?php $d = new MAIN(MySQLユーザー名,MySQLパスワード,"localhost","mysql"); ?> </BODY> </HTML> >11 PHPでやるとこんな感じ? ひねりやセキュリティーは無視したけど 概念だけならこんな感じで十分だと思う ま、アクセス権の関係で動かないかもね
22 :nobodyさん :2005/12/03(土) 00:24:54 ID:???.net static $con; if ( $con === null ) { とか、やりたくならんか?
23 :nobodyさん :2005/12/03(土) 02:10:17 ID:???.net >>17 なぜJavaScript? >>22 それだとインスタンスごとにコネクションを保持っていうスタンスから外れるね。
24 :nobodyさん :2005/12/03(土) 11:33:28 ID:???.net どっちかっていうと static $instance = false; if ($instance === false) { $inctance = new . . . じゃないのphp4ならだけど
25 :nobodyさん :2005/12/03(土) 11:40:42 ID:???.net >>24 それってもしかしてシングルトンの話じゃ・・・?
26 :nobodyさん :2005/12/03(土) 11:47:30 ID:???.net VOがDB持ってるのって概念的に変じゃね?
27 :nobodyさん :2005/12/03(土) 11:52:44 ID:???.net >>17 普通にプロトタイプOOできるよ アクセス制限したければprototype.js使うとか
28 :nobodyさん :2005/12/03(土) 13:42:25 ID:???.net JSって名前の隠蔽が関数かブロックのローカルスコープでしかできないからOO的な隠蔽は無理だよね。 あの言語は興味としては面白いけど、OOを生かした開発向けじゃないと思うけど。 つーかサーバーサイドでJSやってる奴いるの?
29 :nobodyさん :2005/12/03(土) 16:05:11 ID:???.net シラネ。 隠蔽やポリモーフィズムは他言語と変わらん。
30 :nobodyさん :2005/12/04(日) 02:35:54 ID:???.net 出た!ポリモーフィズム!
31 :nobodyさん :2005/12/04(日) 14:51:34 ID:???.net >>30 じゃあ何て言うんだよこの馬鹿が。
32 :nobodyさん :2005/12/04(日) 15:22:04 ID:???.net >>30-31 他所へ行って構わなくてよ。
33 :nobodyさん :2005/12/05(月) 10:20:07 ID:???.net このスレ、ネタがないね。 とりあえず思ったことを書いてみるテスト。 MVCのM(MVCフレームワークに寄りかからない場合でもビジネスロジックをつっこむ部分)の設計について。 Webの場合は細かいエンティティをModelにしてしまうとかえって見通しが悪くなるから、割と大雑把なくくりでModelにした方が設計しやすい+実装しやすい+パフォーマンス的にも良いんだよね。 でもそうすると、関数でもいいものがメソッドになっただけで、ベタ書きロジックのラッパに過ぎないような実質シングルトンがいくつもできたりして。 それってオブジェクト指向という考えから反対方向に行ってしまってる。 形だけがオブジェクト指向風になってるって感じ。 もうちょっと勉強してくるわ。
34 :nobodyさん :2005/12/05(月) 11:12:40 ID:???.net もうちょっと具体的に頼む
35 :nobodyさん :2005/12/05(月) 18:30:47 ID:???.net 単に設計がいまいちなだけじゃね? ちゃんと考えて組めば、Mだけ客によって取り替えてウマーに出来ると思う。 まあ外向けとかで見栄えも気にするならMに加えてVも弄るから、分けずにMV+Cでもいいじゃんって発想?
36 :nobodyさん :2005/12/11(日) 16:50:09 ID:TPyd81O7.net PHP5でオブジェクト指向プログラミングって、 仕事ではまだほとんどやってない?
37 :nobodyさん :2005/12/12(月) 00:20:15 ID:???.net PHP 5 がまだなのかオブジェクト指向がまだなのか どっちを聞きたいんだろ
38 :nobodyさん :2005/12/12(月) 05:07:04 ID:???.net PHP5からオブジェクト指向とったら何も残らないじゃん。
39 :nobodyさん :2005/12/12(月) 06:24:55 ID:???.net PHP5の仕様を学びながら同時にオブジェクト指向も学べるっていう 素敵本ってないですかねぇ?
40 :nobodyさん :2005/12/12(月) 07:15:15 ID:???.net >>39 OOやるならJavaのがいいと思う。 実際のところPHPだけでOO理解できた奴いるの?
41 :nobodyさん :2005/12/12(月) 08:01:46 ID:???.net まぁいいサンプルがあればいいんじゃないの? おれは知らないけど
42 :nobodyさん :2005/12/12(月) 08:25:28 ID:2/Uq4nev.net PHP5で__CLASS__ってやるとクラス名を取得できるけど、staticメソッド内で abstract class Hoge { static public function method() { echo "Fuga"; } } class Fuga extends Hoge {} Fuga::method(); これで"Fuga"って表示させる、みたいな。
43 :42 :2005/12/12(月) 08:28:10 ID:2/Uq4nev.net ごめん、日本語が中途半端だった。 × これで"Fuga"って表示させる、みたいな。 ○ これで"Fuga"って表示させるにはどうしたらいいですか?
44 :nobodyさん :2005/12/12(月) 08:33:41 ID:???.net お前が質問したいのはそういうことじゃないだろ
45 :42 :2005/12/12(月) 08:41:37 ID:???.net あ、飽くまでecho "Fuga"っていうのを使わずに__CLASS__とかgetなんちゃらname()とかそういう類で"Fuga"を取得したいという意味です。 get_class($this)のstatic版みたいなのはないですかね?
46 :nobodyさん :2005/12/12(月) 09:03:12 ID:???.net ムリ 俺もこの仕様はなんとかならんものかと思ってる 但しその例だと Fuga::method() →Fugaにない→親クラスのメソッドが呼ばれる オーバーライドされていないため実際にはHuga::method()がコール されるわけで親クラスの名前(Hoge)が表示されるのは正しい動作だと思う
47 :nobodyさん :2005/12/12(月) 09:06:42 ID:???.net Hugaって何だHogeだよHoge
48 :nobodyさん :2005/12/12(月) 09:13:38 ID:???.net staticはクラスメソッド的なニュアンスだしな 下で隠蔽しなきゃそのまま晒される
49 :42 :2005/12/12(月) 09:48:14 ID:???.net みなさんどうもです。 無理ですかねぇ。ちょっと頑張ってみたけどやっぱ無理でした。 abstract class Hoge { static public function method() { echo self::getMyName(); } abstract static protected function getMyName(); } class Fuga extends Hoge { static protected function getMyName() { return __CLASS__; } } Fuga::method(); staticメソッドってオーバーライドできないんですね・・・。
50 :nobodyさん :2005/12/12(月) 10:04:02 ID:???.net self::でサブクラスのメソッドが呼ばれるわけなかろ。
51 :nobodyさん :2005/12/12(月) 10:06:47 ID:???.net OO的には、staticメソッドは各クラスに固有のものだから オーバーライドという概念自体が存在しない
52 :nobodyさん :2005/12/12(月) 10:10:07 ID:???.net >>38 オレ自身は半信半疑だけどスピード上がってるんでしょ?
53 :42 :2005/12/12(月) 10:55:39 ID:???.net >>50 >>51 納得。そうなんですか。継承はされるのに・・・、と考えるとむつかしいですね。 まあとりあえずできました!! abstract class Hoge { static public function method() { $bt = debug_backtrace(); for ($i = 1; $i < count($bt); $i ++) if (empty($bt[$i]["type"]) or $bt[$i]["type"] != "::" or $bt[$i]["function"] != __FUNCTION__) break; echo $bt[$i - 1]["class"]; } } class Fuga extends Hoge { static public function method() { parent::method(); } } Fuga::method(); 超微妙・・・。デバッグでもなんでもないのにdebug_backtraceとか超微妙。
54 :nobodyさん :2005/12/12(月) 12:32:07 ID:???.net >>42 なんで、そういうことをしたいか?って書けば 別解がでるんじゃね?
55 :42 :2005/12/13(火) 13:04:20 ID:???.net >>54 返事が遅れて申し訳ない。・・・といってもその間にレス来てないけどw 実際にはデバッグの目的でログを取るのに、staticメソッド内で呼び出したサブクラス名を__CLASS__みたいに手軽に取得できないかを探し始めたのがきっかけでした。 その意味ではdebug_backtraceを発見したのでそれで問題解決なんだけど、元の質問をしたときには確か似たような問題を見た記憶があって、もうちょっと一般的な問題のように扱えるかも・・・とでしゃばってみた限りですorz まあ時間的に少し余裕があったし、今後似たような状況(例えば可変クラスとか)も起こらないとは言えないってこともあって、色々考案してみました。 以下は一般的にはこうするのが(ベストとは言えないまでも)一番マシじゃないかなぁ〜という、ちょっとした提案 abstract class Hoge { static public function method($name = __CLASS__) { echo $name; } } class Fuga extends Hoge { static public function method($name = __CLASS__) { parent::method($name); } } Hoge::method(); Fuga::method(); サブクラスにメソッドの実装を強制できない点が痛いけど>>53 よりマシかなって程度で。 まだマニュアルを引きつつ勉強中な身なんで、つっこみとかあったらよろしくです。
56 :nobodyさん :2005/12/13(火) 23:32:56 ID:???.net 強制したきゃしろよ
57 :nobodyさん :2005/12/16(金) 17:53:18 ID:CZKjM08D.net Movable Typeの11行目の、 use MT::Bootstrap App => 'MT::App::CMS'; って、どういう意味ですか? 分かるエロくない人、どうかお教えください。
58 :nobodyさん :2005/12/16(金) 17:54:24 ID:CZKjM08D.net すみません、MT 3.2(日本語版)のmt.cgiの話です。 あと、勝手にMovable Typeがオブジェクト指向と判断してます。
59 :nobodyさん :2005/12/17(土) 03:49:48 ID:???.net >>57 エロいので教えない
60 :nobodyさん :2005/12/21(水) 21:11:28 ID:???.net Javaライクな(クラスの)パッケージ管理はPHPではでけへんの? __autoload() を使おうとするとどうしても一つのフォルダに クラス定義ファイルを全部ぶち込むことになるんだけど
61 :nobodyさん :2005/12/21(水) 22:45:40 ID:???.net いけたっ うんこぷー
62 :nobodyさん :2005/12/22(木) 05:39:54 ID:???.net >>60 __autoloadの中を頑張ってつくればある意味Javaのパッケージより柔軟に色々できると思う。 今即興で考えてみたけどこんなのどう? function __autoload($class, $newdir = "") { static $dirs = array(); if ($newdir) $dirs[] = $newdir; if ($class) foreach ($dirs as $dir) { $file = "$dir/$class.class.php"; if (file_exists($file)) { require_once $file; return; } } } function add_import_dir($dir) { __autoload("", $dir); } なんか書いてて虚しくなってきたよ・・・
63 :nobodyさん :2005/12/22(木) 15:26:55 ID:ORKD8JMR.net 自クラス内のプロパティーにも セッターゲッター介してアクセスする? あるいは自分の中のことだから 直アクセスする? Dotch?
64 :nobodyさん :2005/12/22(木) 16:04:35 ID:???.net >>63 自分のクラス内なんだから直アクセスでしょ。 クラス内でもセッタゲッタしたいってことは、そのプロパティによっぽど整合性が必要なんだろうから、場合によっては必要な部分だけabstractなクラスとして抽出して問題のプロパティをprivateにする。 ってそれWebプログラミングとどういう関係があるの?
65 :nobodyさん :2005/12/22(木) 16:56:29 ID:???.net 宗教論争させたいだけでしょ
66 :nobodyさん :2005/12/22(木) 17:02:57 ID:???.net なんか仕込みがあるならともかく 別段論争になるようなことじゃないと思うけど
67 :nobodyさん :2005/12/22(木) 17:04:20 ID:???.net >>>64 やっぱりそっか。 さんくすこ。 >>65 そんなわけナス
68 :nobodyさん :2005/12/22(木) 18:58:37 ID:???.net 大域変数にするか問題と同じだな。
69 :nobodyさん :2005/12/22(木) 19:19:44 ID:???.net >>62 手間をかけさせて悪かった やってみる
70 :nobodyさん :2005/12/22(木) 22:31:30 ID:???.net Ruby on Railsとかいうのがお目見えしたことだし スクリプト系はMVC的に糞ってなことにはもうならないな
71 :nobodyさん :2005/12/22(木) 23:00:25 ID:???.net パッシブは別に糞じゃないだろ
72 :nobodyさん :2005/12/23(金) 03:31:20 ID:???.net >>70 RoRはぶっちゃけあんまり流行る気しないんだが。 あれってMVC?
73 :nobodyさん :2005/12/23(金) 04:52:29 ID:???.net PHPじゃそうかもな。rubyやperlはもうコレで決まりだと思う。
74 :nobodyさん :2005/12/23(金) 05:24:31 ID:???.net いやRuby自体がWebプログラミング方面でそれほど伸びないと思う。 Rubyの方がPHPより先に世の中に知れ渡ってたらRubyの圧勝だったかもしれないが、今更PHPと比較して生産性高いとも思えないし(飽くまでWeb方面では)。
75 :nobodyさん :2005/12/23(金) 06:47:01 ID:???.net そこで、pythonですよ!
76 :nobodyさん :2005/12/23(金) 10:17:08 ID:???.net Π損はメタクラス以外見るべきところが無い希ガス
77 :nobodyさん :2005/12/23(金) 12:51:21 ID:???.net rubyは構文が特殊すぎるし、まんまオブジェクト指向だから、phpのような流行り方をすることはそもそもありえなかったと思う。 unixハッカーな人たちにはperlやrubyが今後も支持されていくでしょう。phpは違う層の人たち向け。
78 :nobodyさん :2005/12/23(金) 13:53:17 ID:???.net ちょwww unixハッカーってなんだwww そりゃC使いry
79 :nobodyさん :2005/12/23(金) 14:07:50 ID:???.net cは別物。phpはもっと別物だけど。
80 :nobodyさん :2005/12/23(金) 14:15:32 ID:???.net WebでOOするときってどんなクラスつくるの? MVC以外で。
81 :nobodyさん :2005/12/23(金) 18:01:01 ID:???.net オブジェクト指向言語は、OOがphp使うような素人の馬鹿避けになってる所は有るね。 phpの生産性って、素人を安い人件費で大量に使えるってだけだからねえ。 RoRは馬鹿には理解出来ないから、流行る事は無いだろう。流行るためには馬鹿でも理解出来る事が必要だし。
82 :nobodyさん :2005/12/23(金) 18:18:43 ID:???.net RoRのレベルが高いと思ってるおばかさんが一人いるぞw Lisp信者にもその考えの奴多いんだよなぁ。
83 :nobodyさん :2005/12/24(土) 02:04:43 ID:???.net ざっくり言ってphpユーザはレベルが低い
84 :nobodyさん :2005/12/24(土) 13:15:52 ID:???.net ユーザのレベルなんて人それぞれだし、スレ違いでは?
85 :nobodyさん :2005/12/24(土) 20:22:24 ID:???.net phpしか書けない香具師に、LispやRoRは無理。
86 :nobodyさん :2005/12/24(土) 21:25:57 ID:???.net この言いっぱなしの駄レス連発してるやつって一人でやってんの?
87 :nobodyさん :2005/12/25(日) 02:32:29 ID:???.net はいはいわろすわろす って言ってほしいんだろきっと。 LispはまだしもRoRを難しいとか言う奴初めて見た。 PHPしかできない奴のレベルが低いってのはまあ当たり前の話だが。
88 :nobodyさん :2005/12/27(火) 16:43:08 ID:Zix1qzzJ.net >>57-58 すみません、エロくても大丈夫になりましたのでどなたか教えてください。。。 分かった事 MT/Bootstrap.pmが関係?
89 :nobodyさん :2005/12/27(火) 17:59:00 ID:Zix1qzzJ.net あ、これはただ単にハッシュを渡しているだけなのですか?^^;
90 :nobodyさん :2005/12/27(火) 22:04:42 ID:???.net スレ違いだって
91 :nobodyさん :2005/12/28(水) 02:23:24 ID:FTSvjaED.net >>90 まあアレだ、Ruby厨には聞いていないから帰れということらしい。 >>57-58 Bootstrap.pmでimport関数に%param{App}を渡していると思うのだがその辺調べてみてくれ。
92 :nobodyさん :2005/12/28(水) 09:12:28 ID:???.net ここで解説はイラネ。 配布スクリプトの読めない部分を解説しちゃる ttp://pc8.2ch.net/test/read.cgi/php/1094842959/l50
93 :nobodyさん :2006/01/01(日) 02:30:26 ID:???.net >>85 なんというか、馬鹿丸出しな発言だな。 そもそもRoRが使えれば、Ruby使えるわけだから、 PHPしか使えないなんてことは成り立たないわけで。 逆にRoRしか使えないやつはPHP使えないしな。
94 :nobodyさん :2006/01/01(日) 13:35:44 ID:???.net でもPHP使いよりRuby使いの方が仕事出来るのが事実。
95 :nobodyさん :2006/01/01(日) 14:05:33 ID:???.net >>94 まじ? 俺、今、Rubyを勉強しているんだけど、プロになれる?
96 :nobodyさん :2006/01/01(日) 16:16:39 ID:???.net >>94 はじめからそう言えばいいのに、頭が悪いから>>85 みたいな言い方になってしまったんだね。
97 :nobodyさん :2006/01/01(日) 16:18:04 ID:???.net 「○○使い」なんて言語限定してる時点でそいつは使えない
98 :nobodyさん :2006/01/05(木) 18:20:00 ID:???.net RubyでWeb開発とか趣味以外でやってる人いるの?
99 :nobodyさん :2006/01/05(木) 18:36:44 ID:???.net >>98 とりあえず、仕事で使われてるのをみたことがないな あと、Ruby関連は書籍がちゃんとしたのが少なくない? ってかすれ違いなんで、こういうのはマ板で
100 :100 :2006/01/07(土) 17:47:26 ID:???.net 誰も100をとってくれない件について
101 :nobodyさん :2006/01/07(土) 18:20:48 ID:???.net 0x64なんてキリ番じゃない。
102 :nobodyさん :2006/01/08(日) 16:02:42 ID:???.net 誤:使えない 正:使わない
103 :nobodyさん :2006/01/19(木) 01:21:15 ID:Mz+RYmqL.net 試しにあげてみる
104 :nobodyさん :2006/01/21(土) 03:53:09 ID:???.net >>99 影舞
105 :nobodyさん :2006/01/27(金) 12:31:26 ID:61WrCUJb.net PHPのthrowって例外オブジェクトがどこまでも飛んでいくから便利だね。 でもスパゲティの原因になったりしない? いったいいつcatchされるんだろう・・・?みたいな。 もしくは、ここのcatchは何のためにあるんだろう・・・?みたいな。 Javaの場合throws書かないといけないけど。 そのまま便利さを享受すべきか、全てのメソッドにthrows相当のものをコメントとして加えておくべきか、ご意見いただけると幸いですw
106 :nobodyさん :2006/01/28(土) 18:58:27 ID:???.net 俺の場合は、catchした上で処理を継続できるような場合はコメントに @throws で記述しておく。 処理を続行できないような致命的な例外の類は一切キャッチしない or トップレベルですべての Exception を catch するようにしてる。
107 :nobodyさん :2006/01/29(日) 22:11:15 ID:???.net 使い捨てなら気にせずthrowしまくるけど、ある程度規模が大きくなってきたら問答無用で@throws書いたほうがいい。
108 :nobodyさん :2006/01/30(月) 23:29:09 ID:l8Eu1UQ7.net 自作のphpフレームワークを公開して見ました。 一応MVCモデルとオブジェクト指向プログラミングに基づいて作成しています。 もしよろしかったらご覧いただければ幸いです。 http://pharon.lolipop.jp/
109 :nobodyさん :2006/01/31(火) 01:43:20 ID:???.net >>108 Webサイトが思い切りテーブルレイアウトで萎えた。 普通に見出しと本文でいいじゃん。 なんか怪しげなローマ字とか使ってるし。 詳しくは読んでないけど、まずはその素人臭さを払拭しないと 使ってみる気にもなれんね。
110 :nobodyさん :2006/01/31(火) 10:49:03 ID:???.net 整形済み文字にする必要性がわからん
111 :nobodyさん :2006/01/31(火) 11:17:28 ID:???.net あちこちにマルチし過ぎだしな。 まぁ、本人とも限らないが…。
112 :nobodyさん :2006/01/31(火) 13:18:08 ID:???.net pharonの読み方を教えてください
113 :nobodyさん :2006/01/31(火) 14:18:11 ID:???.net ファロン?
114 :nobodyさん :2006/02/02(木) 12:00:05 ID:???.net ファロン ファーロン 有名ピカソ
115 :nobodyさん :2006/02/03(金) 20:05:36 ID:3T+q60Jd.net たぶんファーロンじゃないかな?
116 :nobodyさん :2006/03/24(金) 08:23:48 ID:???.net 過疎りすぎw
117 :nobodyさん :2006/03/27(月) 23:45:30 ID:NOFET43q.net 期待age。 で、 Web サイトを PHP で組もうと思ってるんだけどオブジェクト指向でやったほうがベター? まだ覚えてないけどな 。
118 :nobodyさん :2006/03/28(火) 00:50:26 ID:???.net >>117 PHPでOOなんて無意味><
119 :nobodyさん :2006/03/28(火) 08:10:30 ID:???.net >>118 まだこんなこと言ってるやついるんだな
120 :nobodyさん :2006/03/28(火) 09:41:36 ID:64m8EIcO.net PHPっていったら、HTMLを直に操作する軽快感が一番重要でしょ。 クラスとか使いはじめると、この足取りの軽さが激減するし、だったらJAVA使ったほうが賢いのでは。 大体WEBプログラミングでオブジェクト指向を得意げに使うこと自体が、スパゲティ大好きって言ってるようなもんだな。
121 :nobodyさん :2006/03/28(火) 10:23:08 ID:???.net >>120 「だったら Java」ってやつは最初から PHP なんか使わないか、 PHP も Java も分かってないかのどっちかだな
122 :nobodyさん :2006/03/28(火) 10:51:45 ID:???.net 私も以前は PHP で OOP なんてする必要ねーよと思っていた。 特に PHP4 のクラスの実装はクソなので OOP するのも面倒だなと思っていた。 しかし、デスマってるプロジェクトに投入されて、 そのプロジェクトが index0001.php4 とか index0134.php4などと 200個くらいのファイルを羅列しているのを見たとき、 たとえ、PHP4 であろうとも OOP を導入すべきだという主張にかわったよ。 OO でなくとも、Logic と View は分けるべきだ。 できるなら、MVC でお願いします。
123 :nobodyさん :2006/03/28(火) 12:02:55 ID:???.net >>1 Javaでは当たり前なことを なぜこんなスレタイをたてるのか。 どうせならStrutsやJSF< Tapestry, Seasar2など フレームワーク関係のスレタイにしておけばよかったのに。
124 :nobodyさん :2006/03/28(火) 12:04:50 ID:???.net >>17 一応JavaScriptでprivateにできるテクニックはあるあしい。 ローカル変数を使って。Ajaxに使われている Prototypeというフレームワークもどきに使われているようだ。 かなり小汚いテクニックで読みにくいソースコードだが。
125 :nobodyさん :2006/03/28(火) 12:05:37 ID:???.net >>21 PHP4と5では違う。 publicやprivate宣言を忘れているぞ
126 :nobodyさん :2006/03/28(火) 12:07:24 ID:???.net >>122 しかし、PHPは未だに名前空間が無いから PHP5からJavaライクなオブジェクト実装が サポートされても使い勝手は相変わらず悪い。 ini_get()してからini_set()するのはもうウンザリ。 __autoloadだか忘れたがこれをうまくつかって Javaのimportそっくりなことできそうにみえるが、 それも使い勝手が悪い。
127 :nobodyさん :2006/03/28(火) 12:38:09 ID:???.net >>123 フレームワークのスレあるじゃん
128 :nobodyさん :2006/03/28(火) 12:40:59 ID:???.net >>124 なんかムリにprivateにしなくていいじゃんと思うようになるよ Perl も PHP 4 も運用でカバーしてるんだし
129 :nobodyさん :2006/03/28(火) 12:57:27 ID:???.net JSの場合はJava系みたいにインスタンス変数ごとにprivateっていう考え方よりも、Cのファイルスコープstaticみたいに、ファイルごと(モジュールごと)にローカライズ(隠蔽)するのが常套手段かな。 インスタンス変数はそもそも隠蔽する対象じゃないんだな。 2.0でclassとか拡張されてるから、また変わってくると思うけど。
130 :nobodyさん :2006/03/28(火) 13:37:18 ID:???.net >>122 MVCがいまいち理解できません。 どこがいいのか k w s k !
131 :nobodyさん :2006/03/28(火) 13:59:03 ID:???.net >>120 軽快感が重要というのは同意だけど、別にそれだけがPHPのメリットじゃないわけで。 クラスだって軽く使おうと思えば使えるし、お手軽なOOPという観点ならPHP>JAVAだと思う。 その分できないこともあるけどな。
132 :nobodyさん :2006/03/28(火) 14:02:21 ID:???.net あれー。MVCスレってなかったっけ? 寝ぼけてたか?
133 :nobodyさん :2006/03/28(火) 20:32:38 ID:???.net RubyとPHPはどっちが向いてる?
134 :nobodyさん :2006/03/28(火) 21:34:59 ID:???.net >>133 多分Ruby
135 :nobodyさん :2006/03/28(火) 21:42:58 ID:???.net PHPのような低機能な言語でさらにクラス機能まで減らすのはバカ。 そんなことしたら、バカみたいなコードしかかけなくなる。
136 :nobodyさん :2006/03/28(火) 22:02:13 ID:???.net >>135 そういうことはクラスを実際に何に使うのかあげてから言ってくれます?
137 :nobodyさん :2006/03/28(火) 22:06:27 ID:???.net >>134 ぐーぐるさん的には PHP 2,320,000,000 件 Ruby 107,000,000 件 この圧倒的な差はいったい!?
138 :nobodyさん :2006/03/28(火) 22:28:04 ID:???.net PHPは変数のスコープを分けれない。それだけでもクラスを使う理由になる。
139 :nobodyさん :2006/03/28(火) 23:02:46 ID:???.net スコープは分かれてるけど、、、 名前空間がないってことか?
140 :nobodyさん :2006/03/29(水) 02:32:56 ID:???.net 変数のスコープは分けれるけど、クラス名・関数名・定数名(クラス定数除く)のスコープが分けられないんだと思われ。
141 :nobodyさん :2006/03/29(水) 22:51:03 ID:???.net OOPの最大の利点は、再利用性が抜群に高いことだと思う。 自分はアクセスカウンターとか掲示板など、いろんな汎用スクリプトを作ってるんだけど 今後新しいスクリプトが簡単に作れるように、クラスモジュールを構築しながら作成してるから 開発効率がどんどんよくなってきている。
142 :nobodyさん :2006/03/29(水) 23:13:01 ID:???.net でも気づいたら2、3行の処理でも関数にしてる自分がいたり・・・するのは俺だけか
143 :nobodyさん :2006/03/29(水) 23:15:45 ID:???.net そもそもクラスって何書くの?
144 :nobodyさん :2006/03/30(木) 10:08:01 ID:???.net >>143 変数と関数
145 :nobodyさん :2006/03/30(木) 13:31:51 ID:???.net >>144 わかってない奴発見
146 :nobodyさん :2006/03/30(木) 14:19:46 ID:???.net >>145 正しいのを教えて。
147 :nobodyさん :2006/03/30(木) 15:06:58 ID:???.net >>144 でもあながち間違いじゃないが クラスとは 一緒に使われる情報(データ・関数)をその中にまとめ、別々に使われる情報を除外するためのもの です。
148 :nobodyさん :2006/03/30(木) 16:16:42 ID:???.net せんせい!ぜんぜんいみがわかりません><
149 :nobodyさん :2006/03/30(木) 16:29:49 ID:???.net PHP 限定で言えば global を書かずにコードを書く ためにあると思っておいて間違いではない コードにまとまりがないうちは不便だが、まとまりが ない段階でダメだと思えばいい
150 :nobodyさん :2006/03/30(木) 17:18:32 ID:???.net それだったら普通の関数でよくね?
151 :nobodyさん :2006/03/30(木) 21:38:19 ID:???.net PHPだとそうなっちゃうよな
152 :nobodyさん :2006/03/31(金) 00:12:08 ID:???.net perlみたいにパッケージがあれば関数ライブラリだけでやってけるかも知れないが、PHPにパッケージはない。 代わりにクラスを使うしかない。
153 :nobodyさん :2006/03/31(金) 00:31:04 ID:???.net >>147 むしろなぜ分類(除外)するのか、というところにOOの本質があるのでは?
154 :nobodyさん :2006/03/31(金) 05:07:58 ID:mYeRlPC0.net >>152 PHPのクラスがパッケージの代替でしかないなら、インスタンス化は無意味ってこと? $hoge = new Hoge; $hoge->kansuu(); より Hoge::kansuu(); の方が早いもんね
155 :nobodyさん :2006/03/31(金) 05:13:33 ID:???.net インスタンスにしないと継承でけんやん
156 :nobodyさん :2006/03/31(金) 05:31:31 ID:???.net 継承とかPHPで使ってるの見たことない。 グローバル変数使わないだけなら定数使うとかあるし
157 :nobodyさん :2006/03/31(金) 05:36:54 ID:???.net ばりばり使いますよ フレームワークなんて継承前提だし
158 :nobodyさん :2006/03/31(金) 08:04:27 ID:???.net インスタンスにせんでも継承はできまっせ
159 :nobodyさん :2006/03/31(金) 08:09:59 ID:???.net >>150 普通の関数でいいと思うならそれでいけばいいじゃんてことでしょ つかそういうスレつけてる人はこのスレ覗く必要全然ない
160 :nobodyさん :2006/03/31(金) 08:38:38 ID:???.net ・関数がいい人は関数でやればいい ・クラスがいい人はクラスでやればいい ↑ここまではおk。それじゃ、 ・クラスがいい人は何のためにクラス使ってるの?しかもPHPでw ←いまここ
161 :nobodyさん :2006/03/31(金) 08:56:52 ID:???.net OOP関係の本なら大概載っている 1.カプセル化 2.継承 3.ポリモフィズム の、3つが何故良いのかを説明できれば、OOPの利点が見えるんじゃないの? 詳しい人↓よろ。
162 :nobodyさん :2006/03/31(金) 08:59:41 ID:???.net いまだにクラスを何に使ってるの、なんて聞く人がいるの?
163 :nobodyさん :2006/03/31(金) 09:03:25 ID:???.net 1.カプセル化 2.継承 3.ポリモフィズム ならJavaのほうが初めからそういうふうに設計された言語だけあって有利じゃないの? PHPのクラスにそういう利点て見出せないな。
164 :nobodyさん :2006/03/31(金) 09:11:07 ID:???.net >>162 みんなのために説明よろしく。
165 :nobodyさん :2006/03/31(金) 09:23:18 ID:???.net >>158 本当だ… ちゃんと親クラスの関数にアクセスできる。 てっきりインスタンス時点で合成されるのかと思ってた。
166 :nobodyさん :2006/03/31(金) 09:31:23 ID:???.net PHPはもともと関数志向?的な作りだから、 OOPに最適化されているとは言いがたいんだけど、 それでもクラスは使った方が便利だよ。
167 :nobodyさん :2006/03/31(金) 09:43:30 ID:???.net それじゃなぜPHPを使うの?
168 :nobodyさん :2006/03/31(金) 09:49:02 ID:???.net 総合的に見て、実用性に秀でているから。
169 :nobodyさん :2006/03/31(金) 11:27:34 ID:???.net >>164 みんなのためだなんて嘘書かないの。 ぼく分からないから教えてって言え。
170 :nobodyさん :2006/03/31(金) 11:55:57 ID:???.net >>169 ぼく分からないから教えて これでいいか?さあ早く教えろ。
171 :nobodyさん :2006/03/31(金) 14:59:28 ID:???.net カプセル化 【encapsulation】 読み方 : カプセルか 分野 : プログラミング > オブジェクト指向 オブジェクト指向プログラミングが持つ特徴の一つ。 データとそれを操作する手続きを一体化して「オブジェクト」として定義し、オブジェクト内の細かい仕様や構造を外部から隠蔽すること。 外部からは公開された手続きを利用することでしかデータを操作できないようにすることで、個々のオブジェクトの独立性が高まる。 カプセル化を進めることによりオブジェクト内部の仕様変更が外部に影響しなくなり、ソフトウェアの保守性や開発効率が高まり、プログラムの部分的な再利用が容易になる。 で、PHPで実用的なカプセル化ってどんなのよ?
172 :nobodyさん :2006/03/31(金) 15:56:15 ID:???.net >>171 PHP(4)ではカプセル化は無理。 だから、コメント上で、 どの情報にはアクセスできてどの情報はアクセスを禁止するかを明言する必要がある。 だからPHP(4)に関して言えば、OOPによるカプセル化の利点はない。
173 :nobodyさん :2006/03/31(金) 17:08:32 ID:???.net Singleton前提のクラスは インスタンス化する必要ないってことでOK? でもコンストラクタでの初期設定ができないか…
174 :nobodyさん :2006/03/31(金) 17:39:36 ID:CdaR7r2n.net 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
175 :174 :2006/03/31(金) 17:44:05 ID:???.net >>173 例えば >>174 のソースの中にある euc_jp_reader クラスや shift_jis_reader クラスなんかは Singleton 前提のクラスですが、 char_iterator クラスのコンストラクタの引数となるため、インスタンス化してやる必要があります。 Singleton 前提のクラスを敢えてインスタンス化する利点の一つは、 ポリモルフィズムが応用できるってことかな。
176 :nobodyさん :2006/03/31(金) 18:30:26 ID:???.net >>175 なるほど ○他の関数の引数に出来る ○その結果クラス名を指定しないメソッド呼び出しも可能になる (ポリモーフィズム) ってことだね
177 :nobodyさん :2006/03/31(金) 18:35:59 ID:???.net >>174 2つ質問がある。 ・そのスクリプトの中で、Webサイトを構築する上で有用な情報はどこにあるの? ・そのスクリプトの中で、JavaやRubyに対するPHPの優位性はどこにあるの?
178 :174 :2006/03/31(金) 19:14:39 ID:???.net ・そのスクリプトの中で、Webサイトを構築する上で有用な情報はどこにあるの? ごめん。意味を正しく受け取ることが出来なかったんだけど、要は 「それを使って何か実際に役に立つものが作れるのか?」 ってことで良いですか? これは自作の XML 解析モジュールに応用してます。 レンタルサーバーみたいに、外部モジュールを自由に導入できない (すなわち libxml モジュールなどが使えない)環境のために作りました。 ・そのスクリプトの中で、JavaやRubyに対するPHPの優位性はどこにあるの? 知りません。もしかしたら Java や Ruby のほうが優れているんじゃないんですか? 別に PHP が Java や Ruby より優れてなきゃいけない理由なんてないし。
179 :nobodyさん :2006/03/31(金) 19:54:05 ID:???.net 1つ目の質問についてだけど、いちおうWebProg板だしWebプログラミングでオブジェクト指向っていうのがテーマなスレだから、あんまりズレないようにしないとね。 XMLの解析に使ってる点はいいんじゃない。お疲れさん。 2つ目は他の言語でなくなぜPHPなのかって話題が出てたから聞いてみただけ。 PHPしか知らないってのも理由の1つとしてはいいけど、馬鹿にされるからあまり言わないほうがいいかもね。
180 :nobodyさん :2006/03/31(金) 21:05:47 ID:???.net >>179 そういうしょうもない煽りは 【戦場は】PHP王とJava乞食【エンタープライズ】 http://pc8.2ch.net/test/read.cgi/php/1140124172/ こっちでやれ
181 :nobodyさん :2006/03/31(金) 22:24:05 ID:???.net >>171 の続き 継承 【inheritance】 読み方 : けいしょう 別名 : インヘリタンス 分野 : プログラミング > オブジェクト指向 オブジェクト指向プログラミングにおいて、既に定義されているクラスをもとに、拡張や変更を加えた新しいクラスを定義すること。 元になるクラスを「スーパークラス」(super class)、あるいは「基底クラス」「基本クラス」(base class)などと呼び、新たに定義されたクラスを「サブクラス」(subclass)、あるいは「派生クラス」(derived class)と呼ぶ。 スーパークラスの性質はすべてサブクラスに受け継がれ、サブクラスではスーパークラスとの違いを定義するだけでよい。 複数のスーパークラスから新しいクラスを定義することを多重継承という。 で、PHPで実用的な継承ってどんなのよ?
182 :nobodyさん :2006/03/31(金) 22:33:03 ID:???.net >>181 普通にやれ
183 :nobodyさん :2006/03/31(金) 22:59:34 ID:???.net >>182 普通とは?
184 :nobodyさん :2006/03/31(金) 23:22:53 ID:???.net なんだこの流れ PHP のスレは大量にあるんだからどこでも使えよ 単に PHP をバカにしたいやつはもうこないでくれないか 本当に知らないのならもっと真摯に勉強しろ
185 :nobodyさん :2006/03/31(金) 23:40:49 ID:???.net >>184 そう言い捨てて意味のあることを書かない(書けない?)人が多いんですよこのスレ。
186 :nobodyさん :2006/03/31(金) 23:42:06 ID:???.net それ以前に意味のある質問したことあるんですか?
187 :nobodyさん :2006/03/31(金) 23:55:31 ID:???.net その質問は意味があるんですか?
188 :174 :2006/03/32(土) 00:32:20 ID:???.net >>181 >>174 で晒したソースは、 PHPでの実用的な継承 (っていうか、別に普通だけど) の例でもあると個人的に思うのですが、 これだけだと伝わりませんでしたか?
189 :nobodyさん :2006/03/32(土) 16:53:32 ID:???.net この流れじゃあ 「オブジェクト指向意味ワカランから本買うけど何がいい?」 なんて厨な質問できねーYO!
190 :nobodyさん :2006/03/32(土) 17:09:54 ID:???.net >>174 いや、そんな自己満コード晒してもらっても
191 :nobodyさん :2006/03/32(土) 20:29:42 ID:???.net >>189 ぱっと思いつくのは 憂鬱なプログラマのためのオブジェクト指向開発講座―C++による実践的ソフトウェア構築入門とか >>188 OO分かってない奴にいきなりコードを見せても チンプンカンプンだと思う
192 :nobodyさん :2006/03/32(土) 21:37:50 ID:???.net >>127 だから重複してるからイランと
193 :nobodyさん :2006/03/32(土) 21:39:06 ID:???.net >>128 JavaやC++のように大規模開発でも使う場面が 多い言語ではprivateは重宝するよ。 なにせprivateをうまく使うとデバッグがしやすいしバグもとりやすく テストもしやすくソースコードの信頼性も上がる。
194 :nobodyさん :2006/03/32(土) 21:42:32 ID:???.net >>137 PHP使えるレンタル鯖が多いからだろ。 Ruby使える鯖は少ないし Rubyというだけで日本人が作った言語だから ショボイと思われがてで不キュしていなかったと思われる。
195 :nobodyさん :2006/03/32(土) 21:43:46 ID:???.net >>143 この本を読めばクラスの使い方がわかるようになるよ。 超お勧め。 Amazon.co.jp:アジャイルソフトウェア開発の奥義: 本 http://www.amazon.co.jp/exec/obidos/ASIN/4797323361/249-2469696-1854764
196 :nobodyさん :2006/03/32(土) 21:45:56 ID:???.net >>156 おれはよく継承を使いまくってる。 将来拡張する予定があるものは かならず(空でもいいので)スーパークラスを作って 継承してつかっている。 継承は使い方を間違えたり勘違いしている人間が使うと 継承=拡張そのものだと 誤解してだたやみくもに継承しまくることがあるので、 継承を使いこなしたければ デザインパターンについてよく勉強した方が良い。
197 :nobodyさん :2006/03/32(土) 21:47:44 ID:???.net >>160 > ・関数がいい人は関数でやればいい > ・クラスがいい人はクラスでやればいい > ↑ここまではおk。それじゃ、 > ・クラスがいい人は何のためにクラス使ってるの?しかもPHPでw ←いまここ 大規模化する可能性のあるソフトをPHPで作るとき。 顧客がPHPを使えと言ってきたら PHPを使わざるを得ない。けれどもオブジェクト指向を 使わないで開発すると一体どんなとんでもない目に あうのか散々味わってきたので 漏れはかならずオブジェクト指向でPHPコードを書く。
198 :nobodyさん :2006/03/32(土) 21:49:55 ID:???.net 継承 = inheritance 拡張 = extends なんだよな・・・・
199 :nobodyさん :2006/03/32(土) 21:50:04 ID:???.net >>163 それに関してはPHPでもJavaでも同じように実現できている。 PHPで問題なのは名前空間と型安全性問題。 メソッド引数に型指定もクラスしか使えないこと。 integer型やstring型などをメソッド引数に指定できないのが 今のPHP5の難点。Javaでいえば引数の型をObjectにしているようなものだ。 Perlでも同様だが。
200 :nobodyさん :2006/03/32(土) 21:52:35 ID:???.net >>171 PHP5はどうみてもJavaのパクリとしか 思えないほど十分にオブジェクト指向できるような 言語となった。問題なのは上でも述べているとおり 名前空間と型指定の曖昧さ、ほかに戻り値の型を指定できないことだね。
201 :nobodyさん :2006/03/32(土) 21:57:35 ID:???.net >>199 PHP6もgoto付けるとか言ってないで そのへん整備すりゃいいのにな
202 :nobodyさん :2006/03/32(土) 21:59:03 ID:???.net >>174-175 そんなに汚くないコードだけど ちょっと抵抗があるソースコードだな。 クラス名が全部小文字で 名前空間の替わりの役割を果たしているわけでもないのに 区切り文字に_(アンダースコア)つかうという 表記を未だに使っているとは・・・・。 やっまりキャメルケース(CamelCase)がわかりやすいと思うのだが。 それから一ファイルにつき一クラスにしておくのがベスト。 一つのファイルに複数のクラスを入れておくことはお勧めしない。 ファイル名とクラス名も一致させておく。名前空間が使えないので そこだけ例外的にクラスだけ名に_(アンダースコア)を使う。 詳しくはPEARライブラリのソースコードを見てみてくれ。 それから文字コードがEUCだとは。 Unicode(UTF-8)で統一してくれれば DBとのやりとりも楽なのだが。
203 :nobodyさん :2006/03/32(土) 22:01:42 ID:???.net >>188 悪いがあなたが書いたソースコードが実用的な例だとは とても思えない・・・・。 あのコードがPHPで有ろうとJavaに置き換えようと実用的になるとは とても思えない。
204 :nobodyさん :2006/03/32(土) 22:02:13 ID:???.net >>190 オブ脳 オブジェクト脳のつくりかた で良いんでないかな?
205 :nobodyさん :2006/03/32(土) 22:05:14 ID:???.net >>198 PHPやJavaではextendsで継承しているともいうし拡張するともいう。 しかしクラスそのものを拡張しているだけであって それによってそれだけで簡単にソフトウェアの拡張性が高まるとは限らない。 という落とし穴に気をつけないといけない。 その辺りを素早く理解するにはデザインパターンを学ぶことをお勧めする。 この本は初心者には非常にわかりやすいので かなりお勧め。 増補改訂版Java言語で学ぶデザインパターン入門 http://www.hyuki.com/dp/
206 :nobodyさん :2006/03/32(土) 22:06:45 ID:???.net >>201 gotoか。Javaみたいに例外処理限定や ラベル付きbreak, continue文だけにgoto同様の機能を 限定的に持たせるだけにしてくれればいいのだが・・・・。 C#みたいにJavaのラベル付きbreakやcontinueをgotoキーワードで 実装すると言うだけのレベルだろうか?
207 :nobodyさん :2006/03/32(土) 22:20:15 ID:???.net 188はTemplateMethodの実例を見せたかったんだろ 俺は悪いコードだとは思わないが
208 :nobodyさん :2006/03/32(土) 22:23:49 ID:???.net >>205 結城本はガチだな ただOOPはじめたばかりの人がいきなり分かるほど 簡単だとも思わないが…
209 :nobodyさん :2006/03/32(土) 22:39:55 ID:???.net 何でいまどきgotoなんだろ。 俺的には無限再帰を可能にしてwhileとforみたいなダサいもんも排除した 関数言語にして欲しいと前から思っているんだけどそんな人いませんか。
210 :nobodyさん :2006/03/32(土) 23:12:37 ID:???.net Gauche とか使えば?
211 :nobodyさん :2006/03/32(土) 23:13:10 ID:???.net PHPで継承はあんまり必要ないな。 使い道がないから。 ウェブでオブジェクト指向するなら、JavaScriptが一番使いどころが多い。
212 :nobodyさん :2006/03/32(土) 23:16:24 ID:???.net >>193 そりゃあれば使うよ ないものねだりしてもしゃーないでしょってこと
213 :nobodyさん :2006/03/32(土) 23:39:13 ID:???.net finalとabstractとinterfaceが とりあえずどんなものかは わかったけど実際にどうやって それを有効利用できればいいか わからない香具師に結城本はおすすめだと思う。
214 :nobodyさん :2006/03/32(土) 23:40:02 ID:???.net >>211 > ウェブでオブジェクト指向するなら、JavaScriptが一番使いどころが多い。 まてまてw それはJavaの間違いではw
215 :nobodyさん :2006/03/32(土) 23:40:33 ID:???.net >>212 privateの利点が解らない香具師はあっても使わない。
216 :nobodyさん :2006/03/32(土) 23:56:49 ID:???.net デフォルトがprivateだったらすげー便利だったのになぁ。
217 :nobodyさん :2006/04/02(日) 00:13:33 ID:???.net Javaだったらデフォルトでpackage privateになるのにな。 publicと明示的につけないとパッケージ外部からアクセスできなくなる ってことが名前空間がないPHPではできないから デザインパターンの実装も中途半端になる。
218 :nobodyさん :2006/04/02(日) 01:06:11 ID:???.net >>215 そんなやつの話を持ち出されても知らない ダメコーダに強制できないとかいう話ならご愁傷さま としか言いようがないですな
219 :nobodyさん :2006/04/02(日) 01:15:39 ID:???.net >>213 俺も最初そのへん「これ必要か?」と思ったな 他の人(近未来の自分含む)に対しての「使われ方の説明」を ソースの中に機能的として組み込むものだとわかって 得心した。
220 :nobodyさん :2006/04/02(日) 01:57:43 ID:???.net PHP6のgotoは、gotoというキーワードが実装される訳ではなくて、 for () { if () { break foo; } print "bar\n"; foo: print "baz\n"; } こんな感じに書けるようになるもの。
221 :nobodyさん :2006/04/02(日) 02:36:42 ID:???.net >>220 これならあってもいいかも。
222 :nobodyさん :2006/04/02(日) 07:04:12 ID:???.net >>199 ,200 型安全性ならis_arrayとかis_stringとかinstanceofでチェックすればいいだけじゃないの?
223 :nobodyさん :2006/04/02(日) 07:17:49 ID:???.net それはそうだが 何が求められているのかを知るために 中身まで見ないといけないのはあまりよろしくないだろう。
224 :nobodyさん :2006/04/02(日) 07:50:00 ID:???.net つ @param @return
225 :nobodyさん :2006/04/02(日) 09:57:52 ID:???.net 動的型付け言語であるPHPで、型を指定したいってのがそもそも可笑しな話なんだよな。 それでもタイプヒンティングみたいにオブジェクトの型を動的にチェックしてくれるようにする構文はいいアイデアだと思った。 Javaでいう変数の静的な型指定(つーかC/C++からだけど)と構文を似せたってのも良い。 JavaScript2.0なんかもそういう方向に行ってるね。 >>199 > integer型やstring型などをメソッド引数に指定できないのが たぶんだけど、統一性の問題があるからだと思う。 例えば引数にintを指定したメソッドがあったとして、呼び出すときにstringを渡したからってエラーにすべきではないでしょ。 その辺の仕様がうまくいかないんじゃないかな。
226 :nobodyさん :2006/04/02(日) 10:18:28 ID:???.net >>220 普通にJavaのパクリじゃないか。 Java自体もCあたりからパクッタ者だが
227 :nobodyさん :2006/04/02(日) 10:24:36 ID:???.net >>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 :nobodyさん :2006/04/02(日) 10:28:07 ID:???.net >>225 Javaみたいにラッパークラスを作ってしまえばいいかもしれんな。 final class Integer extends Number { $private $value; __construct($value){ if($valueがint型であれば){ $this->value = $value; } else { throw new NumberFormatException("整数以外入力するんじゃねえぞこのバカ野郎氏ね!"); } } }
229 :nobodyさん :2006/04/02(日) 10:29:01 ID:???.net privateに$が余分についていた。 あとは適度に必要な変換メソッドを追加しておくべし。 intValue()とか
230 :nobodyさん :2006/04/02(日) 10:46:56 ID:???.net >>228 お、いい方法じゃん!って一瞬思ったけど、 function method(Integer $param) を呼び出すときmethod(10)って書けないし>< >>227 えーっと、それは型安全性の問題なの・・・?
231 :nobodyさん :2006/04/02(日) 13:43:38 ID:???.net >>227 コンポーネントに対する入力値と戻り値をちゃんとチェックするような ユニットテストを書いとけばいいんじゃないの?
232 :nobodyさん :2006/04/02(日) 16:24:19 ID:???.net >>227 それは単なるタイプミスだ。
233 :nobodyさん :2006/04/03(月) 11:03:17 ID:???.net >>230 ひとこと「それだとAUTO-BOXINGが欲しくなるな」と言えばいいのにw
234 :nobodyさん :2006/04/03(月) 11:16:30 ID:???.net >>233 つ 「それだとAUTO-BOXINGが欲しくなるな」 満足戴けたかな? PHPみたいな型なし言語なら、Javaみたいなプリミティブ型とそのラッパークラスのオートボクシング/アンボクシングだけでなく、もう少し汎用的な自動型変換が欲しいところだな。 function method(int $x) {} を method("100"); っていうふうに呼び出したならintにキャストするくらいの自動化はあってもいいと思う。 (今あるPHPのタイプヒンティングだと、型が違うとエラーっていう設計だから) もともとPHPは変数の実行時における型が文字列か整数かを意識しなくても適宜変換してくれるように設計された言語なわけだし。
235 :nobodyさん :2006/04/03(月) 14:51:40 ID:???.net >>234 type hintingのメリットが台無しじゃね?
236 :nobodyさん :2006/04/03(月) 14:54:33 ID:???.net >>234 それなら、 function method($x) { $x = (int) $x; } でいいんじゃないの?
237 :nobodyさん :2006/04/03(月) 15:34:14 ID:???.net >>232 型宣言しておけばミスに即座に気が付く、 のだけれどあれだと気づかない。
238 :nobodyさん :2006/04/03(月) 15:35:04 ID:???.net >>235 メリットって? >>236 間違えて配列やオブジェクトを渡したときに自動的にエラーを出してくれるかもしれない。 もちろんis_intで確認してエラー出せば同じことだから絶対なければならないっていう必然性はないけど、あったら便利かとは思う。 あとタイプヒンティングでintやstringなどの基本型だけは指定できないっていう今の状況より統一感あるかと。 オートボクシングや構文糖と考え方は一緒ね。
239 :nobodyさん :2006/04/03(月) 23:39:48 ID:???.net PHPでそんなことするくらいなら、素直にJava使うわ。
240 :nobodyさん :2006/04/03(月) 23:50:13 ID:???.net 引数に型書くだけの話やんけ
241 :nobodyさん :2006/04/04(火) 03:55:07 ID:B/b940FU.net 普通のclassと、 abstractなclass, interfaceは、 クラス名から変えた方がいいんかな? どうやってる?
242 :nobodyさん :2006/04/04(火) 15:51:08 ID:???.net >>241 俺はabstractもinterfaceも普通の名前にしてる。 abstractやinterfaceをある特定クラスの仕様だけ抽象したことを表現したい場合に限り「Abstract〜」とか「〜Interface」にするかも。 例外だったら「〜Exception」てつけるけど。
243 :nobodyさん :2006/04/04(火) 23:58:21 ID:???.net >>241-242 というか、C#やC++みたいに継承も実装もおなじ::をつかっているわけではなく PHPはjavaのようにちゃんと継承はextends、インターフェース実装はimplements を使うように指定されているから 名前を見ただけでインターフェースかクラスかわかるようにまでしなくてもええと思う。 IDE使えば名前指定しなくてもさらに一目でわかるし。PHPのIDEはよくわかんないけど
244 :nobodyさん :2006/04/06(木) 03:29:44 ID:???.net >>242-243 レスさんくす あんまり考えすぎなくてもいっか
245 :nobodyさん :2006/04/14(金) 07:15:35 ID:???.net 質問です。 ビジネスロジックとドメインロジックとアプリケーションロジックは、プレゼンテーションロジックと対比的な位置づけですが、基本的に同じものですか?
246 :nobodyさん :2006/04/14(金) 10:33:43 ID:???.net >>245 使用する分析・設計手法によって、使われる用語とその定義は違ってきます。 こういうインフォーマルな場では、それぞれが別の立場・定義で勝手に用語を使う ことが多く、基本的な認識がすれ違ったまま不毛なレスが飛び交うのが常です。 まずは専門書で系統立った知識を得てから、自分なりの経験と知見を積んでいけば その類のどーでもいい疑問は解決すると思われます。
247 :nobodyさん :2006/04/22(土) 05:13:55 ID:cnsSSisF.net プロパティをtrue/falseにするメソッド名ってそれぞれどんな命名にする?
248 :nobodyさん :2006/04/23(日) 05:49:14 ID:???.net >>247 setTrue、setFalse setOn、setOff
249 :nobodyさん :2006/05/28(日) 01:10:04 ID:???.net >>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; } を定義するだけのものとか。
250 :nobodyさん :2006/05/28(日) 09:18:03 ID:???.net 反転ならtoggleを使いたくなる
251 :nobodyさん :2006/11/04(土) 00:59:33 ID:1MW2WScy.net スレを読まずに書くけど。 俺オブジェクト指向ってよくわかんないのね。で、 PHPでさ、テーブルごとにクラス作ってその中で SQL発行してるソース見て思ったんだけど。こういう のってテーブルのJOINはどう扱ってんの?
252 :nobodyさん :2006/11/04(土) 05:52:13 ID:???.net だからそれはテーブルじゃなくてデータオブジェクトです
253 :nobodyさん :2006/11/04(土) 15:27:28 ID:???.net 良スレ発見
254 :nobodyさん :2006/11/04(土) 17:39:13 ID:???.net >>247 enableXXX/disableXXX >>251 railsのactiverecordとか調べてみればいい テーブル同士の関係の属性を設定して取れるようになっている でもSQLを元にデータを取得することもできるし 複雑なJOINの場合はSQL書くのが推奨
255 :nobodyさん :2006/11/21(火) 13:27:36 ID:???.net OOPを0から学ぶとすると、やはりJavaが最適なのでしょうか? Railsで有名になったRubyでもよさそうですが、 どれを勉強しようか悩みます。 どちらも実行環境を整えるのが自分にとって一苦労な気がするので、 今まで環境が作りやすいPHPに逃げていましたが、 一向にOOPの概念がわからずじまいで、 本格的にJavaかRubyを入れてやってみようと考えています。
256 :nobodyさん :2006/11/21(火) 14:58:55 ID:???.net >>255 つ ttp://smalltalk.cincom.jp/scripts/smalltalk.dll/tutorials/index.ssp
257 :nobodyさん :2006/11/23(木) 02:32:55 ID:???.net オブジェクト指向プログラミングの学習が目的なら、ウェブアプリやっても無駄だと思うよ。GUIのあるデスクトップアプリ作った方がいい。
258 :nobodyさん :2006/11/23(木) 10:48:14 ID:???.net > オブジェクト指向プログラミングの学習が目的なら、ウェブアプリやっても無駄だと思うよ。GUIのあるデスクトップアプリ作った方がいい。 はいはいわろすわろす。
259 :nobodyさん :2006/11/23(木) 11:32:44 ID:???.net GUIのプログラミングで身に付くのはオブジェクト指向よりむしろイベントドリブンだよね。
260 :nobodyさん :2006/11/23(木) 11:33:23 ID:???.net >>258 ある意味>>257 は言い得てると思うぞ。 WebアプリはWebならではの都合で、本来のオブジェクト指向には反する設計を 強制される場面も少なくない。
261 :nobodyさん :2006/11/23(木) 16:55:37 ID:???.net webアプリでがちがちのオブジェクト指向やると重くならね?
262 :nobodyさん :2006/11/23(木) 18:29:52 ID:???.net もっと抽象的な議論しようぜ。
263 :nobodyさん :2006/11/23(木) 19:59:01 ID:???.net >>262 犬とか猫とか?
264 :nobodyさん :2006/11/24(金) 05:31:59 ID:???.net リクエストがあったらhtml吐き出して終わり、なタイプのwebアプリでは オブジェクト指向はあまり身につかない。 なにしろ、インスタンスの寿命が短かくて、全員が突然死するわけだから、 時間軸がそっくり抜けてるのだよ。 気にしながらライブラリを作れば、ソースの構造的な部分はある程度身につくかな、くらいだろう。
265 :nobodyさん :2006/11/24(金) 09:34:29 ID:???.net JavaでWebアプリしかやらない人は、J2EEパターンとかDIコンテナとか使って 「オブジェクト指向」と思っているんじゃないかな? 今のJavaのWebはレイヤー構造や ドメインモデル(エンティティ)とビジネスロジックを完全に分離した設計、 ステートレス・スレッドセーフ・request/sessionスコープなどが優先されて、 本来のオブジェクト指向信者から見ると、論理的にあまりきれいな設計ではない。 とは言える。 言語レベルを超えた「モデリング」(UML等は使っても良いが)を そのまま実装にまで落とすには無理がある。
266 :nobodyさん :2006/11/24(金) 22:24:39 ID:???.net 要するに Java なんかつかうやつはばかですってこと?
267 :nobodyさん :2006/11/25(土) 16:46:42 ID:???.net JavaでWebなんて業務外では使わないしどうでもいい。
268 :nobodyさん :2006/11/25(土) 17:08:05 ID:???.net >>266 OOPを極めたいという目的だけのために JavaでWEBをやるならバカと言えよう。
269 :nobodyさん :2006/11/28(火) 00:51:55 ID:???.net 本気でオブジェクト指向やりたいならウェブでは役者不足ってこと。
270 :nobodyさん :2006/11/28(火) 01:02:02 ID:???.net 役者不足(笑)
271 :nobodyさん :2006/11/28(火) 07:32:06 ID:???.net Actorが不足してるわけですな。
272 :nobodyさん :2006/11/28(火) 11:24:02 ID:???.net OOの概念を把握したりOOの組み方を学ぶだけなら PHPでもそれなりに勉強できると思うけどな PHP5で書かれたフレームワークやライブラリのコードを眺めてみたら
273 :nobodyさん :2006/11/28(火) 11:34:28 ID:???.net これとかいいかもね。 PHPによるデザインパターン入門 http://www.cbook24.com/bm_detail.asp?sku=4798015164
274 :nobodyさん :2006/11/29(水) 09:38:30 ID:???.net それOOをまったく理解できなかった俺が買ってみた どうなるか人柱になるわw 著者でググったらブログが一番上にヒットした
275 :nobodyさん :2006/11/29(水) 10:49:08 ID:???.net PHPのデザパタ入門ってどうなんだろうか。 レビュー期待www
276 :nobodyさん :2006/11/29(水) 16:42:27 ID:???.net >>272 その言葉を信じて眺めてるんだが、 なんかごちゃごちゃしてて返ってわかりづらい・・・ コメント英語で何書いてるかわからないし。 やっぱ俺みたいな凡人は丁寧に解説してるサイトに限るな。
277 :nobodyさん :2006/11/29(水) 16:50:30 ID:???.net 一口にオブジェクト指向って言ってもメッセージ主体かクラス主体かで変わってくるからね。 C++, Java, PHP は後者。前者は Smalltalk, Objective-C, io とか。
278 :nobodyさん :2006/11/29(水) 17:04:29 ID:???.net >>276 簡単なライブラリから眺めていけばいいよPEARのDBとか OOPを一番手っ取り早く理解する方法は OOで適当な分野のライブラリを自分でコード書いてみる事 当然よく分からないうちはコードは汚い なのでPEARで同じような分野のライブラリコードを眺めて どういう構造なのかを調べてみながら自分のコードを書き直す それの繰り返しで把握していくもんだと思う いきなりデザパタの勉強とかやってもあんまり意味がない OOPを理解していく上でどういう局面で どういうパターンを使ったら良いという事がわからないから パターンってのは結局ノウハウの事だし ノウハウってのは必要に応じて生まれて出来上がっていくもんだから ノウハウ自体を先に説明されてもピンとこないはず 英語は勉強するしかないがまめに単語の意味を引くようにしておけば 文法を正確に理解してなくてもだいたい把握できるようになるはず ネットならすぐに調べられるんだからそのコストは無駄にはならない コードは万国共通だ ごちゃごちゃしてても所詮はPHPのコード、Cやアセンブリじゃない ゆっくり読んでいけばわかる 小さなライブラリでもよくできてるライブラリはたくさんある その区別がつくようになっていけば 自ずといいコードも書けるようになるだろう
279 :nobodyさん :2006/11/30(木) 00:04:08 ID:???.net オブジェクト指向について語るとき、 「どのような概念か」と「どう使うのか」 を分けないで話すとひどいことになる、 ということだな。
280 :nobodyさん :2006/12/02(土) 14:06:00 ID:???.net >>278 PEARってOOPで書かれてるの? クラスからインスタンスをnewして使うってのが多いですね。 >>279 って>>273 の本の説明の仕方がごっちゃでよくないってことなんですか?
281 :280 :2006/12/03(日) 01:33:46 ID:???.net 昨日本を読んでみた。 サンプルコードが載っていて分かりやすかった。 UMLの説明はさすがに他書で勉強しないと、このページ数じゃフォローできんね。 (ないよりましだけど…) デザインパターンが活用できるようになれば、OOPが楽しくなるだろうなー☆\(^o^)/
282 :274 :2006/12/03(日) 18:41:26 ID:???.net 届いたよ! 眠くてまだ読んでない ちょっと開いたけど
283 :nobodyさん :2006/12/10(日) 19:06:09 ID:???.net このスレ、 サーバサイドプログラミングでのOOかよ 期待して損した・・・
284 :nobodyさん :2006/12/17(日) 17:10:50 ID:???.net >>283 クライアントサイドのOOPっていうと、JavaScriptでやるんですか?
285 :nobodyさん :2006/12/18(月) 23:57:03 ID:VHWnyE8e.net WebObjectsがフリーになるから 勉強しといたほうがいいぜ
286 :nobodyさん :2006/12/19(火) 09:58:57 ID:???.net >>285 Thanks!!! http://ja.wikipedia.org/wiki/WebObjects http://www.apple.com/jp/webobjects/
287 :274 :2007/01/11(木) 15:28:53 ID:???.net 半分くらい読んだけど、7章が無いのが残念だった そこらへんは著者さんのブログやサイトを参考に補完することにしようorz
288 :nobodyさん :2007/01/18(木) 19:18:28 ID:???.net >>273 それ買って読んでみてる。 今5章の途中だけど いまいちピンと来ない。 おれがアホだからだと思う。
289 :nobodyさん :2007/01/21(日) 01:00:05 ID:0bZ76xtY.net PHP5のマニュアル(オブジェクトとクラスの項)とJava入門書を読み始めたばかりなんだけど、 PHP5とJavaのメソッドオーバーロードって全然別物なの?
290 :nobodyさん :2007/01/21(日) 01:03:49 ID:iXs223c1.net スクイークに詳しい人いる?
291 :nobodyさん :2007/01/21(日) 01:20:02 ID:dNBfq9SO.net >>288 PHPのオブジェクト指向を先に覚えるより、CやVBなどのプログラムを覚えたほうが 組み方は理解できるよ。短時間で
292 :nobodyさん :2007/01/21(日) 01:28:21 ID:???.net >>291 スパゲッティソースの量産方法を理解できると言うこと?
293 :nobodyさん :2007/01/21(日) 05:06:03 ID:???.net >>289 Pythonから始めたら、PHPもJavaも楽勝 という漏れはPascalが初体験の相手だった
294 :nobodyさん :2007/01/21(日) 20:40:37 ID:???.net なんかPHPerは無条件でオブジェクト指向マンセーしてる奴が多いよな・・・ 手続き型の進化系がオブジェクト指向ってわけじゃないからね 手続き型的なロジックが有効なところもあればオブジェクト指向が有効なところもある 俺が確かに言えることは、オブジェクト指向は少なくとも万能ではないってこと だからオブジェクト指向で書かないとスパゲティになるとかわけわかんないんだよ むしろオブジェクト指向によって作られたスパゲティの方が多いという現実さえあるのに・・・
295 :nobodyさん :2007/01/21(日) 21:25:32 ID:???.net >>294 誰も藻前の妄想なんか聞きたくないわけだが。
296 :nobodyさん :2007/01/21(日) 22:02:30 ID:dNBfq9SO.net まぁ考え方が増えたってことでいいんじゃない?
297 :nobodyさん :2007/01/22(月) 12:52:43 ID:???.net コードがアチコチに飛ぶって意味では、gotoも多態を使いまくったトリッキーなコードも スパゲッティには変わりないよ。
298 :nobodyさん :2007/01/22(月) 22:25:58 ID:???.net 正直、オブジェクト指向で作られたソースがさっぱり理解できないのだが・・・ もうダメなのかな俺
299 :nobodyさん :2007/01/22(月) 22:58:28 ID:???.net 何言語でどういう部分が分からないの?
300 :nobodyさん :2007/01/22(月) 23:42:41 ID:???.net Javaで作られたCMS。ソースにコメント一切無し。 消えた前担当が全然ドキュメント残してないってのもあるが、Perl使いの俺にはサパーリ。 まぁ何だ、愚痴だ。スマン。
301 :nobodyさん :2007/01/22(月) 23:47:33 ID:c6xxxnP6.net >>298 これわかる? Webより抜粋 PHP (編集しました) ****************************************************************************** * class Shopping { * ク var $item = "コンピュータ"; これがメンバ変数の設定 * var $price = 99800; コンピュータが99800 * ラ ************************************************************************ * function getTotal() { * ス $tax = $this->price * 0.05; * return $this->price + $tax; // 税込価格の設定 これがメソッドの定義 * } 消費税の設定と選択した商品に消費税を加える定義 * } ****************************************************************************** $result = new Shopping(); 上記で指定したクラスをnewステートメントを使ってオブジェクトに格納します $item = $result->item; print("$item の会計は".$result->getTotal()."円になります\n"); これが表示結果 ******************************************************************************
302 :nobodyさん :2007/01/22(月) 23:54:07 ID:???.net >>301 そこまで親切にコメント書いてあれば流石にわかるなぁ。 っていうかphpのオブジェクト指向って変に見辛いな。
303 :nobodyさん :2007/01/22(月) 23:56:53 ID:???.net VB系のプログラム言語と識別子が逆だからめんどうだよね
304 :nobodyさん :2007/02/05(月) 10:08:30 ID:???.net PHP4のオブジェクト指向が中途半端だからいけない
305 :nobodyさん :2007/02/05(月) 15:03:21 ID:???.net PHPはオブジェクト指向言語ではありません
306 :nobodyさん :2007/02/06(火) 00:14:50 ID:???.net >>305 それだから、PHPでオブジェクト指向はしない...と思っていたんだけど 最近ちょっとずつやってみている。 しかし一番最初に触った言語がPHPだったもんだから、この前 C言語を勉強しているときに「あー、やっぱPHPって気持ち悪いな」って思った。 なんか仕様がグダグダだし、10年くらいすれば忘れられそうだなとか思った。
307 :nobodyさん :2007/02/06(火) 12:33:16 ID:???.net 10年後には確実に気持ちいい言語になってるのがPHPだけどな
308 :nobodyさん :2007/02/06(火) 13:31:27 ID:???.net それだけは無いな
309 :nobodyさん :2007/02/06(火) 13:46:07 ID:zUpPH+yJ.net 10年前のPHP3の時は地獄のようでした
310 :nobodyさん :2007/02/06(火) 18:47:34 ID:urembAfZ.net オブ脳とPHPデザパタを読んでオブジェクト指向というのを実践しようとしたけど、 ちゃんとわかってないからか、酷いスパゲッティーになる気がして途中でやめた。 中途半端なオブジェクト指向を解説してるところはないのかな。 俺の今の思考↓。 クラスのメリット ・関数を纏められるの。 ・纏めた関数だけ扱う変数を作れる。 ・継承のおかげで、元は残したまま拡張した纏まりを別の場所で使える
311 :nobodyさん :2007/02/06(火) 21:26:44 ID:???.net よし、オブジェクト指向で書くぞ!って書くもんじゃなくて 気づいたら知らぬ間にOOで書いてるもんだ
312 :nobodyさん :2007/02/07(水) 00:55:11 ID:???.net >>310 クラスを処理関数郡的に捕らえると、クラスが肥大化したりするかもな。 どちらかというと、データに処理機能を添わせると考えた方がよさそげ。
313 :nobodyさん :2007/02/08(木) 08:51:12 ID:???.net 手続き型で書かれたスクリプトをclassで囲んで、 処理を関数で小分けして、例外かましただけ、 みたいなのあるよね 継承、再利用、知るかボケみたいな 俺がまさに今やってることだけど(´・ω・`)
314 :nobodyさん :2007/02/10(土) 02:36:40 ID:???.net 他の人はどうか知らんのだけど、俺個人レベルでは 再利用や拡張のためにクラスを書いたり継承したりはあんまりない。 多態性を持たせるための手段として継承させる程度かな。 PHP5時代の本は買ったことないのだけど、PHP4の時代は 継承による拡張ばかり取り上げていて、カプセル化とか多態性の ことはあまり取り上げられてなかった希ガス。まぁPHPもデザパタが 取り上げられているので多態性については出てくるでしょうけどカプセル化は? PEARのDB(MDB2)もFetchモードがObjectのとき、StdClassだけじゃなくて XmlSerializerみたいにクラスを指定できたらいいなと思うのは変? >>310 にあるメリットは、結果であって目的ではないと思う、 と思えるようになった今日この頃w
315 :nobodyさん :2007/02/11(日) 02:42:25 ID:???.net オブジェ糞指向はうんこだな 人類は新しいパラダイムを発明してくてる天才を必要としている
316 :nobodyさん :2007/02/11(日) 05:00:24 ID:???.net オブジェクト指向はどう見ても最高だろ
317 :nobodyさん :2007/02/14(水) 02:12:06 ID:???.net PHPでは、結局、カプセル化、抽象化できる部分をクラスにして、 手続き型の部分から呼び出す方法に落ち着いた MVCでいうと Mをクラスで、Cを手続き型で、Vをテンプレートエンジンでやるというのが わかりやすくてよいと思った。 ポリモーフィズムって、PHPで実現するのが面倒だと思うけど、どう?
318 :nobodyさん :2007/02/19(月) 01:18:44 ID:???.net djangoでいうMVTだな。
319 :nobodyさん :2007/02/19(月) 01:29:05 ID:???.net >>314 >継承による拡張ばかり取り上げていて、カプセル化とか多態性の >ことはあまり取り上げられてなかった希ガス。 そもそも4はメンバメソッド全てがパブリックなんで、 カプセル化の概念自体皆無。 説明しようにも、カプセル化の機能自体が無いので不可能。
320 :nobodyさん :2007/02/19(月) 03:34:31 ID:???.net >>319 言いたいことはわかるけど、概念自体皆無とか不可能ってのは言い過ぎじゃね? そもそもオブジェクト指向ってオブジェクト単位で独立した存在にするだろ。 だから、カプセル化=独立 であって カプセル化=隠蔽 ではないと思う。 PEARもPrivateメソッドやフィールドは先頭にアンダーバー(_)をつけるなど、 コーディング規約で決めてるわけだし。 もちろん、規約であって言語仕様じゃないから、 簡単にアクセスできて崩壊してしまうがの。
321 :nobodyさん :2007/02/19(月) 03:48:01 ID:???.net カキコ後に読み直して > カプセル化=隠蔽 ではない は言い過ぎだったかな。 オブジェクトを独立させる為にカプセル化を行う。 隠蔽はカプセル化を厳密に行う手段(手法)ってことでどぉ。
322 :nobodyさん :2007/02/20(火) 05:29:07 ID:???.net >>320 そんな規約定めてるPEAR自身、アンダーバーがついてるプライベートであるはずのメンバに パブリックアクセスしてる件について
323 :nobodyさん :2007/02/20(火) 05:34:26 ID:???.net >>321 4の解説書なんだから、コーディング規約のことまでいちいち面倒見る必要無いだろ。 概念として説明してもかえって紛らわしいだけ。 だからPHP5が生まれたわけで。
324 :nobodyさん :2007/02/20(火) 15:42:46 ID:???.net >>317 PHPのような型無し言語はポリモーフィズムだらけです。
325 :nobodyさん :2007/02/20(火) 19:43:11 ID:???.net >>324 型なしといわずに「動的型」といってあげて
326 :nobodyさん :2007/02/20(火) 21:40:15 ID:???.net おk。次から挑戦してみる。
327 :nobodyさん :2007/02/20(火) 22:14:00 ID:???.net それぞれの型クラス作ればいいんじゃね?
328 :nobodyさん :2007/02/20(火) 22:33:04 ID:???.net と言いますと?
329 :nobodyさん :2007/02/21(水) 01:59:11 ID:???.net >>327 それおもしろそうだな。 symfonyのsfMixer使ってやれば、 意外とそれなりにつかえるもんになりそう。 まぁ、ぐちゃぐちゃになりそうな気もしなくも無いけど…
330 :nobodyさん :2007/02/21(水) 02:19:36 ID:???.net type hintingでstringとかintも使えるようにすりゃいいのにな そんなに難しくもなさそうだし
331 :nobodyさん :2007/02/21(水) 02:53:14 ID:???.net phpのtype hintingはでstringとかintも使えるようにって話は時々話題になるけど、もし導入するとしたら、 function hoge(string s) {・・・ っていう定義の関数をhoge(12);で呼び出した場合、エラーにすべき?例外投げるべき?暗黙的にキャストすべき?
332 :nobodyさん :2007/02/21(水) 05:54:57 ID:???.net わざわざtype hintingに記述する=厳格な型を要求してる と考えられるから 事前にstringにキャストされてたらok int等ならfatal errorじゃない?
333 :nobodyさん :2007/02/21(水) 18:05:58 ID:???.net オブジェクト指向よくわからんから とりあえずpearのDB呼んでみる。
334 :nobodyさん :2007/02/23(金) 02:23:01 ID:???.net >>322 stringとintの違いを意識しなくてもコードを書けるのが、ほとんど唯一のPHPの利点なのに・・・
335 :nobodyさん :2007/03/09(金) 05:51:55 ID:???.net >>334 PHPの利点すくな!
336 :nobodyさん :2007/03/26(月) 00:50:31 ID:yFIZR+Qo.net 例えば掲示板投稿処理で 入力処理 画像処理 ログ処理 表示処理 とかにクラスが分かれている場合、それぞれでオブジェクトを作成するの?
337 :nobodyさん :2007/03/26(月) 02:17:48 ID:???.net ま、まぁそうしたければそうすればいいんじゃない?
338 :nobodyさん :2007/03/26(月) 17:48:59 ID:yFIZR+Qo.net なにその突き放したレス
339 :nobodyさん :2007/03/27(火) 11:03:25 ID:???.net ままぁ、そうしたければそうすればいいんじゃない?
340 :nobodyさん :2007/03/27(火) 11:09:19 ID:???.net ままままぁ、そそうしたければね
341 :nobodyさん :2007/03/28(水) 04:38:55 ID:???.net オブジェクト指向っていうものは聞いて覚えるもんじゃない。 体で感じるんだ。
342 :nobodyさん :2007/03/28(水) 22:47:10 ID:???.net 2ch型掲示板を作る時はオブジェクト指向でやったなあ
343 :nobodyさん :2007/04/23(月) 00:54:16 ID:+2ZNQJB1.net 「PHPによるデザインパターン入門」を始めてみた。 いきなりTemplate Method ではまった。 本の通りに打ち込んでるのに、クライアント呼んでも 画面が空白のままだ。 試しにクライアントの中で文字列出力をしてみると、 スクリプトの先頭では出力できるけど、require_once 以降ではechoしても出力できない。 var_dumpでnewしたオブジェクトを表示させようとしても 空白だ。 何だこの現象は。
344 :nobodyさん :2007/04/23(月) 00:55:54 ID:+2ZNQJB1.net ちなみに、読むだけなら5章まで進んでるけど、オブジェクト指向を 軽いノリで始めるにはPHP5は結構いい感じに思えた。
345 :nobodyさん :2007/04/23(月) 11:54:30 ID:???.net >>343 エラーメッセージは表示される設定になってるのか? ダウンロードしたソースを実行してるのか 自分で打ち込んで実行してるのか?
346 :nobodyさん :2007/04/23(月) 16:31:14 ID:LAYu+KhN.net 出来るならワンタッチで、しかも「情報起業」に特化した ホームページ作成ソフトがあったらいいのに・・・。 もし、プロ並みにキレイなホームページが作成が出来たとしたら、 情報商材で一旗あげようと思っているあなたの人生は変りますか? 【早くも成功者続出!】起業サイトビルダー http://www.infotop.jp/click.php?aid=16484&iid=5683
347 :343 :2007/04/24(火) 00:02:00 ID:yjQgQozI.net >>345 環境はPHP5.2.1 Apache2.0.59 WindpowsXP です。 error_reportingは E_ALL | E_STRICT っす。 だけど、HTML吐かれてるんだよね。で、そのHTMLソース見ると、 スクリプトに指定もしてないDOCTYPE宣言とか、METAタグとか、 空のBODYタグとか入るんだけど、これどういうときなるんだろ? ちなみに、頭に叩きこうもと思って自分で打ち込んだやつ。 ダウンロードしたやつは動いた。違いといえば、require_once のところを別の<?php ?>ブロックにしてないところだけど・・・。
348 :nobodyさん :2007/04/24(火) 00:51:50 ID:???.net おそらくどっかでHTMLモードに入ってる ?>の後に空白とか入ってないか確かめてみ
349 :nobodyさん :2007/04/24(火) 02:17:23 ID:0JhT4MiQ.net ダンプ吐いて、地道に変数をトレースしか無いんじゃね。 ちなみに echoじゃなくて、var_dump()の方
350 :343 :2007/04/24(火) 02:42:26 ID:yjQgQozI.net >>348 ?>の後の空白はなかったです。 ほかにもHTMLモードに移行するような箇所はなし。 もっかい見てみますけど・・・。 >>349 echoもvar_dumpも出力してくれません。どうやっても、 DOCTYPE宣言、METAタグ、要素が空のBODYタグが出力され、 結果、真っ白な画面に。 しかし、こんな簡単なスクリプトで・・・。 php.iniの問題でしょうか?phpinfo()は動いてますが。 オブジェクト指向と関係ない話で申し訳ない。
351 :nobodyさん :2007/04/24(火) 11:01:21 ID:???.net PHPスクリプトファイルの文字コードは何で保存しているの? UTF-8で保存しているなら、BOM無しのUTF-8Nで保存し直したら、空白が直るかもしれないよ。 UTF-8とUTF-8Nの違い=BOMについてはGoogleで検索して!
352 :nobodyさん :2007/04/25(水) 23:24:32 ID:B1ZZgxV3.net 折れもBOMには、ハマったよな フリーのエディタの中には、デフォでBOMを付加する設定になっていたりする... UTF-8のBOM付きでは、PHPは動かなかった!
353 :nobodyさん :2007/04/25(水) 23:41:24 ID:???.net >>352 --enable-zend-multibyteでコンパイルしたPHPならBOMありでも大丈夫だよ
354 :nobodyさん :2007/04/27(金) 01:50:35 ID:???.net OOPで実装する時はJAVAとか統合環境がしっかりしてるほうが 分業の切り分けもしやすいと最近思った。 クラスが2、3個とか済む軽いのはPHPでさくっと実装するけど。 要件で言語指定がないとき、みんなの言語の選定基準って何?
355 :nobodyさん :2007/04/30(月) 20:32:09 ID:???.net BOMを処理できないPHPはウンコ
356 :nobodyさん :2007/05/03(木) 13:44:43 ID:???.net ウンコでも小便でも、 サクサク開発できるPHPは良い
357 :nobodyさん :2007/06/05(火) 12:21:35 ID:/w569Zaf.net あげとくか
358 :nobodyさん :2007/06/05(火) 16:24:00 ID:???.net 「ウェブ社会をどう生きるか」「iPhone 衝撃のビジネスモデル」「低度情報化社会」 http://iiyu.asablo.jp/blog/2007/06/05/1556512
359 :nobodyさん :2008/06/19(木) 06:33:48 ID:4gsKqLnV.net 私書箱システム(webでログインしてメッセージが読めるシステム)で、 ・ユーザーAがユーザーBにメッセージを送る ・ユーザーBにメッセージ到着メールを送る ・システム管理人にメッセージ到着メールを送る このとき、私書箱メッセージもメール形式でmail classから処理できるようにするとして、 mailオブジェクトを3つ作って処理って普通ですか?
360 :nobodyさん :2008/06/20(金) 09:01:44 ID:RWxKmjHm.net 3つオブジェクト作ってもいいし、オブジェクト1つで宛先とか送信内容をタスクに合わせてその都度変更してから送信で良くないか? どっちを採用してもおかしくないよ。
361 :nobodyさん :2008/06/25(水) 04:06:12 ID:???.net >>359 まずその仕様をオブジェクト指向にしたい理由を言って下さい メリット・デメリットなど その後にその仕様の目的にあったクラス構成を議論したいです
362 :nobodyさん :2008/06/25(水) 04:07:57 ID:???.net オブジェクト指向にあったロジックと そうでないロジックが存在する
363 :nobodyさん :2008/06/29(日) 01:46:48 ID:???.net しかし何でPHP5は寸前のところでnamespaceをなくしてしまったのか。 クラス名をアンダーバーで繋げるという回避策は悲しすぎる。 唯一悔やまれる点だわ。
364 :nobodyさん :2008/07/02(水) 02:00:54 ID:???.net クラス名をアンダーバーで繋げれば、 問題が解決するからじゃね?
365 :nobodyさん :2008/07/03(木) 23:11:58 ID:???.net 遅延静的束縛がPHP5.3.0以降じゃないと使えないのが萎える。 あれがあればいろんなものをStaticなまま呼び出せるのにー。
366 :nobodyさん :2008/07/04(金) 04:53:13 ID:zouluv3B.net 厨でスマソ それってクラス名得る以外に使い道あるの?
367 :nobodyさん :2008/07/04(金) 12:41:49 ID:???.net staticってか、 オブジェクト指向でいこうよ と厨房がいってみる。
368 :nobodyさん :2008/07/21(月) 01:17:35 ID:gHzQi72i.net オブジェクト指向でつくったモジュールのなかにクラスが参照するサブルーチンを 書くのって、やはり負けですかね。なにがなんでもクラスとして記述した方がいい でしょうか?
369 :nobodyさん :2008/07/21(月) 13:25:21 ID:???.net >>368 クラスで書かないと便利わるくね? 悪くなければ、便利がいいように書けばいいのでは?
370 :nobodyさん :2008/07/21(月) 15:54:45 ID:Aaw/YKL1.net >>368 クラスが参照するサブルーチンて書いてあるけど、ちょっと意味かわからない
371 :nobodyさん :2008/07/21(月) 16:12:59 ID:gHzQi72i.net >>368 369 ええっとですね、hoge.pmないに、コンストラクタとクラスを書くのが オブジェクト指向でのモジュールですが、その中のいくつかのクラスが 使い回せるサブルーチン(例えば、変数が英数かチェックするサブルーチン) を書いておく、という感じです。 そうするといくつかのクラスの中で英数チェックを共通かできるので。 ただ、英数チェックなどそういうチェック部分だけをオブジェクト指向 モジュール化してという方法もありますが、いまいち、決めかねています。 一般的にはどういう感じでやっているのかなぁとアドバイスを求めた次第です。
372 :nobodyさん :2008/07/21(月) 16:19:42 ID:gHzQi72i.net ええっともっと簡単にいうと、hoge.pm(オブジェクト指向モジュール)の 中にある特定のクラスが処理として行なう共通な部分(たとえば英数半角チェック) を抜き出して、それをサブルーチンとしてhoge.pmの中に記述して、クラスが 使うようにする(メインプログラムcgiが直接利用するのではない)、という のは、手法としてはどうですか? という意味です。オブジェクト指向でつくられたモジュール内のサブルーチンは 簡単にいってクラスとして書くけど、単なる英数半角チェックルーチンをサブルーチン 化した場合はそれはクラスというよりやっぱり単なるサブルーチンでしかない ですよね? いや、その半角英数チェックのサブルーチン内で処理後の変数をあらたに定義 すればその半角英数チェックのルーチンはクラスとしていってもいいとおもいますが。
373 :nobodyさん :2008/07/21(月) 19:17:33 ID:???.net それ、普通のPerlのパッケージの作り方だよ。
374 :nobodyさん :2008/07/22(火) 04:02:09 ID:???.net なんかしらんけど、FormValidator::Simple とかつかえばよくね。
375 :nobodyさん :2008/07/22(火) 23:13:02 ID:???.net あなたもアダルト動画サイトを運営しませんか? 動画検索ロボットが毎日動画を自動収集!! アクセスアップ間違いなし。 もちろん海外のサーバーなので違法性も一切ありません。 完全無料!!いくらでも動画サイトを作成できます。 http://sxv.xgun.tv ▼mixiのトピックです。 http://mixi.jp/view_bbs.pl?id=33336111&comment_count=0&comm_id=326589 ▼自分のmixiです。 http://mixi.jp/show_friend.pl?id=15652823
376 :nobodyさん :2008/11/13(木) 09:58:56 ID:???.net オブジェクト指向って一言でいうとなんなんですかって後輩に聞かれた。 おま、一言でいえるかっての!
377 :nobodyさん :2008/11/13(木) 10:03:26 ID:???.net >>376 オブジェクト指向が一言で表したものだから、って言えば良いよ。
378 :nobodyさん :2008/11/13(木) 12:52:57 ID:???.net 関数付き変数=オブジェクト指向
379 :nobodyさん :2008/11/13(木) 17:13:17 ID:???.net Trapezoidクラス upper 上底 lower 下底 height 高さ それぞれのアクセッサ コンストラクタで初期値を設定 面積を求めるメソッド calcArea() 現在のフィールド値を画面に表示するshow() メソッド 誰かおしえてください
380 :nobodyさん :2008/11/14(金) 02:19:47 ID:beq8Chz/.net 日本語でおk
381 :nobodyさん :2008/11/14(金) 02:42:17 ID:s13+G+Dg.net web専用言語にOOPなぞいらん
382 :nobodyさん :2008/12/03(水) 08:17:46 ID:RtCrzg9N.net なんかOOPでやると、 日ごとにincludeするファイルが増えていくような気がする 昔はファイル一枚あればいいだったのに ってか、はっぱ隊とかウンナンとか10年ぶりぐらいに思い出したような
383 :nobodyさん :2008/12/04(木) 00:43:26 ID:XlgDZGNX.net 保守age
384 :nobodyさん :2008/12/09(火) 15:36:44 ID:???.net PHPで学ぶデザパタとかいう本はいいものなの? アマゾンンの読者レビューでは褒められてたけど。
385 :nobodyさん :2008/12/09(火) 16:06:48 ID:???.net 読み手のレベル次第
386 :nobodyさん :2008/12/09(火) 16:33:10 ID:???.net オブジェクト指向初心者。 継承と多態の意味くらいが分かる。
387 :nobodyさん :2008/12/12(金) 01:33:02 ID:???.net >>379 こゆこと? class Trapezoid { private upper ; private lower ; private height ; function __construct( $u , $l , $h ) { $this->upper = $u ; $this->lower=$l; $this->height=$h; } 略 }
388 :nobodyさん :2008/12/12(金) 01:39:31 ID:???.net 宿題だろうに1ヵ月後に解答してあげるとかひどすw
389 :nobodyさん :2008/12/12(金) 01:59:29 ID:???.net >>388 うむ。やはり宿題か。だったら 面積求める抽象クラス と 継承して作った四角や三角 っていうのが本当に伝えたかったことじゃないだろかなんて思った。
390 :nobodyさん :2009/01/01(木) 09:21:40 ID:???.net MVCに関する質問です。 利用者ごとにログインし、見た目をカスタマイズ出来るような仕組みを考えています。 で、ログイン状態やユーザー情報というのはModelに相当すると思うんですが、 見た目の情報はModelには入りませんよね。 そもそもViewの情報はどこで管理すべきなのか。 Viewで良いのか。だとして、ユーザー情報との同期はどうとれば良いのか。 分からないところだらけですが、よろしくお願いします。
391 :nobodyさん :2009/01/01(木) 09:22:32 ID:???.net 分かって無さすぎ
392 :nobodyさん :2009/01/01(木) 09:50:26 ID:???.net それは自分でも重々承知しているわけで、 だからこそ質問しているわけですが・・・
393 :nobodyさん :2009/01/01(木) 09:59:06 ID:???.net ちゃんと基礎から勉強した方がいいよ
394 :nobodyさん :2009/01/02(金) 22:50:28 ID:???.net 質問できるレベルにさえ達していない。 前提知識がないから、回答する側も途方にくれてしまう。 入門書等でWEBアプリってどういう風に作るのか、大まかにつかんだ方がいいかも。
395 :nobodyさん :2009/04/17(金) 23:34:39 ID:???.net フレームワークのチュートリアル見れ
396 :nobodyさん :2009/07/09(木) 01:01:48 ID:qbvjwLD6.net これって現行スレだったのかw
397 :nobodyさん :2009/10/23(金) 00:12:07 ID:???.net うわー オブジェクト重視っぽく書いていったらソースコードが500行余裕で超えた。 class hogeClassUnit extends dbConnectBase{ private var $name; // 以下20項目くらい public function set_name($str){ // 受け取ったデータを加工したり精査したりでこれも20項目くらい public function get_name(){ // クラスから取り出すだけ 以下20項目くらい public function register(){ // ここまできて、登録とか何たらとかの処理を書き始める。 こういう風に細かくやるのが普通なのでしょうか? 単純なことが多いとはいえ、ずいぶんとソースコードが長い
398 :nobodyさん :2009/10/23(金) 00:27:46 ID:???.net 律儀だなw OOPの表面だけ真似るんじゃなくて本質を学んだほうがいいと思うぞ
399 :nobodyさん :2009/10/23(金) 03:13:03 ID:???.net 粒度を上げるのだ
400 :age :2009/11/12(木) 11:26:43 ID:FhD9csek.net class a { function getA(){ { return new b('hoge'); } } class b{ public $a; protected $_z; public function __construct($data) { $this->a = $data+$data; $this->_z = $data; } } 上記のような、クラスがあって、aから、bが返されるのですが、bのprotected のデータを取得したい場合はどうすればいいでしょうか。 たとえばbを継承したb'を作成し、zを取り出すメソッドを作っても、bのインスタンスを作成しているのは aなのでb'のインスタンスは作られないですよね。
401 :nobodyさん :2009/11/12(木) 11:44:55 ID:???.net よく分からんが >たとえばbを継承したb'を作成し、zを取り出すメソッドを作っても、bのインスタンスを作成しているのは >aなのでb'のインスタンスは作られないですよね。 aでb'のインスタンスを作るように変更すればいいのでは。 >上記のような、クラスがあって、aから、bが返されるのですが、bのprotected >のデータを取得したい場合はどうすればいいでしょうか。 getZというメソッドを作るのはだめなの?
402 :nobodyさん :2009/11/12(木) 11:51:13 ID:???.net ああ何となく分かった、既存のaにもbにも手を加えたくないのか 変更しないで挙動を変えたいなら、それこそa'とb'を作ってメソッドをオーバーライドするしかないかと
403 :sage :2009/11/12(木) 14:29:44 ID:FhD9csek.net やっぱりオーバーライドするしかないですか。 有難う。
404 :nobodyさん :2010/05/13(木) 18:19:29 ID:9BJiXr6f.net おいおいおい!!こんなのあるのかよ! http://okamikakushi.net/jp/wbiyhi1 俺やってみたけど、マジ寝てるだけで金くれたぞ!!
405 :nobodyさん :2010/05/15(土) 17:20:55 ID:???.net 治験ですね分かります
406 :nobodyさん :2010/05/23(日) 16:33:14 ID:ReStOCg4.net 他のプロジェクトで作成したフレームワーク、クラス、抽象クラス、インターフェースを 再利用したも猛者はいるか?
407 :nobodyさん :2010/05/23(日) 17:43:20 ID:???.net >>406 そんなのどこでもやってるだろ。
408 :nobodyさん :2010/05/24(月) 21:51:30 ID:???.net >>406 ばっちりだ
409 :nobodyさん :2010/05/27(木) 12:15:02 ID:???.net ていうか再利用できない/しないフレームワークなんて嫌だな
410 :nobodyさん :2010/05/27(木) 20:21:31 ID:P724q4SG.net javascriptでツールチップを作れっ!オブジェクト指向チックによろしく! って言われたら、どのようなオブジェクトを作りますか?
411 :nobodyさん :2010/05/28(金) 20:25:52 ID:???.net まず クライアントサイドプログラムはWeb制作板へ って言います
412 :入社1ヶ月の新人が書いてきた。うれしい。 :2010/07/14(水) 20:35:40 ID:???.net <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <script> //<!-- window.onload = function(){ kanako = createGirl('かなこ'); miku = createGirl('みく'); haruhi = createGirl('ハルヒ'); }; /* * クローンを作成 */ function createGirl( name ) { var superClass = new girlClass(); var superClone = function(){}; superClone.prototype = superClass; //これで他に影響ないクローン完成 var instanse = new superClone(); //いわゆるコンストラクタ instanse.myName = name; return instanse; };
413 :入社1ヶ月の新人が書いてきた。うれしい。 :2010/07/14(水) 20:36:21 ID:???.net /* * おんにゃのこクラス定義 */ function girlClass() { //プロパティ宣言 girlClass.prototype.myName = ""; //振る舞い girlClass.prototype.writeMyName = function() { document.write("私は"+this.myName+"だよ。<br />"); }; } //--> </script> </head> <body> <input type="button" value="Execute" onclick="onClickExecute()" /> <script type="text/javascript"> function onClickExecute() { //おんにゃのこに名前を言ってもらう。 kanako.writeMyName(); miku.writeMyName(); haruhi.writeMyName(); } </script> </body> </html>
414 :nobodyさん :2010/07/15(木) 02:09:27 ID:???.net おっそうかそうか
415 :nobodyさん :2010/07/15(木) 04:17:09 ID:hmDV/lDT.net >>413 そんな事する意味が全くわからんwwww なんのメリットがあるの??wwww プロパティ宣言とかめっちゃウケルwww
416 :nobodyさん :2010/07/15(木) 13:49:38 ID:???.net オブジェクトなんちゃのサンプルの悪いところはそこなんだよな。 なんでそんなことしなくちゃいけないんだよってやつ。
417 :nobodyさん :2010/07/15(木) 16:43:10 ID:???.net window.onload = function(){ kanako = new girlClass('かなこ','girlmessage'); miku = new girlClass('みく','girlmessage'); haruhi = new girlClass('ハルヒ','girlmessage'); }; function girlClass( name , target ) { girlClass.prototype.myName = name; girlClass.prototype.target = target; って書いたら全員ハルヒになったぞ
418 :nobodyさん :2010/07/15(木) 16:49:47 ID:???.net そうか、プロトタイプとはそういう事ね 親クラスとして定義されている関数は触るなと。 了解した。
419 :nobodyさん :2010/07/15(木) 16:51:43 ID:???.net >>415 >プロパティ宣言とかめっちゃウケルwww ねーと使い方わからねーだろ屑
420 :nobodyさん :2010/07/15(木) 17:01:58 ID:???.net 誰か2回 new している説明をお願いします。
421 :nobodyさん :2010/07/15(木) 17:10:38 ID:hmDV/lDT.net .
422 :nobodyさん :2010/07/15(木) 17:52:55 ID:???.net 残念だなあ。 君は何か勘違いしている様だけど、聞いて揚げ足取りをしたいんじゃなくて、 単純に君の意見が面白そうだから聞いてみたかっただけなんだよ。 もっとまともなレスを期待してたんだけど。ごめんね。 ちなみに君は揚げ足を取られる事を恐れているようだけど、それは違うと思う。 揚げ足を取られるのは、君に隙があるから。 隙だらけの人間ってのはそうやって余計な所でつまらない恥をかく事になるもんだよ。 他人につっこまれる事は、自身の知識をより客観的で多角的なものとする為に 有益な指針となるものだと思うな。
423 :nobodyさん :2011/10/14(金) 13:22:35.87 ID:oOJ5iuHv.net オブジェクト指向って単純にいうと パラメーターと処理を 外部からひっかきますことができない思考ってことですか?
424 :nobodyさん :2011/10/14(金) 14:09:07.20 ID:???.net それは単なるカプセル化
425 :nobodyさん :2011/10/15(土) 08:06:59.53 ID:WVUj974d.net パラメーターと処理を外部からひっかきますことができない思考 →カプセル化 CSSのカスケードみたいにカプセルを別のカプセルに引き継ぐ思考 →継承 ?????? 思考 → ポリモーフィズム
426 :nobodyさん :2011/10/19(水) 11:59:18.77 ID:PXmn+I34.net オブジェクト指向のクラスの中身は、 手続き型の記述がカプセリングされて入ってる・・・ と思って間違いないですか?
427 :nobodyさん :2011/10/29(土) 05:40:27.70 ID:???.net 間違いです
428 :nobodyさん :2011/10/29(土) 11:06:32.36 ID:???.net 理由が無いので、信じません。 次。
429 :nobodyさん :2011/12/09(金) 14:10:33.19 ID:jzegoNJ7.net ポリモーフィズムってなんですか? 継承元の親クラスが、なんなのか?によって、 同じ名前のクラスが 全く違う動きをする みたいなかんじですか? となると子クラスには、親クラスがこうの時はこう、 親クラスからこういうパラメータが取ってこれてたらこう みたいな処理がかかれてるんですか?
430 :nobodyさん :2011/12/09(金) 15:58:29.85 ID:???.net >>429 特定のインターフェース規格に準じるということです。
431 :nobodyさん :2011/12/12(月) 20:11:59.00 ID:???.net >同じ名前のクラスが 全く違う動きをする そんなことされたら困ります
432 :nobodyさん :2013/02/14(木) 12:44:29.53 ID:yCRXEb/V.net オブジェクト指向が良く分からないので質問。 例えば、部署を選択すると社員を一覧表示する機能を考えた場合、 社員テーブル(社員NO、社員名、部署NO)と部署テーブル(部署NO、部署名)を作成し、 単にSQLで一覧を取得すれば良いと思うけれど、オブジェクト指向では違うと認識。 そこで、「社員クラス」「部署クラス」「社員部署クラス」を作成。 社員クラス(社員NO、社員名、[社員コード、社員名を返すメソッド]) 部署クラス(部署NO、部署名、[部署コード、部署名を返すメソッド]) 社員部署クラス(社員NO、部署NO、[社員NO、部署NOを返すメソッド]) とりあえずテーブルも上記3テーブル。 また機能毎に「選択画面クラス」と「一覧表示クラス」を作成。 @選択画面クラス 1.部署クラスをnew 2.[部署コード、部署名を返すメソッド]で部署コード、部署名を取得 A一覧表示クラス 1.社員部署クラスをnew 2.選択画面で選ばれた部署コードをもとに[社員NO、部署NOを返すメソッド]で社員NOを取得 3.社員クラスをnew 4.[社員コード、社員名を返すメソッド]で社員コード、社員名を取得 これで考え方としてはあってますか? 部署コードを社員クラスに持たせるのは変?
433 :432 :2013/02/14(木) 13:33:18.72 ID:???.net とりあえずはDBのことは忘れて考えればいいのか 明らかに勘違いしていることが分かった
434 :nobodyさん :2013/02/15(金) 00:04:24.49 ID:???.net >>432 の質問取り消しで
435 :nobodyさん :2013/10/19(土) 11:41:11.05 ID:???.net 1秒でわかるオブジェクト指向 こりあん えくすてんど こっくろーち いんぷりめんと ないんせんちみーたーかのん
436 :nobodyさん :2015/10/06(火) 02:16:35.16 ID:Z1aqUg5G.net 受ける会社大丈夫? 下記の条件が全て当てはまる会社にご注意下さい。 ・IT系 in tokyo ・「社名 労基」でググると過去の2chスレが出てくる ・転職会議で2.5点
437 :nobodyさん :2016/06/05(日) 01:57:39.31 ID:6HPQLJvt.net 過疎ってんなあ
438 :nobodyさん :2016/10/24(月) 11:27:29.75 ID:???.net 保守上げ
439 :nobodyさん :2016/12/22(木) 12:49:53.10 ID:???.net https://chrome.google.com/webstore/detail/%E3%81%AF%E3%81%A6%E3%81%AAng/mbgdnfmdelffjdhkdggilmphfdihnmcj?hl=ja
440 :nobodyさん :2017/12/30(土) 13:45:47.56 ID:YhlYw6jg.net 誰でも簡単にネットで稼げる方法など 参考までに、 ⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。 グーグル検索⇒『半藤のブブイウイウレレ』 T8PRBRW3UD
441 :nobodyさん :2018/02/20(火) 04:56:54.42 ID:???.net ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の 両院で、改憲議員が3分の2を超えております。 『憲法改正国民投票法』、でググってみてください。国会の発議は すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
442 :nobodyさん :2023/06/18(日) 14:49:04.97 ID:6XoRbOPNv 腐敗を謳歌してきた自民党が禁忌としてきたことを腐敗の権化安倍晋三か゛あっさり踏み越えて,日銀に盛大に金刷らせて 賄賂癒着資本家階級とともに俺も俺もと孑孫の税金を食い荒らして.前代未聞の圧倒的資産格差を形成してきたわけだが、今度は 消費活性化を名目に相続税まで引き下け゛て,圧倒的資産格差を末代まて゛盤石なものにするための税制改正までしようとしていやがる そんな本質すら理解できないど底辺のお前らは末代まて゛圧倒的優越的地位を濫用されて,遺棄罪にも等しい不幸な子を産み落とすってわけよ 人として最低限の論理思考能カか゛あるなら,所得税や消費税その他を全廃して.相続税を基幹税にするほうか゛, 末代まて゛消費する必要のない資産を金持ちの子に持たせるよりも.消費か゛活性化することくらい理解できるた゛ろうにな そもそも地球破壞することにしか金を使えず,騒音まき散らして知的産業に威力業務妨害して壞滅させて.消費に値しないポンコツ製品 しか生産できなくした前代未聞史上最悪の腐敗の権化テ□リス├安倍晋Ξを讃えながら消費た゛の笑わせんなや腐敗税制調査會 創価学會員は、何百萬人も殺傷して損害を与えて私腹を肥やし続けて逮捕者まで出てる世界最悪の殺人腐敗組織公明党を 池田センセ−が□をきけて容認するとか本氣て゛思ってるとしたら侮辱にもほと゛か゛あるぞ! hТтρs://i、imgur、соm/hnli1ga.jpeg
109 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200
本文 スレッドタイトル 投稿者