Webでオブジェクト指向プログラミング
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/12/02(金) 11:18:17ID:lnZM9OlM・OOP、MVC、デザパタなどのコンセプト的な話題
・OOにまつわる言語比較(言語批判はその言語で開発してる人に失礼にあたることが多いのでなるべく禁止でお願いします)
・保守、再利用、生産性、開発環境などの実践的な話題
・Webサーバ、DBなどの外部との親和性に関する問題
・学習、教育などの方法論
などなど。
前スレ
PHPでオブジェクト指向プログラミング
http://pc8.2ch.net/test/read.cgi/php/1113724557/
0251nobodyさん
2006/11/04(土) 00:59:33ID:1MW2WScy俺オブジェクト指向ってよくわかんないのね。で、
PHPでさ、テーブルごとにクラス作ってその中で
SQL発行してるソース見て思ったんだけど。こういう
のってテーブルのJOINはどう扱ってんの?
0252nobodyさん
2006/11/04(土) 05:52:13ID:???0253nobodyさん
2006/11/04(土) 15:27:28ID:???0254nobodyさん
2006/11/04(土) 17:39:13ID:???enableXXX/disableXXX
>>251
railsのactiverecordとか調べてみればいい
テーブル同士の関係の属性を設定して取れるようになっている
でもSQLを元にデータを取得することもできるし
複雑なJOINの場合はSQL書くのが推奨
0255nobodyさん
2006/11/21(火) 13:27:36ID:???Railsで有名になったRubyでもよさそうですが、
どれを勉強しようか悩みます。
どちらも実行環境を整えるのが自分にとって一苦労な気がするので、
今まで環境が作りやすいPHPに逃げていましたが、
一向にOOPの概念がわからずじまいで、
本格的にJavaかRubyを入れてやってみようと考えています。
0256nobodyさん
2006/11/21(火) 14:58:55ID:???つ ttp://smalltalk.cincom.jp/scripts/smalltalk.dll/tutorials/index.ssp
0257nobodyさん
2006/11/23(木) 02:32:55ID:???0258nobodyさん
2006/11/23(木) 10:48:14ID:???はいはいわろすわろす。
0259nobodyさん
2006/11/23(木) 11:32:44ID:???0260nobodyさん
2006/11/23(木) 11:33:23ID:???ある意味>>257は言い得てると思うぞ。
WebアプリはWebならではの都合で、本来のオブジェクト指向には反する設計を
強制される場面も少なくない。
0261nobodyさん
2006/11/23(木) 16:55:37ID:???0262nobodyさん
2006/11/23(木) 18:29:52ID:???0264nobodyさん
2006/11/24(金) 05:31:59ID:???オブジェクト指向はあまり身につかない。
なにしろ、インスタンスの寿命が短かくて、全員が突然死するわけだから、
時間軸がそっくり抜けてるのだよ。
気にしながらライブラリを作れば、ソースの構造的な部分はある程度身につくかな、くらいだろう。
0265nobodyさん
2006/11/24(金) 09:34:29ID:???「オブジェクト指向」と思っているんじゃないかな?
今のJavaのWebはレイヤー構造や
ドメインモデル(エンティティ)とビジネスロジックを完全に分離した設計、
ステートレス・スレッドセーフ・request/sessionスコープなどが優先されて、
本来のオブジェクト指向信者から見ると、論理的にあまりきれいな設計ではない。
とは言える。
言語レベルを超えた「モデリング」(UML等は使っても良いが)を
そのまま実装にまで落とすには無理がある。
0266nobodyさん
2006/11/24(金) 22:24:39ID:???0267nobodyさん
2006/11/25(土) 16:46:42ID:???0269nobodyさん
2006/11/28(火) 00:51:55ID:???0270nobodyさん
2006/11/28(火) 01:02:02ID:???0271nobodyさん
2006/11/28(火) 07:32:06ID:???0272nobodyさん
2006/11/28(火) 11:24:02ID:???PHPでもそれなりに勉強できると思うけどな
PHP5で書かれたフレームワークやライブラリのコードを眺めてみたら
0273nobodyさん
2006/11/28(火) 11:34:28ID:???PHPによるデザインパターン入門
http://www.cbook24.com/bm_detail.asp?sku=4798015164
0274nobodyさん
2006/11/29(水) 09:38:30ID:???どうなるか人柱になるわw
著者でググったらブログが一番上にヒットした
0275nobodyさん
2006/11/29(水) 10:49:08ID:???レビュー期待www
0276nobodyさん
2006/11/29(水) 16:42:27ID:???その言葉を信じて眺めてるんだが、
なんかごちゃごちゃしてて返ってわかりづらい・・・
コメント英語で何書いてるかわからないし。
やっぱ俺みたいな凡人は丁寧に解説してるサイトに限るな。
0277nobodyさん
2006/11/29(水) 16:50:30ID:???C++, Java, PHP は後者。前者は Smalltalk, Objective-C, io とか。
0278nobodyさん
2006/11/29(水) 17:04:29ID:???簡単なライブラリから眺めていけばいいよPEARのDBとか
OOPを一番手っ取り早く理解する方法は
OOで適当な分野のライブラリを自分でコード書いてみる事
当然よく分からないうちはコードは汚い
なのでPEARで同じような分野のライブラリコードを眺めて
どういう構造なのかを調べてみながら自分のコードを書き直す
それの繰り返しで把握していくもんだと思う
いきなりデザパタの勉強とかやってもあんまり意味がない
OOPを理解していく上でどういう局面で
どういうパターンを使ったら良いという事がわからないから
パターンってのは結局ノウハウの事だし
ノウハウってのは必要に応じて生まれて出来上がっていくもんだから
ノウハウ自体を先に説明されてもピンとこないはず
英語は勉強するしかないがまめに単語の意味を引くようにしておけば
文法を正確に理解してなくてもだいたい把握できるようになるはず
ネットならすぐに調べられるんだからそのコストは無駄にはならない
コードは万国共通だ
ごちゃごちゃしてても所詮はPHPのコード、Cやアセンブリじゃない
ゆっくり読んでいけばわかる
小さなライブラリでもよくできてるライブラリはたくさんある
その区別がつくようになっていけば
自ずといいコードも書けるようになるだろう
0279nobodyさん
2006/11/30(木) 00:04:08ID:???「どのような概念か」と「どう使うのか」
を分けないで話すとひどいことになる、
ということだな。
0280nobodyさん
2006/12/02(土) 14:06:00ID:???PEARってOOPで書かれてるの?
クラスからインスタンスをnewして使うってのが多いですね。
>>279
って>>273の本の説明の仕方がごっちゃでよくないってことなんですか?
0281280
2006/12/03(日) 01:33:46ID:???サンプルコードが載っていて分かりやすかった。
UMLの説明はさすがに他書で勉強しないと、このページ数じゃフォローできんね。
(ないよりましだけど…)
デザインパターンが活用できるようになれば、OOPが楽しくなるだろうなー☆\(^o^)/
0282274
2006/12/03(日) 18:41:26ID:???眠くてまだ読んでない
ちょっと開いたけど
0283nobodyさん
2006/12/10(日) 19:06:09ID:???サーバサイドプログラミングでのOOかよ
期待して損した・・・
0285nobodyさん
2006/12/18(月) 23:57:03ID:VHWnyE8e0286nobodyさん
2006/12/19(火) 09:58:57ID:???Thanks!!!
http://ja.wikipedia.org/wiki/WebObjects
http://www.apple.com/jp/webobjects/
0287274
2007/01/11(木) 15:28:53ID:???そこらへんは著者さんのブログやサイトを参考に補完することにしようorz
0289nobodyさん
2007/01/21(日) 01:00:05ID:0bZ76xtYPHP5とJavaのメソッドオーバーロードって全然別物なの?
0290nobodyさん
2007/01/21(日) 01:03:49ID:iXs223c10291nobodyさん
2007/01/21(日) 01:20:02ID:dNBfq9SO組み方は理解できるよ。短時間で
0294nobodyさん
2007/01/21(日) 20:40:37ID:???手続き型の進化系がオブジェクト指向ってわけじゃないからね
手続き型的なロジックが有効なところもあればオブジェクト指向が有効なところもある
俺が確かに言えることは、オブジェクト指向は少なくとも万能ではないってこと
だからオブジェクト指向で書かないとスパゲティになるとかわけわかんないんだよ
むしろオブジェクト指向によって作られたスパゲティの方が多いという現実さえあるのに・・・
0296nobodyさん
2007/01/21(日) 22:02:30ID:dNBfq9SO0297nobodyさん
2007/01/22(月) 12:52:43ID:???スパゲッティには変わりないよ。
0298nobodyさん
2007/01/22(月) 22:25:58ID:???もうダメなのかな俺
0299nobodyさん
2007/01/22(月) 22:58:28ID:???0300nobodyさん
2007/01/22(月) 23:42:41ID:???消えた前担当が全然ドキュメント残してないってのもあるが、Perl使いの俺にはサパーリ。
まぁ何だ、愚痴だ。スマン。
0301nobodyさん
2007/01/22(月) 23:47:33ID:c6xxxnP6Webより抜粋 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"); これが表示結果
******************************************************************************
0302nobodyさん
2007/01/22(月) 23:54:07ID:???そこまで親切にコメント書いてあれば流石にわかるなぁ。
っていうかphpのオブジェクト指向って変に見辛いな。
0303nobodyさん
2007/01/22(月) 23:56:53ID:???0304nobodyさん
2007/02/05(月) 10:08:30ID:???0305nobodyさん
2007/02/05(月) 15:03:21ID:???0306nobodyさん
2007/02/06(火) 00:14:50ID:???それだから、PHPでオブジェクト指向はしない...と思っていたんだけど
最近ちょっとずつやってみている。
しかし一番最初に触った言語がPHPだったもんだから、この前
C言語を勉強しているときに「あー、やっぱPHPって気持ち悪いな」って思った。
なんか仕様がグダグダだし、10年くらいすれば忘れられそうだなとか思った。
0307nobodyさん
2007/02/06(火) 12:33:16ID:???0308nobodyさん
2007/02/06(火) 13:31:27ID:???0309nobodyさん
2007/02/06(火) 13:46:07ID:zUpPH+yJ0310nobodyさん
2007/02/06(火) 18:47:34ID:urembAfZちゃんとわかってないからか、酷いスパゲッティーになる気がして途中でやめた。
中途半端なオブジェクト指向を解説してるところはないのかな。
俺の今の思考↓。
クラスのメリット
・関数を纏められるの。
・纏めた関数だけ扱う変数を作れる。
・継承のおかげで、元は残したまま拡張した纏まりを別の場所で使える
0311nobodyさん
2007/02/06(火) 21:26:44ID:???気づいたら知らぬ間にOOで書いてるもんだ
0312nobodyさん
2007/02/07(水) 00:55:11ID:???クラスを処理関数郡的に捕らえると、クラスが肥大化したりするかもな。
どちらかというと、データに処理機能を添わせると考えた方がよさそげ。
0313nobodyさん
2007/02/08(木) 08:51:12ID:???処理を関数で小分けして、例外かましただけ、
みたいなのあるよね
継承、再利用、知るかボケみたいな
俺がまさに今やってることだけど(´・ω・`)
0314nobodyさん
2007/02/10(土) 02:36:40ID:???再利用や拡張のためにクラスを書いたり継承したりはあんまりない。
多態性を持たせるための手段として継承させる程度かな。
PHP5時代の本は買ったことないのだけど、PHP4の時代は
継承による拡張ばかり取り上げていて、カプセル化とか多態性の
ことはあまり取り上げられてなかった希ガス。まぁPHPもデザパタが
取り上げられているので多態性については出てくるでしょうけどカプセル化は?
PEARのDB(MDB2)もFetchモードがObjectのとき、StdClassだけじゃなくて
XmlSerializerみたいにクラスを指定できたらいいなと思うのは変?
>>310にあるメリットは、結果であって目的ではないと思う、
と思えるようになった今日この頃w
0315nobodyさん
2007/02/11(日) 02:42:25ID:???人類は新しいパラダイムを発明してくてる天才を必要としている
0316nobodyさん
2007/02/11(日) 05:00:24ID:???0317nobodyさん
2007/02/14(水) 02:12:06ID:???手続き型の部分から呼び出す方法に落ち着いた
MVCでいうと
Mをクラスで、Cを手続き型で、Vをテンプレートエンジンでやるというのが
わかりやすくてよいと思った。
ポリモーフィズムって、PHPで実現するのが面倒だと思うけど、どう?
0318nobodyさん
2007/02/19(月) 01:18:44ID:???0319nobodyさん
2007/02/19(月) 01:29:05ID:???>継承による拡張ばかり取り上げていて、カプセル化とか多態性の
>ことはあまり取り上げられてなかった希ガス。
そもそも4はメンバメソッド全てがパブリックなんで、
カプセル化の概念自体皆無。
説明しようにも、カプセル化の機能自体が無いので不可能。
0320nobodyさん
2007/02/19(月) 03:34:31ID:???言いたいことはわかるけど、概念自体皆無とか不可能ってのは言い過ぎじゃね?
そもそもオブジェクト指向ってオブジェクト単位で独立した存在にするだろ。
だから、カプセル化=独立 であって カプセル化=隠蔽 ではないと思う。
PEARもPrivateメソッドやフィールドは先頭にアンダーバー(_)をつけるなど、
コーディング規約で決めてるわけだし。
もちろん、規約であって言語仕様じゃないから、
簡単にアクセスできて崩壊してしまうがの。
0321nobodyさん
2007/02/19(月) 03:48:01ID:???> カプセル化=隠蔽 ではない
は言い過ぎだったかな。
オブジェクトを独立させる為にカプセル化を行う。
隠蔽はカプセル化を厳密に行う手段(手法)ってことでどぉ。
0322nobodyさん
2007/02/20(火) 05:29:07ID:???そんな規約定めてるPEAR自身、アンダーバーがついてるプライベートであるはずのメンバに
パブリックアクセスしてる件について
0323nobodyさん
2007/02/20(火) 05:34:26ID:???4の解説書なんだから、コーディング規約のことまでいちいち面倒見る必要無いだろ。
概念として説明してもかえって紛らわしいだけ。
だからPHP5が生まれたわけで。
0326nobodyさん
2007/02/20(火) 21:40:15ID:???0327nobodyさん
2007/02/20(火) 22:14:00ID:???0328nobodyさん
2007/02/20(火) 22:33:04ID:???0329nobodyさん
2007/02/21(水) 01:59:11ID:???それおもしろそうだな。
symfonyのsfMixer使ってやれば、
意外とそれなりにつかえるもんになりそう。
まぁ、ぐちゃぐちゃになりそうな気もしなくも無いけど…
0330nobodyさん
2007/02/21(水) 02:19:36ID:???そんなに難しくもなさそうだし
0331nobodyさん
2007/02/21(水) 02:53:14ID:???function hoge(string s) {・・・
っていう定義の関数をhoge(12);で呼び出した場合、エラーにすべき?例外投げるべき?暗黙的にキャストすべき?
0332nobodyさん
2007/02/21(水) 05:54:57ID:???と考えられるから
事前にstringにキャストされてたらok
int等ならfatal errorじゃない?
0333nobodyさん
2007/02/21(水) 18:05:58ID:???とりあえずpearのDB呼んでみる。
0336nobodyさん
2007/03/26(月) 00:50:31ID:yFIZR+Qo入力処理
画像処理
ログ処理
表示処理
とかにクラスが分かれている場合、それぞれでオブジェクトを作成するの?
0337nobodyさん
2007/03/26(月) 02:17:48ID:???0338nobodyさん
2007/03/26(月) 17:48:59ID:yFIZR+Qo0339nobodyさん
2007/03/27(火) 11:03:25ID:???0340nobodyさん
2007/03/27(火) 11:09:19ID:???0341nobodyさん
2007/03/28(水) 04:38:55ID:???体で感じるんだ。
0342nobodyさん
2007/03/28(水) 22:47:10ID:???0343nobodyさん
2007/04/23(月) 00:54:16ID:+2ZNQJB1いきなりTemplate Method ではまった。
本の通りに打ち込んでるのに、クライアント呼んでも
画面が空白のままだ。
試しにクライアントの中で文字列出力をしてみると、
スクリプトの先頭では出力できるけど、require_once
以降ではechoしても出力できない。
var_dumpでnewしたオブジェクトを表示させようとしても
空白だ。
何だこの現象は。
0344nobodyさん
2007/04/23(月) 00:55:54ID:+2ZNQJB1軽いノリで始めるにはPHP5は結構いい感じに思えた。
0345nobodyさん
2007/04/23(月) 11:54:30ID:???エラーメッセージは表示される設定になってるのか?
ダウンロードしたソースを実行してるのか
自分で打ち込んで実行してるのか?
0346nobodyさん
2007/04/23(月) 16:31:14ID:LAYu+KhNホームページ作成ソフトがあったらいいのに・・・。
もし、プロ並みにキレイなホームページが作成が出来たとしたら、
情報商材で一旗あげようと思っているあなたの人生は変りますか?
【早くも成功者続出!】起業サイトビルダー
http://www.infotop.jp/click.php?aid=16484&iid=5683
0347343
2007/04/24(火) 00:02:00ID:yjQgQozI環境はPHP5.2.1 Apache2.0.59 WindpowsXP です。
error_reportingは E_ALL | E_STRICT っす。
だけど、HTML吐かれてるんだよね。で、そのHTMLソース見ると、
スクリプトに指定もしてないDOCTYPE宣言とか、METAタグとか、
空のBODYタグとか入るんだけど、これどういうときなるんだろ?
ちなみに、頭に叩きこうもと思って自分で打ち込んだやつ。
ダウンロードしたやつは動いた。違いといえば、require_once
のところを別の<?php ?>ブロックにしてないところだけど・・・。
0348nobodyさん
2007/04/24(火) 00:51:50ID:????>の後に空白とか入ってないか確かめてみ
0349nobodyさん
2007/04/24(火) 02:17:23ID:0JhT4MiQちなみに echoじゃなくて、var_dump()の方
0350343
2007/04/24(火) 02:42:26ID:yjQgQozI?>の後の空白はなかったです。
ほかにもHTMLモードに移行するような箇所はなし。
もっかい見てみますけど・・・。
>>349
echoもvar_dumpも出力してくれません。どうやっても、
DOCTYPE宣言、METAタグ、要素が空のBODYタグが出力され、
結果、真っ白な画面に。
しかし、こんな簡単なスクリプトで・・・。
php.iniの問題でしょうか?phpinfo()は動いてますが。
オブジェクト指向と関係ない話で申し訳ない。
■ このスレッドは過去ログ倉庫に格納されています