PHPでOOP (894レス)
上下前次1-新
376: 2008/02/13(水)15:17 ID:??? AAS
簡単にいうと
規模が小さいほどOOPの必要性が無くなり
規模が大きいほどOOPの必要性がでる
377: 2008/02/13(水)15:18 ID:??? AAS
規模が小さいならスパゲッティコードが最強てこと
大きいならOOPじゃないとはなしにならない
378: 2008/02/13(水)15:21 ID:??? AAS
OOを議論するのにPHPをベースにするのはどうかと思うが、PHPにおけるOOを議論することは良いんじゃないの。
あと、規模というよりは複雑さだろうな。
379: 2008/02/13(水)15:35 ID:??? AAS
OOPの話は荒れる元だな・・・よし、
〜〜〜〜〜〜〜〜〜ここからOOPネタ禁止〜〜〜〜〜〜〜〜〜〜〜〜〜〜
380: 2008/02/13(水)16:30 ID:??? AAS
(OO)P
↑
マスコット(笑)
名前はオッピー君。
育ち盛りのオスです。
パスタは嫌いだよ!
最近、俺俺オブジェクト指向にはまって
同僚達から嫌われる羽目にw
そんな落ち目のオッピー君と一緒にオブジェクト指向の真髄を極めよう!
381: (OO)P 名前はオッピー君。 2008/02/13(水)16:32 ID:??? AAS
おいらに力を・・・・
382: 2008/02/13(水)20:00 ID:??? AAS
どうして荒らしが粘着し始めたのだろう。
383(5): 2008/02/13(水)23:26 ID:yj0olWG5(1) AAS
思い切って質問してみる。
テーブルAの操作をするクラスA、テーブルBの操作をするクラスBを作った。
両方のクラスで個別に接続するより、1番最初に接続して、その接続IDを使って処理させたほうがいいのかな?
384(1): に ◆lKs5QMUHoA 2008/02/13(水)23:56 ID:??? AAS
>>383
取得するテーブルの数ごとに別々に接続はしない方がいいよ。
DBの処理負荷が大きくなるから。
私だったら、テーブルごとにクラスを分けたりはしないかな。
テーブルの構成そのものを隠蔽するために。
検索と更新は同じフォーム上では行わない前提にして、こんな感じにするかな。
// 接続に関するクラス
// PostgreSQLに接続する為のメンバとメソッドを持つ。
class CDB_PostgreSQL
// MySQLに接続するためのメンバとメソッドを持つ。
省13
385(1): 383 2008/02/14(木)00:16 ID:nkc61sHT(1) AAS
コードまで丁寧にありがとう。
クラス設計は、慣れがないと難しいね……。
> このクラスのメンバに上記2つのどちらかのDBクラスを持たせる。
申し訳ないんだけど、「メンバにクラスを持たせる」の意味が理解できない。
少し補足してもらえるとありがたいんだけど、ダメかな?
386: 2008/02/14(木)03:29 ID:??? AAS
規模と言うか、どれだけ複雑なロジックがあるかだよね。2ちゃんねるは物凄く規模が大きいけど、ロジックはごく単純。ただの掲示板だもん。
387: 2008/02/14(木)03:30 ID:??? AAS
テーブルAを操作するモデルクラスAとは行かない場合もあるよ。リレーションがある場合。
388: 2008/02/14(木)05:53 ID:??? AAS
テーブルクラスはDBクラスと分けて
テーブルの中からgetConnection()するのが普通だよ
コネクション管理とテーブルを切り離す
389(2): に ◆lKs5QMUHoA 2008/02/14(木)08:04 ID:??? AAS
>>385
設計の仕方は、その人が作ろうとするアプリ次第なので、その人が
やりやすいスタイルでやっていいと思うよ。
OOPの設計理論は、あくまで一般論なので、必要性を感じないのであれば、
必ずしも守らなくていいだろう。
私は、DBをPostgreSQLからMySQLへ変換する必要性も生じることを
想定した設計をしただけだよ。
こうやっておけば、書き換えるコードも少なくて済む。
class CSearch_Personal{
// DBを格納する
省13
390(2): に ◆lKs5QMUHoA 2008/02/14(木)08:07 ID:??? AAS
どうしてもテーブル単位でクラスを作る場合は、こんな感じになるのかな。
// PostgreSQLへ接続処理などを管理する基底クラス(抽象)
class CDB_PostgreSQL_Connection
// TableAの操作を管理するクラス。
class CDB_TableA extend CDB_PostgreSQL_Connection
// TableBの操作を管理するクラス。
class CDB_TableB extend CDB_PostgreSQL_Connection
391: に ◆lKs5QMUHoA 2008/02/14(木)08:26 ID:??? AAS
OOPの設計をする場合は、処理を文章で書き表して、
その中から名詞や役割を抽出していけばいいと聞いたことがある。
その単位を1つのオブジェクトとして設計する。
1つのオブジェクトを、1つのクラスとしてコーディングする。
392(1): 2008/02/14(木)08:57 ID:??? AAS
>>390
CDB_PostgreSQL_Connectionを拡張してCDB_TableAにするのはまずい
子クラスと親クラスはis_a関係にしないといけない
言い換えると子クラスは親クラスの範疇に含まれていないといけない
テーブルがコネクションの一部でないことは明らか
393(2): 2008/02/14(木)10:58 ID:??? AAS
異論はあるだろうけど、SQLに関しては、パフォーマンスの都合上実装の仕方が限定されるから、
モデルに合わせて考えるのではなくて、SQLを考えてから、それに会うモデル(クラス構造)を考えた
方が良いと思う。
394: 2008/02/14(木)11:05 ID:??? AAS
>>393
kwsk
395: 2008/02/14(木)11:09 ID:??? AAS
具体的に聞かれないと、答えようがない。
上下前次1-新書関写板覧索設栞歴
あと 499 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.037s