Webでオブジェクト指向プログラミング
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/12/02(金) 11:18:17ID:lnZM9OlM・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/
良質なサイトや書籍など、情報ある人プリーズ
0006nobodyさん
2005/12/02(金) 12:05:33ID:???適宜ム板、マ板に誘導していかないと。
0007nobodyさん
2005/12/02(金) 12:08:49ID:???とりあえず議論がWebプログラミングに関係なくなった時点でスレ違いってことで。
0008nobodyさん
2005/12/02(金) 16:18:39ID:???思ってしまう俺は古い人間なのか?
0009nobodyさん
2005/12/02(金) 16:23:36ID:???0010nobodyさん
2005/12/02(金) 16:36:26ID:???0011nobodyさん
2005/12/02(金) 16:52:18ID:???綺麗にOOが書けません><
プロの方のソースを拝見させてもらうと感動します><
0012nobodyさん
2005/12/02(金) 17:33:27ID:???それは別に Web に限らないからスレ違いなのでは?
むしろ webprog でやらない方が有意義になると思われ
>>11
ごめん、それはどれのこと?
公開されてるやつで、プロが書いたかどうか分かるものってあるの?
0013nobodyさん
2005/12/02(金) 17:40:43ID:???Apahce JakartaプロジェクトやStrutsプロジェクトなど、
オープンソースソフトウェアのソースコードは公開されているから参考にしてみれば?
0016nobodyさん
2005/12/02(金) 20:04:21ID:4lCzPlwh議論で荒れるならいいけどね。
アホとかバカとか低脳な荒れ方はしないといいんだけど。
0017nobodyさん
2005/12/02(金) 21:25:10ID:???派生クラスだとprivateプロパティとして使いたい部分が共有されてしまう。
全部publicならできるのか?
0018nobodyさん
2005/12/03(土) 00:11:04ID:???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:???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:???<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:???if ( $con === null ) {
とか、やりたくならんか?
0023nobodyさん
2005/12/03(土) 02:10:17ID:???なぜJavaScript?
>>22
それだとインスタンスごとにコネクションを保持っていうスタンスから外れるね。
0024nobodyさん
2005/12/03(土) 11:33:28ID:???static $instance = false;
if ($instance === false) {
$inctance = new . . .
じゃないのphp4ならだけど
0026nobodyさん
2005/12/03(土) 11:47:30ID:???0028nobodyさん
2005/12/03(土) 13:42:25ID:???あの言語は興味としては面白いけど、OOを生かした開発向けじゃないと思うけど。
つーかサーバーサイドでJSやってる奴いるの?
0029nobodyさん
2005/12/03(土) 16:05:11ID:???隠蔽やポリモーフィズムは他言語と変わらん。
0030nobodyさん
2005/12/04(日) 02:35:54ID:???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仕事ではまだほとんどやってない?
0037nobodyさん
2005/12/12(月) 00:20:15ID:???どっちを聞きたいんだろ
0038nobodyさん
2005/12/12(月) 05:07:04ID:???0039nobodyさん
2005/12/12(月) 06:24:55ID:???素敵本ってないですかねぇ?
0041nobodyさん
2005/12/12(月) 08:01:46ID:???おれは知らないけど
0042nobodyさん
2005/12/12(月) 08:25:28ID:2/Uq4nevabstract class Hoge { static public function method() { echo "Fuga"; } }
class Fuga extends Hoge {}
Fuga::method();
これで"Fuga"って表示させる、みたいな。
004342
2005/12/12(月) 08:28:10ID:2/Uq4nev× これで"Fuga"って表示させる、みたいな。
○ これで"Fuga"って表示させるにはどうしたらいいですか?
0044nobodyさん
2005/12/12(月) 08:33:41ID:???004542
2005/12/12(月) 08:41:37ID:???get_class($this)のstatic版みたいなのはないですかね?
0046nobodyさん
2005/12/12(月) 09:03:12ID:???俺もこの仕様はなんとかならんものかと思ってる
但しその例だと
Fuga::method() →Fugaにない→親クラスのメソッドが呼ばれる
オーバーライドされていないため実際にはHuga::method()がコール
されるわけで親クラスの名前(Hoge)が表示されるのは正しい動作だと思う
0047nobodyさん
2005/12/12(月) 09:06:42ID:???0048nobodyさん
2005/12/12(月) 09:13:38ID:???下で隠蔽しなきゃそのまま晒される
004942
2005/12/12(月) 09:48:14ID:???無理ですかねぇ。ちょっと頑張ってみたけどやっぱ無理でした。
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メソッドってオーバーライドできないんですね・・・。
0050nobodyさん
2005/12/12(月) 10:04:02ID:???0051nobodyさん
2005/12/12(月) 10:06:47ID:???オーバーライドという概念自体が存在しない
005342
2005/12/12(月) 10:55:39ID:???納得。そうなんですか。継承はされるのに・・・、と考えるとむつかしいですね。
まあとりあえずできました!!
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とか超微妙。
005542
2005/12/13(火) 13:04:20ID:???返事が遅れて申し訳ない。・・・といってもその間にレス来てないけど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よりマシかなって程度で。
まだマニュアルを引きつつ勉強中な身なんで、つっこみとかあったらよろしくです。
0056nobodyさん
2005/12/13(火) 23:32:56ID:???0057nobodyさん
2005/12/16(金) 17:53:18ID:CZKjM08Duse MT::Bootstrap App => 'MT::App::CMS';
って、どういう意味ですか?
分かるエロくない人、どうかお教えください。
0058nobodyさん
2005/12/16(金) 17:54:24ID:CZKjM08Dあと、勝手にMovable Typeがオブジェクト指向と判断してます。
0060nobodyさん
2005/12/21(水) 21:11:28ID:???__autoload() を使おうとするとどうしても一つのフォルダに
クラス定義ファイルを全部ぶち込むことになるんだけど
0061nobodyさん
2005/12/21(水) 22:45:40ID:???うんこぷー
0062nobodyさん
2005/12/22(木) 05:39:54ID:???__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);
}
なんか書いてて虚しくなってきたよ・・・
0063nobodyさん
2005/12/22(木) 15:26:55ID:ORKD8JMRセッターゲッター介してアクセスする?
あるいは自分の中のことだから
直アクセスする?
Dotch?
0064nobodyさん
2005/12/22(木) 16:04:35ID:???自分のクラス内なんだから直アクセスでしょ。
クラス内でもセッタゲッタしたいってことは、そのプロパティによっぽど整合性が必要なんだろうから、場合によっては必要な部分だけabstractなクラスとして抽出して問題のプロパティをprivateにする。
ってそれWebプログラミングとどういう関係があるの?
0065nobodyさん
2005/12/22(木) 16:56:29ID:???0066nobodyさん
2005/12/22(木) 17:02:57ID:???別段論争になるようなことじゃないと思うけど
0068nobodyさん
2005/12/22(木) 18:58:37ID:???0070nobodyさん
2005/12/22(木) 22:31:30ID:???スクリプト系はMVC的に糞ってなことにはもうならないな
0071nobodyさん
2005/12/22(木) 23:00:25ID:???0073nobodyさん
2005/12/23(金) 04:52:29ID:???0074nobodyさん
2005/12/23(金) 05:24:31ID:???Rubyの方がPHPより先に世の中に知れ渡ってたらRubyの圧勝だったかもしれないが、今更PHPと比較して生産性高いとも思えないし(飽くまでWeb方面では)。
0075nobodyさん
2005/12/23(金) 06:47:01ID:???0076nobodyさん
2005/12/23(金) 10:17:08ID:???0077nobodyさん
2005/12/23(金) 12:51:21ID:???unixハッカーな人たちにはperlやrubyが今後も支持されていくでしょう。phpは違う層の人たち向け。
0078nobodyさん
2005/12/23(金) 13:53:17ID:???unixハッカーってなんだwww
そりゃC使いry
0079nobodyさん
2005/12/23(金) 14:07:50ID:???0080nobodyさん
2005/12/23(金) 14:15:32ID:???MVC以外で。
0081nobodyさん
2005/12/23(金) 18:01:01ID:???phpの生産性って、素人を安い人件費で大量に使えるってだけだからねえ。
RoRは馬鹿には理解出来ないから、流行る事は無いだろう。流行るためには馬鹿でも理解出来る事が必要だし。
0082nobodyさん
2005/12/23(金) 18:18:43ID:???Lisp信者にもその考えの奴多いんだよなぁ。
0083nobodyさん
2005/12/24(土) 02:04:43ID:???0084nobodyさん
2005/12/24(土) 13:15:52ID:???0085nobodyさん
2005/12/24(土) 20:22:24ID:???0086nobodyさん
2005/12/24(土) 21:25:57ID:???0087nobodyさん
2005/12/25(日) 02:32:29ID:???って言ってほしいんだろきっと。
LispはまだしもRoRを難しいとか言う奴初めて見た。
PHPしかできない奴のレベルが低いってのはまあ当たり前の話だが。
0088nobodyさん
2005/12/27(火) 16:43:08ID:Zix1qzzJすみません、エロくても大丈夫になりましたのでどなたか教えてください。。。
分かった事
MT/Bootstrap.pmが関係?
0089nobodyさん
2005/12/27(火) 17:59:00ID:Zix1qzzJ0090nobodyさん
2005/12/27(火) 22:04:42ID:???0091nobodyさん
2005/12/28(水) 02:23:24ID:FTSvjaEDまあアレだ、Ruby厨には聞いていないから帰れということらしい。
>>57-58
Bootstrap.pmでimport関数に%param{App}を渡していると思うのだがその辺調べてみてくれ。
0092nobodyさん
2005/12/28(水) 09:12:28ID:???配布スクリプトの読めない部分を解説しちゃる
ttp://pc8.2ch.net/test/read.cgi/php/1094842959/l50
0093nobodyさん
2006/01/01(日) 02:30:26ID:???なんというか、馬鹿丸出しな発言だな。
そもそもRoRが使えれば、Ruby使えるわけだから、
PHPしか使えないなんてことは成り立たないわけで。
逆にRoRしか使えないやつはPHP使えないしな。
0094nobodyさん
2006/01/01(日) 13:35:44ID:???0097nobodyさん
2006/01/01(日) 16:18:04ID:???0098nobodyさん
2006/01/05(木) 18:20:00ID:???0099nobodyさん
2006/01/05(木) 18:36:44ID:???とりあえず、仕事で使われてるのをみたことがないな
あと、Ruby関連は書籍がちゃんとしたのが少なくない?
ってかすれ違いなんで、こういうのはマ板で
0100100
2006/01/07(土) 17:47:26ID:???0101nobodyさん
2006/01/07(土) 18:20:48ID:???0102nobodyさん
2006/01/08(日) 16:02:42ID:???正:使わない
0103nobodyさん
2006/01/19(木) 01:21:15ID:Mz+RYmqL0105nobodyさん
2006/01/27(金) 12:31:26ID:61WrCUJbでもスパゲティの原因になったりしない?
いったいいつcatchされるんだろう・・・?みたいな。
もしくは、ここのcatchは何のためにあるんだろう・・・?みたいな。
Javaの場合throws書かないといけないけど。
そのまま便利さを享受すべきか、全てのメソッドにthrows相当のものをコメントとして加えておくべきか、ご意見いただけると幸いですw
0106nobodyさん
2006/01/28(土) 18:58:27ID:???@throws で記述しておく。
処理を続行できないような致命的な例外の類は一切キャッチしない or
トップレベルですべての Exception を catch するようにしてる。
0107nobodyさん
2006/01/29(日) 22:11:15ID:???0108nobodyさん
2006/01/30(月) 23:29:09ID:l8Eu1UQ7一応MVCモデルとオブジェクト指向プログラミングに基づいて作成しています。
もしよろしかったらご覧いただければ幸いです。
http://pharon.lolipop.jp/
0109nobodyさん
2006/01/31(火) 01:43:20ID:???Webサイトが思い切りテーブルレイアウトで萎えた。
普通に見出しと本文でいいじゃん。
なんか怪しげなローマ字とか使ってるし。
詳しくは読んでないけど、まずはその素人臭さを払拭しないと
使ってみる気にもなれんね。
0110nobodyさん
2006/01/31(火) 10:49:03ID:???0111nobodyさん
2006/01/31(火) 11:17:28ID:???まぁ、本人とも限らないが…。
0112nobodyさん
2006/01/31(火) 13:18:08ID:???0113nobodyさん
2006/01/31(火) 14:18:11ID:???0114nobodyさん
2006/02/02(木) 12:00:05ID:???0115nobodyさん
2006/02/03(金) 20:05:36ID:3T+q60Jd0116nobodyさん
2006/03/24(金) 08:23:48ID:???0117nobodyさん
2006/03/27(月) 23:45:30ID:NOFET43qで、 Web サイトを PHP で組もうと思ってるんだけどオブジェクト指向でやったほうがベター?
まだ覚えてないけどな 。
0120nobodyさん
2006/03/28(火) 09:41:36ID:64m8EIcOクラスとか使いはじめると、この足取りの軽さが激減するし、だったらJAVA使ったほうが賢いのでは。
大体WEBプログラミングでオブジェクト指向を得意げに使うこと自体が、スパゲティ大好きって言ってるようなもんだな。
0121nobodyさん
2006/03/28(火) 10:23:08ID:???「だったら Java」ってやつは最初から PHP なんか使わないか、
PHP も Java も分かってないかのどっちかだな
0122nobodyさん
2006/03/28(火) 10:51:45ID:???特に PHP4 のクラスの実装はクソなので OOP するのも面倒だなと思っていた。
しかし、デスマってるプロジェクトに投入されて、
そのプロジェクトが index0001.php4 とか index0134.php4などと
200個くらいのファイルを羅列しているのを見たとき、
たとえ、PHP4 であろうとも OOP を導入すべきだという主張にかわったよ。
OO でなくとも、Logic と View は分けるべきだ。
できるなら、MVC でお願いします。
0123nobodyさん
2006/03/28(火) 12:02:55ID:???Javaでは当たり前なことを
なぜこんなスレタイをたてるのか。
どうせならStrutsやJSF< Tapestry, Seasar2など
フレームワーク関係のスレタイにしておけばよかったのに。
0124nobodyさん
2006/03/28(火) 12:04:50ID:???一応JavaScriptでprivateにできるテクニックはあるあしい。
ローカル変数を使って。Ajaxに使われている
Prototypeというフレームワークもどきに使われているようだ。
かなり小汚いテクニックで読みにくいソースコードだが。
0126nobodyさん
2006/03/28(火) 12:07:24ID:???しかし、PHPは未だに名前空間が無いから
PHP5からJavaライクなオブジェクト実装が
サポートされても使い勝手は相変わらず悪い。
ini_get()してからini_set()するのはもうウンザリ。
__autoloadだか忘れたがこれをうまくつかって
Javaのimportそっくりなことできそうにみえるが、
それも使い勝手が悪い。
0128nobodyさん
2006/03/28(火) 12:40:59ID:???なんかムリにprivateにしなくていいじゃんと思うようになるよ
Perl も PHP 4 も運用でカバーしてるんだし
0129nobodyさん
2006/03/28(火) 12:57:27ID:???インスタンス変数はそもそも隠蔽する対象じゃないんだな。
2.0でclassとか拡張されてるから、また変わってくると思うけど。
0131nobodyさん
2006/03/28(火) 13:59:03ID:???軽快感が重要というのは同意だけど、別にそれだけがPHPのメリットじゃないわけで。
クラスだって軽く使おうと思えば使えるし、お手軽なOOPという観点ならPHP>JAVAだと思う。
その分できないこともあるけどな。
0132nobodyさん
2006/03/28(火) 14:02:21ID:???寝ぼけてたか?
0133nobodyさん
2006/03/28(火) 20:32:38ID:???0135nobodyさん
2006/03/28(火) 21:42:58ID:???そんなことしたら、バカみたいなコードしかかけなくなる。
0137nobodyさん
2006/03/28(火) 22:06:27ID:???ぐーぐるさん的には
PHP 2,320,000,000 件
Ruby 107,000,000 件
この圧倒的な差はいったい!?
0138nobodyさん
2006/03/28(火) 22:28:04ID:???0139nobodyさん
2006/03/28(火) 23:02:46ID:???名前空間がないってことか?
0140nobodyさん
2006/03/29(水) 02:32:56ID:???0141nobodyさん
2006/03/29(水) 22:51:03ID:???自分はアクセスカウンターとか掲示板など、いろんな汎用スクリプトを作ってるんだけど
今後新しいスクリプトが簡単に作れるように、クラスモジュールを構築しながら作成してるから
開発効率がどんどんよくなってきている。
0142nobodyさん
2006/03/29(水) 23:13:01ID:???0143nobodyさん
2006/03/29(水) 23:15:45ID:???0147nobodyさん
2006/03/30(木) 15:06:58ID:???クラスとは
一緒に使われる情報(データ・関数)をその中にまとめ、別々に使われる情報を除外するためのもの
です。
0148nobodyさん
2006/03/30(木) 16:16:42ID:???0149nobodyさん
2006/03/30(木) 16:29:49ID:???ためにあると思っておいて間違いではない
コードにまとまりがないうちは不便だが、まとまりが
ない段階でダメだと思えばいい
0150nobodyさん
2006/03/30(木) 17:18:32ID:???0151nobodyさん
2006/03/30(木) 21:38:19ID:???0152nobodyさん
2006/03/31(金) 00:12:08ID:???代わりにクラスを使うしかない。
0154nobodyさん
2006/03/31(金) 05:07:58ID:mYeRlPC0PHPのクラスがパッケージの代替でしかないなら、インスタンス化は無意味ってこと?
$hoge = new Hoge; $hoge->kansuu();
より
Hoge::kansuu();
の方が早いもんね
0155nobodyさん
2006/03/31(金) 05:13:33ID:???0156nobodyさん
2006/03/31(金) 05:31:31ID:???グローバル変数使わないだけなら定数使うとかあるし
0157nobodyさん
2006/03/31(金) 05:36:54ID:???フレームワークなんて継承前提だし
0158nobodyさん
2006/03/31(金) 08:04:27ID:???0159nobodyさん
2006/03/31(金) 08:09:59ID:???普通の関数でいいと思うならそれでいけばいいじゃんてことでしょ
つかそういうスレつけてる人はこのスレ覗く必要全然ない
0160nobodyさん
2006/03/31(金) 08:38:38ID:???・クラスがいい人はクラスでやればいい
↑ここまではおk。それじゃ、
・クラスがいい人は何のためにクラス使ってるの?しかもPHPでw ←いまここ
0161nobodyさん
2006/03/31(金) 08:56:52ID:???1.カプセル化
2.継承
3.ポリモフィズム
の、3つが何故良いのかを説明できれば、OOPの利点が見えるんじゃないの?
詳しい人↓よろ。
0162nobodyさん
2006/03/31(金) 08:59:41ID:???0163nobodyさん
2006/03/31(金) 09:03:25ID:???2.継承
3.ポリモフィズム
ならJavaのほうが初めからそういうふうに設計された言語だけあって有利じゃないの?
PHPのクラスにそういう利点て見出せないな。
0166nobodyさん
2006/03/31(金) 09:31:23ID:???OOPに最適化されているとは言いがたいんだけど、
それでもクラスは使った方が便利だよ。
0167nobodyさん
2006/03/31(金) 09:43:30ID:???0168nobodyさん
2006/03/31(金) 09:49:02ID:???0171nobodyさん
2006/03/31(金) 14:59:28ID:???読み方 : カプセルか
分野 : プログラミング > オブジェクト指向
オブジェクト指向プログラミングが持つ特徴の一つ。
データとそれを操作する手続きを一体化して「オブジェクト」として定義し、オブジェクト内の細かい仕様や構造を外部から隠蔽すること。
外部からは公開された手続きを利用することでしかデータを操作できないようにすることで、個々のオブジェクトの独立性が高まる。
カプセル化を進めることによりオブジェクト内部の仕様変更が外部に影響しなくなり、ソフトウェアの保守性や開発効率が高まり、プログラムの部分的な再利用が容易になる。
で、PHPで実用的なカプセル化ってどんなのよ?
0172nobodyさん
2006/03/31(金) 15:56:15ID:???PHP(4)ではカプセル化は無理。
だから、コメント上で、
どの情報にはアクセスできてどの情報はアクセスを禁止するかを明言する必要がある。
だからPHP(4)に関して言えば、OOPによるカプセル化の利点はない。
0173nobodyさん
2006/03/31(金) 17:08:32ID:???インスタンス化する必要ないってことでOK?
でもコンストラクタでの初期設定ができないか…
0174nobodyさん
2006/03/31(金) 17:39:36ID:CdaR7r2n応用例を作ってみました。
文字列を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
0175174
2006/03/31(金) 17:44:05ID:???例えば >>174 のソースの中にある
euc_jp_reader クラスや shift_jis_reader クラスなんかは Singleton 前提のクラスですが、
char_iterator クラスのコンストラクタの引数となるため、インスタンス化してやる必要があります。
Singleton 前提のクラスを敢えてインスタンス化する利点の一つは、
ポリモルフィズムが応用できるってことかな。
0176nobodyさん
2006/03/31(金) 18:30:26ID:???なるほど
○他の関数の引数に出来る
○その結果クラス名を指定しないメソッド呼び出しも可能になる
(ポリモーフィズム)
ってことだね
0177nobodyさん
2006/03/31(金) 18:35:59ID:???2つ質問がある。
・そのスクリプトの中で、Webサイトを構築する上で有用な情報はどこにあるの?
・そのスクリプトの中で、JavaやRubyに対するPHPの優位性はどこにあるの?
0178174
2006/03/31(金) 19:14:39ID:???ごめん。意味を正しく受け取ることが出来なかったんだけど、要は
「それを使って何か実際に役に立つものが作れるのか?」
ってことで良いですか?
これは自作の XML 解析モジュールに応用してます。
レンタルサーバーみたいに、外部モジュールを自由に導入できない
(すなわち libxml モジュールなどが使えない)環境のために作りました。
・そのスクリプトの中で、JavaやRubyに対するPHPの優位性はどこにあるの?
知りません。もしかしたら Java や Ruby のほうが優れているんじゃないんですか?
別に PHP が Java や Ruby より優れてなきゃいけない理由なんてないし。
0179nobodyさん
2006/03/31(金) 19:54:05ID:???XMLの解析に使ってる点はいいんじゃない。お疲れさん。
2つ目は他の言語でなくなぜPHPなのかって話題が出てたから聞いてみただけ。
PHPしか知らないってのも理由の1つとしてはいいけど、馬鹿にされるからあまり言わないほうがいいかもね。
0180nobodyさん
2006/03/31(金) 21:05:47ID:???そういうしょうもない煽りは
【戦場は】PHP王とJava乞食【エンタープライズ】
http://pc8.2ch.net/test/read.cgi/php/1140124172/
こっちでやれ
0181nobodyさん
2006/03/31(金) 22:24:05ID:???継承 【inheritance】
読み方 : けいしょう
別名 : インヘリタンス
分野 : プログラミング > オブジェクト指向
オブジェクト指向プログラミングにおいて、既に定義されているクラスをもとに、拡張や変更を加えた新しいクラスを定義すること。
元になるクラスを「スーパークラス」(super class)、あるいは「基底クラス」「基本クラス」(base class)などと呼び、新たに定義されたクラスを「サブクラス」(subclass)、あるいは「派生クラス」(derived class)と呼ぶ。
スーパークラスの性質はすべてサブクラスに受け継がれ、サブクラスではスーパークラスとの違いを定義するだけでよい。
複数のスーパークラスから新しいクラスを定義することを多重継承という。
で、PHPで実用的な継承ってどんなのよ?
0184nobodyさん
2006/03/31(金) 23:22:53ID:???PHP のスレは大量にあるんだからどこでも使えよ
単に PHP をバカにしたいやつはもうこないでくれないか
本当に知らないのならもっと真摯に勉強しろ
0186nobodyさん
2006/03/31(金) 23:42:06ID:???0187nobodyさん
2006/03/31(金) 23:55:31ID:???0188174
2006/03/32(土) 00:32:20ID:???>>174 で晒したソースは、
PHPでの実用的な継承 (っていうか、別に普通だけど) の例でもあると個人的に思うのですが、
これだけだと伝わりませんでしたか?
0189nobodyさん
2006/03/32(土) 16:53:32ID:???「オブジェクト指向意味ワカランから本買うけど何がいい?」
なんて厨な質問できねーYO!
0191nobodyさん
2006/03/32(土) 20:29:42ID:???ぱっと思いつくのは
憂鬱なプログラマのためのオブジェクト指向開発講座―C++による実践的ソフトウェア構築入門とか
>>188
OO分かってない奴にいきなりコードを見せても
チンプンカンプンだと思う
0193nobodyさん
2006/03/32(土) 21:39:06ID:???JavaやC++のように大規模開発でも使う場面が
多い言語ではprivateは重宝するよ。
なにせprivateをうまく使うとデバッグがしやすいしバグもとりやすく
テストもしやすくソースコードの信頼性も上がる。
0194nobodyさん
2006/03/32(土) 21:42:32ID:???PHP使えるレンタル鯖が多いからだろ。
Ruby使える鯖は少ないし
Rubyというだけで日本人が作った言語だから
ショボイと思われがてで不キュしていなかったと思われる。
0195nobodyさん
2006/03/32(土) 21:43:46ID:???この本を読めばクラスの使い方がわかるようになるよ。
超お勧め。
Amazon.co.jp:アジャイルソフトウェア開発の奥義: 本
http://www.amazon.co.jp/exec/obidos/ASIN/4797323361/249-2469696-1854764
0196nobodyさん
2006/03/32(土) 21:45:56ID:???おれはよく継承を使いまくってる。
将来拡張する予定があるものは
かならず(空でもいいので)スーパークラスを作って
継承してつかっている。
継承は使い方を間違えたり勘違いしている人間が使うと
継承=拡張そのものだと
誤解してだたやみくもに継承しまくることがあるので、
継承を使いこなしたければ
デザインパターンについてよく勉強した方が良い。
0197nobodyさん
2006/03/32(土) 21:47:44ID:???> ・関数がいい人は関数でやればいい
> ・クラスがいい人はクラスでやればいい
> ↑ここまではおk。それじゃ、
> ・クラスがいい人は何のためにクラス使ってるの?しかもPHPでw ←いまここ
大規模化する可能性のあるソフトをPHPで作るとき。
顧客がPHPを使えと言ってきたら
PHPを使わざるを得ない。けれどもオブジェクト指向を
使わないで開発すると一体どんなとんでもない目に
あうのか散々味わってきたので
漏れはかならずオブジェクト指向でPHPコードを書く。
0198nobodyさん
2006/03/32(土) 21:49:55ID:???拡張 = extends
なんだよな・・・・
0199nobodyさん
2006/03/32(土) 21:50:04ID:???それに関してはPHPでもJavaでも同じように実現できている。
PHPで問題なのは名前空間と型安全性問題。
メソッド引数に型指定もクラスしか使えないこと。
integer型やstring型などをメソッド引数に指定できないのが
今のPHP5の難点。Javaでいえば引数の型をObjectにしているようなものだ。
Perlでも同様だが。
0200nobodyさん
2006/03/32(土) 21:52:35ID:???PHP5はどうみてもJavaのパクリとしか
思えないほど十分にオブジェクト指向できるような
言語となった。問題なのは上でも述べているとおり
名前空間と型指定の曖昧さ、ほかに戻り値の型を指定できないことだね。
0202nobodyさん
2006/03/32(土) 21:59:03ID:???そんなに汚くないコードだけど
ちょっと抵抗があるソースコードだな。
クラス名が全部小文字で
名前空間の替わりの役割を果たしているわけでもないのに
区切り文字に_(アンダースコア)つかうという
表記を未だに使っているとは・・・・。
やっまりキャメルケース(CamelCase)がわかりやすいと思うのだが。
それから一ファイルにつき一クラスにしておくのがベスト。
一つのファイルに複数のクラスを入れておくことはお勧めしない。
ファイル名とクラス名も一致させておく。名前空間が使えないので
そこだけ例外的にクラスだけ名に_(アンダースコア)を使う。
詳しくはPEARライブラリのソースコードを見てみてくれ。
それから文字コードがEUCだとは。
Unicode(UTF-8)で統一してくれれば
DBとのやりとりも楽なのだが。
0203nobodyさん
2006/03/32(土) 22:01:42ID:???悪いがあなたが書いたソースコードが実用的な例だとは
とても思えない・・・・。
あのコードがPHPで有ろうとJavaに置き換えようと実用的になるとは
とても思えない。
0205nobodyさん
2006/03/32(土) 22:05:14ID:???PHPやJavaではextendsで継承しているともいうし拡張するともいう。
しかしクラスそのものを拡張しているだけであって
それによってそれだけで簡単にソフトウェアの拡張性が高まるとは限らない。
という落とし穴に気をつけないといけない。
その辺りを素早く理解するにはデザインパターンを学ぶことをお勧めする。
この本は初心者には非常にわかりやすいので
かなりお勧め。
増補改訂版Java言語で学ぶデザインパターン入門
http://www.hyuki.com/dp/
0206nobodyさん
2006/03/32(土) 22:06:45ID:???gotoか。Javaみたいに例外処理限定や
ラベル付きbreak, continue文だけにgoto同様の機能を
限定的に持たせるだけにしてくれればいいのだが・・・・。
C#みたいにJavaのラベル付きbreakやcontinueをgotoキーワードで
実装すると言うだけのレベルだろうか?
0207nobodyさん
2006/03/32(土) 22:20:15ID:???俺は悪いコードだとは思わないが
0209nobodyさん
2006/03/32(土) 22:39:55ID:???俺的には無限再帰を可能にしてwhileとforみたいなダサいもんも排除した
関数言語にして欲しいと前から思っているんだけどそんな人いませんか。
0210nobodyさん
2006/03/32(土) 23:12:37ID:???0211nobodyさん
2006/03/32(土) 23:13:10ID:???使い道がないから。
ウェブでオブジェクト指向するなら、JavaScriptが一番使いどころが多い。
0213nobodyさん
2006/03/32(土) 23:39:13ID:???とりあえずどんなものかは
わかったけど実際にどうやって
それを有効利用できればいいか
わからない香具師に結城本はおすすめだと思う。
0214nobodyさん
2006/03/32(土) 23:40:02ID:???> ウェブでオブジェクト指向するなら、JavaScriptが一番使いどころが多い。
まてまてw それはJavaの間違いではw
0216nobodyさん
2006/03/32(土) 23:56:49ID:???0217nobodyさん
2006/04/02(日) 00:13:33ID:???publicと明示的につけないとパッケージ外部からアクセスできなくなる
ってことが名前空間がないPHPではできないから
デザインパターンの実装も中途半端になる。
0218nobodyさん
2006/04/02(日) 01:06:11ID:???そんなやつの話を持ち出されても知らない
ダメコーダに強制できないとかいう話ならご愁傷さま
としか言いようがないですな
0219nobodyさん
2006/04/02(日) 01:15:39ID:???俺も最初そのへん「これ必要か?」と思ったな
他の人(近未来の自分含む)に対しての「使われ方の説明」を
ソースの中に機能的として組み込むものだとわかって
得心した。
0220nobodyさん
2006/04/02(日) 01:57:43ID:???for () {
if () {
break foo;
}
print "bar\n";
foo:
print "baz\n";
}
こんな感じに書けるようになるもの。
0222nobodyさん
2006/04/02(日) 07:04:12ID:???型安全性ならis_arrayとかis_stringとかinstanceofでチェックすればいいだけじゃないの?
0223nobodyさん
2006/04/02(日) 07:17:49ID:???何が求められているのかを知るために
中身まで見ないといけないのはあまりよろしくないだろう。
0224nobodyさん
2006/04/02(日) 07:50:00ID:???0225nobodyさん
2006/04/02(日) 09:57:52ID:???それでもタイプヒンティングみたいにオブジェクトの型を動的にチェックしてくれるようにする構文はいいアイデアだと思った。
Javaでいう変数の静的な型指定(つーかC/C++からだけど)と構文を似せたってのも良い。
JavaScript2.0なんかもそういう方向に行ってるね。
>>199
> integer型やstring型などをメソッド引数に指定できないのが
たぶんだけど、統一性の問題があるからだと思う。
例えば引数にintを指定したメソッドがあったとして、呼び出すときにstringを渡したからってエラーにすべきではないでしょ。
その辺の仕様がうまくいかないんじゃないかな。
0227nobodyさん
2006/04/02(日) 10:24:36ID:???以前もどこかのスレで議論があったが。
それだけでは以下の問題を解決できない。
$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との違いの
に気づかない。
そして路頭に迷ったあげくにデバッグに無駄に時間をかけることになって
開発速度が衰える。
0228nobodyさん
2006/04/02(日) 10:28:07ID:???Javaみたいにラッパークラスを作ってしまえばいいかもしれんな。
final class Integer extends Number {
$private $value;
__construct($value){
if($valueがint型であれば){
$this->value = $value;
} else {
throw new NumberFormatException("整数以外入力するんじゃねえぞこのバカ野郎氏ね!");
}
}
}
0229nobodyさん
2006/04/02(日) 10:29:01ID:???あとは適度に必要な変換メソッドを追加しておくべし。
intValue()とか
0230nobodyさん
2006/04/02(日) 10:46:56ID:???お、いい方法じゃん!って一瞬思ったけど、
function method(Integer $param)
を呼び出すときmethod(10)って書けないし><
>>227
えーっと、それは型安全性の問題なの・・・?
0231nobodyさん
2006/04/02(日) 13:43:38ID:???コンポーネントに対する入力値と戻り値をちゃんとチェックするような
ユニットテストを書いとけばいいんじゃないの?
0234nobodyさん
2006/04/03(月) 11:16:30ID:???つ 「それだとAUTO-BOXINGが欲しくなるな」
満足戴けたかな?
PHPみたいな型なし言語なら、Javaみたいなプリミティブ型とそのラッパークラスのオートボクシング/アンボクシングだけでなく、もう少し汎用的な自動型変換が欲しいところだな。
function method(int $x) {}
を
method("100");
っていうふうに呼び出したならintにキャストするくらいの自動化はあってもいいと思う。
(今あるPHPのタイプヒンティングだと、型が違うとエラーっていう設計だから)
もともとPHPは変数の実行時における型が文字列か整数かを意識しなくても適宜変換してくれるように設計された言語なわけだし。
0236nobodyさん
2006/04/03(月) 14:54:33ID:???それなら、
function method($x)
{
$x = (int) $x;
}
でいいんじゃないの?
0238nobodyさん
2006/04/03(月) 15:35:04ID:???メリットって?
>>236
間違えて配列やオブジェクトを渡したときに自動的にエラーを出してくれるかもしれない。
もちろんis_intで確認してエラー出せば同じことだから絶対なければならないっていう必然性はないけど、あったら便利かとは思う。
あとタイプヒンティングでintやstringなどの基本型だけは指定できないっていう今の状況より統一感あるかと。
オートボクシングや構文糖と考え方は一緒ね。
0239nobodyさん
2006/04/03(月) 23:39:48ID:???0240nobodyさん
2006/04/03(月) 23:50:13ID:???0241nobodyさん
2006/04/04(火) 03:55:07ID:B/b940FUabstractなclass,
interfaceは、
クラス名から変えた方がいいんかな?
どうやってる?
0242nobodyさん
2006/04/04(火) 15:51:08ID:???俺はabstractもinterfaceも普通の名前にしてる。
abstractやinterfaceをある特定クラスの仕様だけ抽象したことを表現したい場合に限り「Abstract〜」とか「〜Interface」にするかも。
例外だったら「〜Exception」てつけるけど。
0243nobodyさん
2006/04/04(火) 23:58:21ID:???というか、C#やC++みたいに継承も実装もおなじ::をつかっているわけではなく
PHPはjavaのようにちゃんと継承はextends、インターフェース実装はimplements
を使うように指定されているから
名前を見ただけでインターフェースかクラスかわかるようにまでしなくてもええと思う。
IDE使えば名前指定しなくてもさらに一目でわかるし。PHPのIDEはよくわかんないけど
0245nobodyさん
2006/04/14(金) 07:15:35ID:???ビジネスロジックとドメインロジックとアプリケーションロジックは、プレゼンテーションロジックと対比的な位置づけですが、基本的に同じものですか?
0246nobodyさん
2006/04/14(金) 10:33:43ID:???使用する分析・設計手法によって、使われる用語とその定義は違ってきます。
こういうインフォーマルな場では、それぞれが別の立場・定義で勝手に用語を使う
ことが多く、基本的な認識がすれ違ったまま不毛なレスが飛び交うのが常です。
まずは専門書で系統立った知識を得てから、自分なりの経験と知見を積んでいけば
その類のどーでもいい疑問は解決すると思われます。
0247nobodyさん
2006/04/22(土) 05:13:55ID:cnsSSisF0249nobodyさん
2006/05/28(日) 01:10:04ID:???どんなクラスのプロパティを作るかがわかれば
自ずとそれに見合った名前がわかると思うんだが。
どうしても名前がわからないときは>>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;
}
を定義するだけのものとか。
0250nobodyさん
2006/05/28(日) 09:18:03ID:???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()は動いてますが。
オブジェクト指向と関係ない話で申し訳ない。
0351nobodyさん
2007/04/24(火) 11:01:21ID:???UTF-8で保存しているなら、BOM無しのUTF-8Nで保存し直したら、空白が直るかもしれないよ。
UTF-8とUTF-8Nの違い=BOMについてはGoogleで検索して!
0352nobodyさん
2007/04/25(水) 23:24:32ID:B1ZZgxV3フリーのエディタの中には、デフォでBOMを付加する設定になっていたりする...
UTF-8のBOM付きでは、PHPは動かなかった!
0354nobodyさん
2007/04/27(金) 01:50:35ID:???分業の切り分けもしやすいと最近思った。
クラスが2、3個とか済む軽いのはPHPでさくっと実装するけど。
要件で言語指定がないとき、みんなの言語の選定基準って何?
0355nobodyさん
2007/04/30(月) 20:32:09ID:???0356nobodyさん
2007/05/03(木) 13:44:43ID:???サクサク開発できるPHPは良い
0357nobodyさん
2007/06/05(火) 12:21:35ID:/w569Zaf0358nobodyさん
2007/06/05(火) 16:24:00ID:???「ウェブ社会をどう生きるか」「iPhone 衝撃のビジネスモデル」「低度情報化社会」
http://iiyu.asablo.jp/blog/2007/06/05/1556512
0359nobodyさん
2008/06/19(木) 06:33:48ID:4gsKqLnV・ユーザーAがユーザーBにメッセージを送る
・ユーザーBにメッセージ到着メールを送る
・システム管理人にメッセージ到着メールを送る
このとき、私書箱メッセージもメール形式でmail classから処理できるようにするとして、
mailオブジェクトを3つ作って処理って普通ですか?
0360nobodyさん
2008/06/20(金) 09:01:44ID:RWxKmjHmどっちを採用してもおかしくないよ。
0361nobodyさん
2008/06/25(水) 04:06:12ID:???まずその仕様をオブジェクト指向にしたい理由を言って下さい
メリット・デメリットなど
その後にその仕様の目的にあったクラス構成を議論したいです
0362nobodyさん
2008/06/25(水) 04:07:57ID:???そうでないロジックが存在する
0363nobodyさん
2008/06/29(日) 01:46:48ID:???クラス名をアンダーバーで繋げるという回避策は悲しすぎる。
唯一悔やまれる点だわ。
0364nobodyさん
2008/07/02(水) 02:00:54ID:???問題が解決するからじゃね?
0365nobodyさん
2008/07/03(木) 23:11:58ID:???あれがあればいろんなものをStaticなまま呼び出せるのにー。
0366nobodyさん
2008/07/04(金) 04:53:13ID:zouluv3Bそれってクラス名得る以外に使い道あるの?
0367nobodyさん
2008/07/04(金) 12:41:49ID:???0368nobodyさん
2008/07/21(月) 01:17:35ID:gHzQi72i書くのって、やはり負けですかね。なにがなんでもクラスとして記述した方がいい
でしょうか?
0370nobodyさん
2008/07/21(月) 15:54:45ID:Aaw/YKL1クラスが参照するサブルーチンて書いてあるけど、ちょっと意味かわからない
0371nobodyさん
2008/07/21(月) 16:12:59ID:gHzQi72iええっとですね、hoge.pmないに、コンストラクタとクラスを書くのが
オブジェクト指向でのモジュールですが、その中のいくつかのクラスが
使い回せるサブルーチン(例えば、変数が英数かチェックするサブルーチン)
を書いておく、という感じです。
そうするといくつかのクラスの中で英数チェックを共通かできるので。
ただ、英数チェックなどそういうチェック部分だけをオブジェクト指向
モジュール化してという方法もありますが、いまいち、決めかねています。
一般的にはどういう感じでやっているのかなぁとアドバイスを求めた次第です。
0372nobodyさん
2008/07/21(月) 16:19:42ID:gHzQi72i中にある特定のクラスが処理として行なう共通な部分(たとえば英数半角チェック)
を抜き出して、それをサブルーチンとしてhoge.pmの中に記述して、クラスが
使うようにする(メインプログラムcgiが直接利用するのではない)、という
のは、手法としてはどうですか?
という意味です。オブジェクト指向でつくられたモジュール内のサブルーチンは
簡単にいってクラスとして書くけど、単なる英数半角チェックルーチンをサブルーチン
化した場合はそれはクラスというよりやっぱり単なるサブルーチンでしかない
ですよね?
いや、その半角英数チェックのサブルーチン内で処理後の変数をあらたに定義
すればその半角英数チェックのルーチンはクラスとしていってもいいとおもいますが。
0373nobodyさん
2008/07/21(月) 19:17:33ID:???0374nobodyさん
2008/07/22(火) 04:02:09ID:???0375nobodyさん
2008/07/22(火) 23:13:02ID:???動画検索ロボットが毎日動画を自動収集!!
アクセスアップ間違いなし。
もちろん海外のサーバーなので違法性も一切ありません。
完全無料!!いくらでも動画サイトを作成できます。
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
0376nobodyさん
2008/11/13(木) 09:58:56ID:???おま、一言でいえるかっての!
0378nobodyさん
2008/11/13(木) 12:52:57ID:???0379nobodyさん
2008/11/13(木) 17:13:17ID:???upper 上底
lower 下底
height 高さ
それぞれのアクセッサ
コンストラクタで初期値を設定
面積を求めるメソッド calcArea()
現在のフィールド値を画面に表示するshow() メソッド
誰かおしえてください
0380nobodyさん
2008/11/14(金) 02:19:47ID:beq8Chz/0381nobodyさん
2008/11/14(金) 02:42:17ID:s13+G+Dg0382nobodyさん
2008/12/03(水) 08:17:46ID:RtCrzg9N日ごとにincludeするファイルが増えていくような気がする
昔はファイル一枚あればいいだったのに
ってか、はっぱ隊とかウンナンとか10年ぶりぐらいに思い出したような
0383nobodyさん
2008/12/04(木) 00:43:26ID:XlgDZGNX0384nobodyさん
2008/12/09(火) 15:36:44ID:???アマゾンンの読者レビューでは褒められてたけど。
0385nobodyさん
2008/12/09(火) 16:06:48ID:???0386nobodyさん
2008/12/09(火) 16:33:10ID:???継承と多態の意味くらいが分かる。
0387nobodyさん
2008/12/12(金) 01:33:02ID:???class Trapezoid
{
private upper ;
private lower ;
private height ;
function __construct( $u , $l , $h ) {
$this->upper = $u ;
$this->lower=$l;
$this->height=$h;
}
略
}
0388nobodyさん
2008/12/12(金) 01:39:31ID:???0389nobodyさん
2008/12/12(金) 01:59:29ID:???うむ。やはり宿題か。だったら
面積求める抽象クラス
と
継承して作った四角や三角
っていうのが本当に伝えたかったことじゃないだろかなんて思った。
0390nobodyさん
2009/01/01(木) 09:21:40ID:???利用者ごとにログインし、見た目をカスタマイズ出来るような仕組みを考えています。
で、ログイン状態やユーザー情報というのはModelに相当すると思うんですが、
見た目の情報はModelには入りませんよね。
そもそもViewの情報はどこで管理すべきなのか。
Viewで良いのか。だとして、ユーザー情報との同期はどうとれば良いのか。
分からないところだらけですが、よろしくお願いします。
0391nobodyさん
2009/01/01(木) 09:22:32ID:???0392nobodyさん
2009/01/01(木) 09:50:26ID:???だからこそ質問しているわけですが・・・
0393nobodyさん
2009/01/01(木) 09:59:06ID:???0394nobodyさん
2009/01/02(金) 22:50:28ID:???前提知識がないから、回答する側も途方にくれてしまう。
入門書等でWEBアプリってどういう風に作るのか、大まかにつかんだ方がいいかも。
0395nobodyさん
2009/04/17(金) 23:34:39ID:???0396nobodyさん
2009/07/09(木) 01:01:48ID:qbvjwLD60397nobodyさん
2009/10/23(金) 00:12:07ID:???class hogeClassUnit extends dbConnectBase{
private var $name; // 以下20項目くらい
public function set_name($str){ // 受け取ったデータを加工したり精査したりでこれも20項目くらい
public function get_name(){ // クラスから取り出すだけ 以下20項目くらい
public function register(){ // ここまできて、登録とか何たらとかの処理を書き始める。
こういう風に細かくやるのが普通なのでしょうか?
単純なことが多いとはいえ、ずいぶんとソースコードが長い
0398nobodyさん
2009/10/23(金) 00:27:46ID:???OOPの表面だけ真似るんじゃなくて本質を学んだほうがいいと思うぞ
0399nobodyさん
2009/10/23(金) 03:13:03ID:???0400age
2009/11/12(木) 11:26:43ID:FhD9csekfunction 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のャCンスタンスを麹成しているのbヘ
aなのでb'のインスタンスは作られないですよね。
0401nobodyさん
2009/11/12(木) 11:44:55ID:???>たとえばbを継承したb'を作成し、zを取り出すメソッドを作っても、bのインスタンスを作成しているのは
>aなのでb'のインスタンスは作られないですよね。
aでb'のインスタンスを作るように変更すればいいのでは。
>上記のような、クラスがあって、aから、bが返されるのですが、bのprotected
>のデータを取得したい場合はどうすればいいでしょうか。
getZというメソッドを作るのはだめなの?
0402nobodyさん
2009/11/12(木) 11:51:13ID:???変更しないで挙動を変えたいなら、それこそa'とb'を作ってメソッドをオーバーライドするしかないかと
0403sage
2009/11/12(木) 14:29:44ID:FhD9csek有難う。
0404nobodyさん
2010/05/13(木) 18:19:29ID:9BJiXr6fhttp://okamikakushi.net/jp/wbiyhi1
俺やってみたけど、マジ寝てるだけで金くれたぞ!!
0405nobodyさん
2010/05/15(土) 17:20:55ID:???0406nobodyさん
2010/05/23(日) 16:33:14ID:ReStOCg4再利用したも猛者はいるか?
0409nobodyさん
2010/05/27(木) 12:15:02ID:???0410nobodyさん
2010/05/27(木) 20:21:31ID:P724q4SGって言われたら、どのようなオブジェクトを作りますか?
0411nobodyさん
2010/05/28(金) 20:25:52ID:???クライアントサイドプログラムはWeb制作板へ
って言います
0412入社1ヶ月の新人が書いてきた。うれしい。
2010/07/14(水) 20:35:40ID:???<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;
};
0413入社1ヶ月の新人が書いてきた。うれしい。
2010/07/14(水) 20:36:21ID:???* おんにゃのこクラス定義
*/
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>
0414nobodyさん
2010/07/15(木) 02:09:27ID:???0415nobodyさん
2010/07/15(木) 04:17:09ID:hmDV/lDTそんな事する意味が全くわからんwwww
なんのメリットがあるの??wwww
プロパティ宣言とかめっちゃウケルwww
0416nobodyさん
2010/07/15(木) 13:49:38ID:???なんでそんなことしなくちゃいけないんだよってやつ。
0417nobodyさん
2010/07/15(木) 16:43:10ID:???kanako = new girlClass('かなこ','girlmessage');
miku = new girlClass('みく','girlmessage');
haruhi = new girlClass('ハルヒ','girlmessage');
};
function girlClass( name , target )
{
girlClass.prototype.myName = name;
girlClass.prototype.target = target;
って書いたら全員ハルヒになったぞ
0418nobodyさん
2010/07/15(木) 16:49:47ID:???親クラスとして定義されている関数は触るなと。
了解した。
0420nobodyさん
2010/07/15(木) 17:01:58ID:???0421nobodyさん
2010/07/15(木) 17:10:38ID:hmDV/lDT0422nobodyさん
2010/07/15(木) 17:52:55ID:???君は何か勘違いしている様だけど、聞いて揚げ足取りをしたいんじゃなくて、
単純に君の意見が面白そうだから聞いてみたかっただけなんだよ。
もっとまともなレスを期待してたんだけど。ごめんね。
ちなみに君は揚げ足を取られる事を恐れているようだけど、それは違うと思う。
揚げ足を取られるのは、君に隙があるから。
隙だらけの人間ってのはそうやって余計な所でつまらない恥をかく事になるもんだよ。
他人につっこまれる事は、自身の知識をより客観的で多角的なものとする為に
有益な指針となるものだと思うな。
0423nobodyさん
2011/10/14(金) 13:22:35.87ID:oOJ5iuHvパラメーターと処理を
外部からひっかきますことができない思考ってことですか?
0424nobodyさん
2011/10/14(金) 14:09:07.20ID:???0425nobodyさん
2011/10/15(土) 08:06:59.53ID:WVUj974dCSSのカスケードみたいにカプセルを別のカプセルに引き継ぐ思考 →継承
?????? 思考 → ポリモーフィズム
0426nobodyさん
2011/10/19(水) 11:59:18.77ID:PXmn+I34手続き型の記述がカプセリングされて入ってる・・・
と思って間違いないですか?
0427nobodyさん
2011/10/29(土) 05:40:27.70ID:???0428nobodyさん
2011/10/29(土) 11:06:32.36ID:???次。
0429nobodyさん
2011/12/09(金) 14:10:33.19ID:jzegoNJ7継承元の親クラスが、なんなのか?によって、
同じ名前のクラスが 全く違う動きをする
みたいなかんじですか?
となると子クラスには、親クラスがこうの時はこう、
親クラスからこういうパラメータが取ってこれてたらこう
みたいな処理がかかれてるんですか?
0431nobodyさん
2011/12/12(月) 20:11:59.00ID:???そんなことされたら困ります
0432nobodyさん
2013/02/14(木) 12:44:29.53ID:yCRXEb/V例えば、部署を選択すると社員を一覧表示する機能を考えた場合、
社員テーブル(社員NO、社員名、部署NO)と部署テーブル(部署NO、部署名)を作成し、
単にSQLで一覧を取得すれば良いと思うけれど、オブジェクト指向では違うと認識。
そこで、「社員クラス」「部署クラス」「社員部署クラス」を作成。
社員クラス(社員NO、社員名、[社員コード、社員名を返すメソッド])
部署クラス(部署NO、部署名、[部署コード、部署名を返すメソッド])
社員部署クラス(社員NO、部署NO、[社員NO、部署NOを返すメソッド])
とりあえずテーブルも上記3テーブル。
また機能毎に「選択画面クラス」と「一覧表示クラス」を作成。
@選択画面クラス
1.部署クラスをnew
2.[部署コード、部署名を返すメソッド]で部署コード、部署名を取得
A一覧表示クラス
1.社員部署クラスをnew
2.選択画面で選ばれた部署コードをもとに[社員NO、部署NOを返すメソッド]で社員NOを取得
3.社員クラスをnew
4.[社員コード、社員名を返すメソッド]で社員コード、社員名を取得
これで考え方としてはあってますか?
部署コードを社員クラスに持たせるのは変?
0433432
2013/02/14(木) 13:33:18.72ID:???明らかに勘違いしていることが分かった
0435nobodyさん
2013/10/19(土) 11:41:11.05ID:???こりあん えくすてんど こっくろーち いんぷりめんと ないんせんちみーたーかのん
■ このスレッドは過去ログ倉庫に格納されています