トップページphp
435コメント132KB

Webでオブジェクト指向プログラミング

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/12/02(金) 11:18:17ID:lnZM9OlM
サーバーサイドWebプログラミングのOOスレです。

・OOP、MVC、デザパタなどのコンセプト的な話題
・OOにまつわる言語比較(言語批判はその言語で開発してる人に失礼にあたることが多いのでなるべく禁止でお願いします)
・保守、再利用、生産性、開発環境などの実践的な話題
・Webサーバ、DBなどの外部との親和性に関する問題
・学習、教育などの方法論

などなど。

前スレ
PHPでオブジェクト指向プログラミング
http://pc8.2ch.net/test/read.cgi/php/1113724557/
0002nobodyさん2005/12/02(金) 11:41:45ID:???
乙カレーション。
ついでにズザー
0003nobodyさん2005/12/02(金) 11:54:27ID:???
見かけた関連スレ(内容未確認)

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/


良質なサイトや書籍など、情報ある人プリーズ
0004nobodyさん2005/12/02(金) 11:57:58ID:???
>>3
ゴミ情報邪魔
0005nobodyさん2005/12/02(金) 11:59:46ID:???
>>4
うるさいわね
0006nobodyさん2005/12/02(金) 12:05:33ID:???
MVC はともかく、デザパタとか入るとメタ議論好きが入ってきそうだなぁ。
適宜ム板、マ板に誘導していかないと。
0007nobodyさん2005/12/02(金) 12:08:49ID:???
そうだね。
とりあえず議論がWebプログラミングに関係なくなった時点でスレ違いってことで。
0008nobodyさん2005/12/02(金) 16:18:39ID:???
前スレのスレタイと比較すると、ぱっとみJAVA関連のスレと
思ってしまう俺は古い人間なのか?
0009nobodyさん2005/12/02(金) 16:23:36ID:???
ここはSmallTalkスレですよ?
0010nobodyさん2005/12/02(金) 16:36:26ID:???
webページレベルではオブジェクト思考でなくてもまぁ、苦労はしないけど、webシステムになると、データやモジュールをクラス管理しないとやってられない。この板でスレ違いって言う人間こそスレ違い。
0011nobodyさん2005/12/02(金) 16:52:18ID:???
素人趣味プログラマですが、
綺麗にOOが書けません><
プロの方のソースを拝見させてもらうと感動します><
0012nobodyさん2005/12/02(金) 17:33:27ID:???
>>10
それは別に Web に限らないからスレ違いなのでは?
むしろ webprog でやらない方が有意義になると思われ

>>11
ごめん、それはどれのこと?
公開されてるやつで、プロが書いたかどうか分かるものってあるの?
0013nobodyさん2005/12/02(金) 17:40:43ID:???
>>11
Apahce JakartaプロジェクトやStrutsプロジェクトなど、
オープンソースソフトウェアのソースコードは公開されているから参考にしてみれば?
0014nobodyさん2005/12/02(金) 18:38:14ID:???
>>1乙。

このスレ、荒れるだろうねえ。
0015nobodyさん2005/12/02(金) 18:48:51ID:???
>>14
俺様が荒れないように見張っているので大丈夫だ。安心してくれ。
0016nobodyさん2005/12/02(金) 20:04:21ID:4lCzPlwh
>>14
議論で荒れるならいいけどね。
アホとかバカとか低脳な荒れ方はしないといいんだけど。
0017nobodyさん2005/12/02(金) 21:25:10ID:???
JavaScriptでOOって無理があるだろ
派生クラスだとprivateプロパティとして使いたい部分が共有されてしまう。
全部publicならできるのか?
0018nobodyさん2005/12/03(土) 00:11:04ID:???
<?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;
}
}
0019nobodyさん2005/12/03(土) 00:12:07ID:???

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;
}
}
0020nobodyさん2005/12/03(土) 00:12:47ID:???
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"]);
}
}
?>
0021nobodyさん2005/12/03(土) 00:14:16ID:???
<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でやるとこんな感じ?
ひねりやセキュリティーは無視したけど
概念だけならこんな感じで十分だと思う

ま、アクセス権の関係で動かないかもね
0022nobodyさん2005/12/03(土) 00:24:54ID:???
static $con;
if ( $con === null ) {

とか、やりたくならんか?
0023nobodyさん2005/12/03(土) 02:10:17ID:???
>>17
なぜJavaScript?

>>22
それだとインスタンスごとにコネクションを保持っていうスタンスから外れるね。
0024nobodyさん2005/12/03(土) 11:33:28ID:???
どっちかっていうと

static $instance = false;
if ($instance === false) {
$inctance = new . . .

じゃないのphp4ならだけど
0025nobodyさん2005/12/03(土) 11:40:42ID:???
>>24
それってもしかしてシングルトンの話じゃ・・・?
0026nobodyさん2005/12/03(土) 11:47:30ID:???
VOがDB持ってるのって概念的に変じゃね?
0027nobodyさん2005/12/03(土) 11:52:44ID:???
>>17
普通にプロトタイプOOできるよ
アクセス制限したければprototype.js使うとか
0028nobodyさん2005/12/03(土) 13:42:25ID:???
JSって名前の隠蔽が関数かブロックのローカルスコープでしかできないからOO的な隠蔽は無理だよね。
あの言語は興味としては面白いけど、OOを生かした開発向けじゃないと思うけど。
つーかサーバーサイドでJSやってる奴いるの?
0029nobodyさん2005/12/03(土) 16:05:11ID:???
シラネ。
隠蔽やポリモーフィズムは他言語と変わらん。
0030nobodyさん2005/12/04(日) 02:35:54ID:???
出た!ポリモーフィズム!
0031nobodyさん2005/12/04(日) 14:51:34ID:???
>>30
じゃあ何て言うんだよこの馬鹿が。
0032nobodyさん2005/12/04(日) 15:22:04ID:???
>>30-31
他所へ行って構わなくてよ。
0033nobodyさん2005/12/05(月) 10:20:07ID:???
このスレ、ネタがないね。
とりあえず思ったことを書いてみるテスト。

MVCのM(MVCフレームワークに寄りかからない場合でもビジネスロジックをつっこむ部分)の設計について。
Webの場合は細かいエンティティをModelにしてしまうとかえって見通しが悪くなるから、割と大雑把なくくりでModelにした方が設計しやすい+実装しやすい+パフォーマンス的にも良いんだよね。
でもそうすると、関数でもいいものがメソッドになっただけで、ベタ書きロジックのラッパに過ぎないような実質シングルトンがいくつもできたりして。
それってオブジェクト指向という考えから反対方向に行ってしまってる。
形だけがオブジェクト指向風になってるって感じ。
もうちょっと勉強してくるわ。
0034nobodyさん2005/12/05(月) 11:12:40ID:???
もうちょっと具体的に頼む
0035nobodyさん2005/12/05(月) 18:30:47ID:???
単に設計がいまいちなだけじゃね?
ちゃんと考えて組めば、Mだけ客によって取り替えてウマーに出来ると思う。
まあ外向けとかで見栄えも気にするならMに加えてVも弄るから、分けずにMV+Cでもいいじゃんって発想?
0036nobodyさん2005/12/11(日) 16:50:09ID:TPyd81O7
PHP5でオブジェクト指向プログラミングって、
仕事ではまだほとんどやってない?
0037nobodyさん2005/12/12(月) 00:20:15ID:???
PHP 5 がまだなのかオブジェクト指向がまだなのか
どっちを聞きたいんだろ
0038nobodyさん2005/12/12(月) 05:07:04ID:???
PHP5からオブジェクト指向とったら何も残らないじゃん。
0039nobodyさん2005/12/12(月) 06:24:55ID:???
PHP5の仕様を学びながら同時にオブジェクト指向も学べるっていう
素敵本ってないですかねぇ?
0040nobodyさん2005/12/12(月) 07:15:15ID:???
>>39
OOやるならJavaのがいいと思う。
実際のところPHPだけでOO理解できた奴いるの?
0041nobodyさん2005/12/12(月) 08:01:46ID:???
まぁいいサンプルがあればいいんじゃないの?
おれは知らないけど
0042nobodyさん2005/12/12(月) 08:25:28ID:2/Uq4nev
PHP5で__CLASS__ってやるとクラス名を取得できるけど、staticメソッド内で

abstract class Hoge { static public function method() { echo "Fuga"; } }
class Fuga extends Hoge {}
Fuga::method();

これで"Fuga"って表示させる、みたいな。
■ このスレッドは過去ログ倉庫に格納されています