2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

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
名前: E-mail (省略可) :

read.cgi ver.24052200