トップページ⇒php
1001コメント362KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/04/17(日) 16:55:57ID:iM4mgYnJ
PHP5になって本格的なOOPができるようになったので
PHPによるOOPについて語りましょう。
0136nobodyさん2005/06/08(水) 23:01:22ID:???
>>128は2ちゃんのログが読める立場の人間なのか?
0137nobodyさん2005/06/08(水) 23:13:02ID:???
あー、すまんすまん。
「書き込めるようなネットワーク」ってことね。
勇み足でした。
0138nobodyさん2005/06/08(水) 23:48:32ID:???
いよいよくだらん議論になってきたな
0139nobodyさん2005/06/08(水) 23:50:05ID:???
>企業内からネットに繋げるなんて当たり前の話じゃねえか

日本語理解できてますか?
ネットにつなげられるかじゃなくて、2ちゃんに書き込みOKかどうかの話だろ?
なんか話を勝手に変えて、ネットアクセス自体ができないって事にして、
アホだって叩いてないか?
0140nobodyさん2005/06/08(水) 23:51:16ID:???
>>138
まー、PHP厨なんてこんなもんでしょ…
大手企業社員の振りをするのが精一杯と。
0141nobodyさん2005/06/09(木) 00:16:42ID:???
つまりPHP4使いはクズ
PHP5使いはエリートってことか
0142nobodyさん2005/06/09(木) 00:32:26ID:???
>>139
↓どう読んでもそういう風には読めない。

>>124
> ただ、普通のセキュリティに気を遣ってる企業なら、掲示板に書き込めるような 
> ネットワークにPCはぶら下がってないけどね。 

昔、出向先で2chに繋げなくしてるところがあったが、自作鯖とSSHコネクション張って
そこ踏み台にして自由に読み書きしてましたよ。

普通、ちょっと頭使えばそう言うことくらいはすぐにできるわけで、
「どのPCも掲示板に書き込めないネットワークに繋がってる」状態ってのは
もの凄くレアだと思うんだが。
0143nobodyさん2005/06/09(木) 00:37:28ID:???
>>136
かどうかは知らんが、ふしあなトラップを見ると大企業からの書き込みは
別に珍しくないね。go.jpからも時々アクセスあるし。


>>122-124
で、「普通の企業なら2chになんて書けない。(だからニート)」と言いたかったんだろうが、
逆に>>124の無知をさらけ出す結果になっちまったというわけ。
0144nobodyさん2005/06/09(木) 00:52:58ID:???
>>123
仕事の合間に2ちゃんねるを見てるようじゃ
ろくな仕事してないみたいだなw
ほとんどニートみたいなもんだろw

>>126
ポリモーフィズムという言葉すら知らんのか屑。

>>127
まともな企業ならプロ串かましてるだろうから
2ちゃんねるなんて見れないようにするなんて
普通にしてるだろ。そんなことも知らんの?
程度の低いWebプログラマですね。死ねば?

>>129
うわぁ・・・
マジでお前みたいな低レベルな奴がWebに携わってんの?
やめてくれマジで。とっとと田舎に帰りな小僧。

>>143
技術的に可能でも、どっちみち仕事中に2ちゃんねるに
書き込むような奴はまともじゃねーよ。
お前も屑ニートか。死ねよ雑魚w
0145nobodyさん2005/06/09(木) 01:02:06ID:???
>>142
会社員として厄介な奴だな。
遵法意識に欠けるお荷物社員だろ。
お前のせいで、ISO剥奪とかされなきゃいけどな。
0146nobodyさん2005/06/09(木) 01:15:26ID:???
会社員じゃなくて、バイトとか派遣とかじゃないか?
正社員で、客先で穴開けなんてやってたら、社会人として終わってる
まぁ、バイトや派遣でも終わってるけど
なんでわざわざ閉じてあるのか考えた方がいい
0147nobodyさん2005/06/09(木) 01:36:14ID:???
すげーくだらん話になってるな
全然OOP関係ねーし
そのフォーカスのにぶらせ具合でお前らの程度が知れるよ
ガキと馬鹿は一緒に失せろや
0148nobodyさん2005/06/09(木) 03:21:57ID:???
>>144
> まともな企業ならプロ串かましてるだろうから 

今時そんな用途にProxy組むかよw いつの時代の話だ。
口開くたびにボロが出るな。ここまで来ると微笑ましい。

> 2ちゃんねるなんて見れないようにするなんて普通にしてるだろ

いやあ・・・そんな会社見たことないぞ。2chは情報源としてチェックしてる
会社の方が多いんでは?書けないようにしてるトコは何件か知ってるけど。

> 程度の低いWebプログラマですね。死ねば? 
プログラマってのは納期に完成品を納品すりゃいいの。分かってないね。
だいたい俺はアドバイザで机借りてただけだから、ほとんどの時間がヒマ。
他の会社の仕事片付けてる時間の方が多かったくらいだよ。

>>145
出向だっつの。残念ながらバイトでも派遣でもどっかの社員でもないよ。
つーかSSHの先でHTTPクライアント使うのが穴開け?違法?ISO剥奪?すごい発想だな。
そもそも「居てくれれば助かる」っつーんで机借りて金もらってるだけで、ヒマな時間に何しようが自由。
0149nobodyさん2005/06/09(木) 03:37:23ID:???
>>144
この程度の知識のヤツが社会人ってのも凄いな。少なくともWebやOOPが本職がじゃないことは良く分かった
「ニートじゃない」ことが唯一の拠り所みたいだけど、本当に社会人なのかこいつ?
言っとくけどコンビニの店員とかは社会人とは言わないぞ
0150nobodyさん2005/06/09(木) 07:36:19ID:???
>居てくれれば助かる

会社にとって命取りか。。。
やっぱり何の保険もない奴は雇わないに限るな

社内規定でわざわざ閉じているのに、それを中の人が無視してどうするのかと思う
0151nobodyさん2005/06/09(木) 11:46:27ID:???
匿名掲示板でニートだ社会人だ大手企業だって
相手の姿を妄想しながら叩き合う行為は愚か以外のなにものでもない。
そういう妄想攻撃を恥ずかしげもなくやっちゃう時点で、
そいつ自身のショボさのみは明らかにできるけどね。
0152nobodyさん2005/06/09(木) 12:02:36ID:???
ポリモーフィズムなんか知らんがphp3で組んだシステム売り込みから初めてすでに年収四千万の俺が来ましたよ。
設計は設計屋の仕事。実装なんかアルバイトにやらせりゃええねん
0153nobodyさん2005/06/09(木) 12:11:24ID:???
>>152
そこまでなるのに、どれくらいの年月がかかった?
0154nobodyさん2005/06/09(木) 13:46:36ID:???
まぁ、>>144が、ここまで自信に満ちて相手を批判できるってことは
当然、客先の了解を取って、トンネル開けて2chに書き込んでたんだろう。

もし、無許可でやってたとしたら、皆が言うように恥ずかしい奴だが。
0155nobodyさん2005/06/09(木) 13:48:31ID:???
あゴメン
>>148ね
0156nobodyさん2005/06/09(木) 15:47:57ID:???
>>151
同意。
というわけでスレにそった話題で。
0157nobodyさん2005/06/09(木) 16:17:25ID:???
>>150
> やっぱり何の保険もない奴は雇わないに限るな

保険?何の話だ?保証の間違いか?

>>154
> 当然、客先の了解を取って、トンネル開けて2chに書き込んでたんだろう。

当たり前じゃないですか。というか「トンネル開けて」ってSSHの意味分かってないのかも
知れんが、仮想端末越しにブラウズしてるだけだぞ?

> 社内規定でわざわざ閉じているのに、それを中の人が無視してどうするのかと思う

会社のIPアドレスで余計なことして欲しくないから閉じてるんであって、
会社とは全く関係ないマシンから独立に書き込む分には何の問題も生じないでしょ。
その辺はちゃんと了解も取ってあるし。
0158nobodyさん2005/06/09(木) 16:40:55ID:???
PHP5.0.3でオブジェクト指向な感じでWikiを作ったのだけれど、
ソース晒したら意見もらえるかな。

最近OOPの勉強を始めたので、出来る人から見ればクソみたいなソースかもしれませんが…
0159nobodyさん2005/06/09(木) 20:58:08ID:???
>>148
PROXYなんか当たり前の話だろ何言ってんだお前?
2ちゃんねるで情報収集?馬鹿かお前?
程度の低さが知れるなwお前みたいなのがWebプログラマを騙るなよ。
一緒にされたらかなわん。

>>149
>WebやOOPが本職がじゃない
ハァ?OOPって職なんですか?
なんだこのレベルの低さはw
もう書き込むなよ恥ずかしいだけだから。
0160nobodyさん2005/06/09(木) 21:13:46ID:???
>>159
下らん罵り合いは他所でやってくれ。鬱陶しいよ。
0161nobodyさん2005/06/10(金) 00:31:40ID:???
PHP5はクソって話題になったら困るから、わざとそらしてるんだろ。
>>157なんてイタくて見てられないくらいだもんな。釣りでしょ。
0162nobodyさん2005/06/10(金) 00:53:16ID:???
埋め
0163nobodyさん2005/06/10(金) 00:56:44ID:???
埋め
0164nobodyさん2005/06/10(金) 02:18:25ID:???
>>159
> PROXYなんか当たり前の話だろ何言ってんだお前?

Proxyが珍しいとは言ってないけど。
外部へのフィルタリングにProxyサーバなんて立てるか今時?って言ってるんだよ。

> 2ちゃんねるで情報収集?馬鹿かお前?

零細企業なら必要ないかも知れんけどな。ある程度大きいところになると
こういうトコに自社情報がリークしてたりは日常茶飯事なのよ。そういうのチェックする
部門だってあるぞ。あとググった結果が2chだったってことも別に珍しくないんだが。

あと、本職=専門って意味な。辞書引いてみ。
0165nobodyさん2005/06/10(金) 03:25:40ID:???
いったいお前ら何にそんな興奮してるんだ?
0166nobodyさん2005/06/10(金) 06:17:15ID:???
たしかに。あまりにくだらんから読み飛ばしてるが。
0167nobodyさん2005/06/10(金) 11:24:28ID:???
>>114
> メソッドのオーバーライドはデフォルトで動的束縛

ここが意味不明。
「オーバーライド」は継承時の実装上書きのこと。
継承が不要だと言いたいときになぜ出てくる?
0168nobodyさん2005/06/10(金) 15:10:20ID:???
>>167
>継承が不要だと言いたいときになぜ出てくる?

誰もそんなこと言ってない
つっこみいれるなら会話の流れ嫁
0169nobodyさん2005/06/10(金) 15:46:15ID:???
ところでPHPって変数に型とかないけど、ポリモーフィズムっていうのか?

class Oya { public function func() { return "親クラス"; } }
class Ko extends Oya { public function func() { return "子クラス"; } }

$obj = new Oya;
echo $obj->func(); // ここでは$objは親クラス
$obj = new Ko;
echo $obj->func(); // ここでは$objは子クラス

これはポリモーフィズムではないよな。
0170nobodyさん2005/06/10(金) 16:14:54ID:???
バーカ。
0171nobodyさん2005/06/10(金) 16:25:48ID:???
そもそもポリモーフィズムは型に依存した概念じゃないし。

Javaしかやったことないから分からないんだろうな。
>>169 は数学も形で覚えるタイプ。
01721692005/06/10(金) 17:13:23ID:???
>>171
ポリモーフィズムを敷衍しすぎ。
OOPでのポリモーフィズムの話だろ。
0173nobodyさん2005/06/10(金) 21:11:21ID:???
126 :nobodyさん :2005/06/08(水) 07:48:50 ID:???
ポリモーフィズムとか言わないけどね

この馬鹿について語らないか?
0174nobodyさん2005/06/10(金) 22:00:43ID:???
意味が分からないから語れない
(現場ではあまり)ポリモーフィズムとか言わないけどね
という意味か?
0175nobodyさん2005/06/10(金) 22:00:46ID:Ba+L/9uu
ここは言語論争をする場所でもなければ、オブジェクト指向の腕自慢をする場所でもない。
スレッドのタイトルが『PHPでオブジェクト指向プログラミング』となっているのだから、
相手を貶めたい人やらプロだのアマだのにこだわりたい人は邪魔ですよ。

この流れではスレッドの趣これい旨に沿った話題の展開さえままならない。
これ以上続けられても迷惑なばっかりなのでそろそろ止めてくれ。
小学生でも無いだろうし、お互い大人になろうよ。
0176nobodyさん2005/06/10(金) 22:04:25ID:???
>>172
ポリモーフィズム∈OOP
じゃないのか?
それにSmalltalkもObjCも型付け出来ないぞ。

静的型付けは確かに有用だが、
OOPに必ずしも必要という訳ではない。

それぞれの利点を考慮して
言語の性質に見合った設計をしていく事が大切だと俺は思う。
0177nobodyさん2005/06/11(土) 00:19:38ID:???
でも、説明するときでもポリモーフィズムってあんまり言わなくない?
多態って言うなぁ
漢字にした方が、初心者の人でも、何のことかイメージしやすいし
相手が理解できない専門用語を言って満足してるアホみたいだから、横文字は好きじゃない
0178nobodyさん2005/06/11(土) 00:20:06ID:???
と言うわけで、>>173 私怨みっともないぞ
0179nobodyさん2005/06/11(土) 01:33:34ID:???
>>178
ハイ本人登場w
01801692005/06/11(土) 01:57:38ID:???
>>177(=>>126か?)
ポリモーフィズムじゃヤダとか駄々をこねるので仕方なく多態でいってやろう。
だいたいお前の職場だろうがこのスレだろうが意味が通じることが重要ってのがお前の主張じゃないのか?
少なくともこのスレではポリモーフィズムを多態と言わなかったがための誤解なんてなかった気がするが。

>>176
俺はPHPには型がないからOOじゃないなんて言ってない。
PHPでOOP的な多態がどういう位置付けなのかを疑問に思っただけ。
Smalltalkを持ち出すってことは>>169も多態ってことになるんだろうが、そんなこと言ったらPHPにオブジェクト指向が導入される前からある言語仕様も全て多態って話になるだろ。
全ての変数は内部的に数値なのか文字列なのか配列なのかオブジェクトなのか、、、によって実行時に動的に振る舞いが決まるわけだからな。
0181nobodyさん2005/06/11(土) 11:07:10ID:???
なんかもう、どうやったらポリモーフィズムって言えるかの競争になってるな。
それを阻む奴は、とことん攻撃するみたいなw
0182nobodyさん2005/06/11(土) 12:01:10ID:???
なんか>>91の「PHP4でポリモーフィズムってどうやるの?」を思い出した。
散々暴れて散々叩かれて消滅したが、実は何かをわかってて釣っていたのだろうか。
いや、それはない(反語)。

で、PHPのポリモーフィズムって結局何なのさ?
オブジェクト指向を謳うなら一言説明がほしいとこだ。>PHP
0183nobodyさん2005/06/11(土) 23:59:38ID:???
ポリモフォーフィズムも知らないで、よくJAVAならとか言えるよな。
だからJAVA厨は嫌われるんだよ。
PHPでOOPやってる奴なら常識なのに。
0184nobodyさん2005/06/12(日) 01:08:28ID:???
>>183
ポリモフォーフィズムって何ですか?
0185nobodyさん2005/06/12(日) 01:10:40ID:???
知らねぇのかよwww
お前も多態とか言って誤魔化しとけよwww
0186nobodyさん2005/06/12(日) 02:11:20ID:???
>>180
ポリモーフィズムというのはOOが持つ特性であって、
開発者がポリモーフィズムであることを意図していない機能は
それに「見えるような」振る舞いをしたとして、
あなたがそれをポリモーフィズムだと言っても、
それはあくまで主観(というかあなたの勝手な認識)でしかない。
0187nobodyさん2005/06/12(日) 03:21:50ID:???
ポリモーフィズムって別に普通の関数でも実現できるよね。
引数や実行される環境によって振る舞いを変えればいいわけだし。
メンテナンス性などを考えればOOPな方がいいだろうけど。

PHP4での例とすれば、PEAR::DBなんかはポリモーフィズムじゃない。
DB::connectは渡されたDSNから判断して、DB_commonを継承した
各DBのサブクラスをインスタンス化して委譲することによって
多くのDBに対応している。

↓勘違いしてたらツッコミよろ↓
01881802005/06/12(日) 04:43:28ID:???
>>183-185
微妙にワロタ

>>186
俺の言いたいのはあくまで
>PHPでOOP的な多態がどういう位置付けなのかを疑問に思っただけ。
であって
>(〜中略〜)ってことは(〜中略〜)全て多態って話になるだろ。
はただの推論なんで、そこに茶々いれられても。
(そこつっこんだわけじゃなかったならスマソ)
まー言語の開発者がポリモーフィズムを意図したかどうかに焦点があるべきなのは同意。
ただ直接聞くわけにもいかないからここで話してるわけで。


>>187
同意。たしかにそういうのもポリモーフィズムと言えると思う。
PEARに限らずPHPを使う側が意図してポリモーフィズム的な振る舞いを実装することはできる。
あとはPHPの言語仕様自体にポリモーフィズムがどう盛り込まれてるかって話。
はっきり言ってアフォな俺にはなかなかわからない。
01891872005/06/12(日) 05:42:38ID:???
>>188
>あとはPHPの言語仕様自体にポリモーフィズムがどう盛り込まれてるかって話。

俺はJavaを知らない(つーかRubyもC++も知らん)のだけど、Javaにはどのように
盛り込まれているの? インターフェイスがそうなのか? それとも抽象クラスやメソッドを
定義できること?
0190nobodyさん2005/06/12(日) 06:25:01ID:???
>>169のを使うと
Oya obj = new Ko();
obj.func();
で子クラスのメソッドが呼ばれる。
C++の場合は親クラスのメソッドにvirtualっていうキーワードをつけないと親クラスのメソッドが呼ばれてしまう(objがOya型として宣言されているため)。
ルビーは知らない。
0191nobodyさん2005/06/12(日) 10:32:33ID:???
結局、ポリモーフィズムって何?
0192nobodyさん2005/06/12(日) 10:34:06ID:???
ポリモフォーフィズムだろハゲ
0193nobodyさん2005/06/12(日) 10:34:48ID:???
ポリモフォーフィスムス
0194nobodyさん2005/06/12(日) 11:06:09ID:???
自作自演か…

188 名前:180[sage] 投稿日:2005/06/12(日) 04:43:28 ID:???
>>183-185
微妙にワロタ
0195nobodyさん2005/06/12(日) 12:23:54ID:???
で?
0196nobodyさん2005/06/12(日) 12:38:57ID:wbP1UJDj
誰かPHPのポリモーフィズムの解釈を語れよー!
誰もわかんないのかよー!
俺もわかんないよー!
ヤケクンのアゲ
0197nobodyさん2005/06/12(日) 13:48:21ID:???
>>196
みんな偉そうなこと言ってポリモーフィズムの定義を知らないんだろ。
ホント口だけだよな。
0198nobodyさん2005/06/12(日) 14:06:38ID:???
ttp://homepage1.nifty.com/CavalierLab/lab/vb/clsmdl/polymorphism.html
0199nobodyさん2005/06/12(日) 17:11:33ID:???
>>197
よし、チミのポリモーフィズムの定義とやらを聞こうじゃないか。
0200nobodyさん2005/06/12(日) 17:57:05ID:wbP1UJDj
>>198
VBかよ
0201nobodyさん2005/06/12(日) 18:08:57ID:???
>>197
OOPに標準とかあるのか知らないのが、とりあえず
ttp://www.computerlanguage.com/webexamples.htm
での検索結果によると、
>the ability of a generalized request (message) to produce different results based on the object that it is sent to

ま、OOP的に言えば、同じ名前のメソッドでもインスタンスの動的な状態(実行時の状態)に応じて適切にメソッドが呼ばれるってことだと解釈しておけばいいんじゃないの?
とりあえず俺も>>197の意見が聞きたい
0202nobodyさん2005/06/13(月) 09:42:16ID:???
>>197
ワクワク
0203nobodyさん2005/06/13(月) 11:30:16ID:???
依然PHPでのポリモーフィズムは謎なわけだが。
0204nobodyさん2005/06/13(月) 11:38:44ID:???
function f(&$obj) {
  $obj->method();
}

f を呼び出したとき $obj がどのクラスなのかに応じて適切な method() が呼び出されるわけだが。
0205nobodyさん2005/06/13(月) 15:04:45ID:???
漏れもそれを言おうとしてたわけだが。
0206nobodyさん2005/06/13(月) 15:18:16ID:???
だから何なんなんだと小一時間(ry
わけだが。
0207nobodyさん2005/06/13(月) 15:43:38ID:???
この前、SRAの石井が書いたPHP+ポスグレの本読んだ。そこにMVC構造した雑誌記事管理システムのプログラムコードが載ってた。
そのコード読んで思ったんだけど、ビュークラスやDBクラスを分けてオブジェクト指向っぽく取り扱ったところで、糞分かりづらいだけでまったく意味ねえな、と。
0208nobodyさん2005/06/13(月) 16:21:03ID:???
石井!ガンガレ!
0209nobodyさん2005/06/13(月) 23:29:38ID:???
OOP的な意味でのポリモーフィズムってのは基本的に、
いろんな型のデータを区別せずに扱えますよ、
ということだと認識してる。
同じ扱いなのに、実際のふるまいがポリモってるよ!という感じ?

だもんで、型がない場合は、その時点でてけとうに
ポリモーフィズムが実現されすぎちゃって困ってる、
という状況なんだと思われ。

型で制約されている場合でも、仮想関数表なんかを管理しとけば
どっこいポリモれちゃうんですよ奥さん、と。

(もともとは関数型言語方面で、このリスト型だとどんな型の値でも
ぶらさがりますよ、とか、関数を引数の型の微妙な違いで
オーバーロードできますよ、とかいうのがポリモーフィズム
だったらしいけど、OOP方面ではふつうそういうのまで
ポリモーフィズムとは言わない、よね?)
0210nobodyさん2005/06/14(火) 03:02:54ID:???
こんなにポリモーフィズムなんて言葉が使われつづけるスレも珍しい。
0211nobodyさん2005/06/14(火) 03:17:23ID:???
>>209
同意。
実装をする側がクラスごとに適切に書いておけば、それを使う側はオブジェクトごとにいちいち区別しなくても同じように使えて正しく動く。
それがOOP的ポリモーフィズムの利点だわな。
ま、
>ポリモーフィズムが実現されすぎちゃって困ってる
のかどうかは微妙な線だが、PHPなどの型なし言語はもともとポリモーフィズム的振る舞いをしていたから、殊にPHPでOOを導入する時に「この部分がポリモーフィズムだよ」という必要がなかったってこっちゃな。
>もともとは関数型言語方面で、(・・・)、とかいうのがポリモーフィズム
ってのは初めて知った。
0212nobodyさん2005/06/14(火) 03:27:36ID:???
>>210
まー、多態性って言う方が多いだろうからね…
0213nobodyさん2005/06/14(火) 04:02:57ID:???
ソースキボンヌ
0214nobodyさん2005/06/14(火) 05:12:52ID:???
そんな小難しいモンでもないやん
違ったモノに同じ命令で言うこと聞かせられるようにすることだよ。
0215nobodyさん2005/06/14(火) 10:10:02ID:???
動的束縛が強いとそれがあたりまえになって、特に意識しなくなるからなあ
0216nobodyさん2005/06/14(火) 11:34:42ID:???
動的束縛に強いとか弱いとかあるのか?
あと>>214だと静的束縛と区別できん。
0217nobodyさん2005/06/14(火) 16:20:27ID:???
ぶっちゃけポリモーフィズムってよくわかんない。
でも>>214でなんか少しわかった気がする。
動的束縛がなんちゃらとか、なんかすでにポリモーフィズムをわかっている人にしかわからない言葉を説明に使わないでほしい。
難しそうなことをいろいろ知ってるのはわかったから、それをわかりやすく説明できるようになってほしい。
でないとあんたらの頭の良さは全然伝わらないってことに気づいてほしい。
0218nobodyさん2005/06/14(火) 17:03:30ID:???
オブジェクト指向の入門本とか見ると
ある親クラスを継承した子クラスがすべて同じ名前のメソッドを持っていて
オブジェクトが変わると同じメソッドでも振舞いが変わるというように
理解したんだけど違う?
0219nobodyさん2005/06/14(火) 17:42:45ID:???
× 振る舞いが変わる
○ 振る舞いを変えることができる(メソッドのオーバーライド(override : 覆す、無効にする))
0220nobodyさん2005/06/14(火) 18:06:57ID:???
>>217
もともとここは初心者に説明するためのスレじゃないし
話の流れ的にも >>197 の講釈を待ってる間に野次馬ががやがや言ってるだけかと

素直に「動的束縛ってなんのことだかわからないので教えてください」と頭を下げれば
親切な人が教えてくれるんじゃないか
0221nobodyさん2005/06/14(火) 19:59:09ID:???
動的束縛ってなんのことだかわからないので教えてください orz
0222nobodyさん2005/06/14(火) 20:39:29ID:???
>>220は本当は知らないので、親切じゃないので教えないとか厨じみたことを言って逃げると見た。
0223nobodyさん2005/06/14(火) 22:53:10ID:???
>>218
別に同じクラスを継承する必要ないし。
0224nobodyさん2005/06/15(水) 02:40:19ID:???
ポリモーフィスムスとはちょっと違うけどさあ、
リスコフの置換原則は次のように謂う、
「派生クラスは、ユーザーが基底クラスとの違いに気付かずに、
基底クラスのインターフェイスを通じて使用できるものでなければならない。」
とゆうことは、
継承したクラスで独自にメソッド増やすのはよろしくないってこと?
02252242005/06/15(水) 02:42:17ID:???
「パブリックなメソッドを増やすのは」に訂正します
02262242005/06/15(水) 02:49:04ID:???
いや勘違いしてた。
基底クラスのメソッドは
継承クラスも基底クラスと同様に実装しておけってことで、
新しいメソッドを持つなって言ってるんじゃないね。そりゃそうか…
0227nobodyさん2005/06/15(水) 03:19:21ID:???
とりあえず、書き込む前に、自信を持ってくれ。
0228nobodyさん2005/06/15(水) 03:42:43ID:???
藁
0229nobodyさん2005/06/15(水) 03:46:15ID:???
結局、動的束縛を説明できない厨スレはここですか?
0230nobodyさん2005/06/15(水) 04:30:26ID:???
ほんの今の今まですげえ意地んなって明快で対称的な説明文をめざして書いてて
あーなんか静的束縛の説明が微妙にあやしーと思って一旦エディタに移動させたら
失敗して消えて頭もまっしろんなってる厨のいるスレはまさにここですYO
0231nobodyさん2005/06/15(水) 07:50:33ID:???
>>230がドジってる間に、とりあえず型のある言語で静的束縛・動的束縛の解説。

◆まずは下準備として、親クラス←子クラス←孫クラスという継承関係とする。
↓のように、親クラスでfuncというメソッドを宣言し、孫クラスでのみオーバーライドする。

class Oya { func() {return "親";} }
class Ko extends Oya { }
class Mago extends Ko { func() {return "孫";} }

◆ここで子クラスのオブジェクトobjを宣言してみる。
↓のように、ユーザ入力など実行するまで未定な要素をからめたコードを書く。

Ko obj; /* 子クラスのオブジェクトとして宣言。 */
switch ( ユーザ入力 ) {
case "子": obj = new Ko();
case "孫": obj = new Mago();
}

/* ここで問題。 */
obj.func();

◆さて、実行時にユーザが"孫"と入力した場合について考えてみる。
objにはnewによって孫クラスの実体(の参照)が代入されました。
obj.func()は"親"を返すのか?それとも"孫"を返すのか?
もう一度書いておくけど、objは親でも孫でもなく、子クラスとして宣言されたオブジェクト。
0232nobodyさん2005/06/15(水) 07:51:09ID:???
答え:
静的束縛なら"親"。
動的束縛なら"孫"。

なぜか?
◆静的束縛は、実行する以前に、
「objは子クラスなのだから、子クラスのfuncを呼び出せばいーだろ」
と決めつける。
子クラスは親クラスを継承している(つまり含んでいる)ので、親クラスのfuncが呼ばれる。

◆動的束縛は、実行時に、
「objが参照しているのは孫クラスの実体だから、孫クラスのfuncを探そう」
と柔軟に対処する。
孫クラスでfuncはオーバーライドされているので、その孫クラスのfuncが呼ばれる。
もちろん、もしオーバーライドされていなければ継承元クラスのfuncが呼ばれる。

つまり、静的=実行前、動的=実行時ってこと。
束縛という言葉が意味不明にきこえるかもしれないが、これは英語のbindingをアフォな人が和訳したため。
元々は「結びつける」というくらいの意味。
C++はデフォルトで静的束縛。JAVAはデフォルトで動的束縛。
0233nobodyさん2005/06/15(水) 07:51:22ID:???
まとめ。
静的束縛=実行前にメソッド決定=今時イラネ
動的束縛=実行時にメソッド決定=多態性の実現

ちなみに動的束縛・静的束縛の話題は、PHPのような型なし言語とはカンケーない。
よってスレ違い。
以上。
0234nobodyさん2005/06/15(水) 16:39:11ID:???
なんでメソッドのオーバーライドの問題が
型のあるなしと関係あるん?
0235nobodyさん2005/06/15(水) 17:04:50ID:???
>>234
誤爆ですか?
0236nobodyさん2005/06/15(水) 20:23:54ID:???
          ,,iiii,,,,,iii,,      ,,,,,,,,,_         
  .______゙!lllll!l!llll!!     ,llllllllllllllliiiiiii,,,,,,,、   
  .llllllllllllllllllllllllllllllllllllllll`      ゙゙゙゙゙!!!!!!llllllllllllllll!    
  .l!!!!!!!!!!!!!!!!!!!!!!llllllllll       .,iiiiiii,,,,,,,,゙゙゙゙゙!!!l゜    
          llllllllll       lllllllllllllllllllliiiii,,,     
          llllllllll        `゙゙゙゙゙!!!!lllllllll゜    
  _______,llllllllll     .,illllliiiiiiii,,,,,,,, ゙゚゙゙′    
  lllllllllllllllllllllllllllllllllllllllll     l!!!!llllllllllllllllllllliiiii,,,,,,、  
  '!!!!!!!!!!!!!!!!!!!!!!!lllllllll|           ゙゙゙゙゙゙!!!!lllllllllllll!:    
                         ゙゚゙゙゙!!°  
                               
  .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,、       ,,,,,,,,,,          
  .lllllllllllllllllllllllllllllllllllli、      lllllllllll          
  .'゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙lllllllllll゙′      llllllllll          
          ,illllllllll゙`       .llllllllll|      ,,,i,,  
      ,,iillllllllll゙`        llllllllll|     ,,,iilllllllli, 
     ,,,iillllllllllllllllii,,,       .lllllllllll   .,,,iiilllllllllll!!゙゜ 
  ,,,,,iilllllllllllll!!!llllllllllllii,,、     llllllllll|.,,,,iiillllllllllll!!゙’   
..liillllllllllllllll!!゙’  ゙゙!llllllllllllii、    .llllllllllllllllllllllll!!゙゙`    
: ゙゙lllllll!!!゙゙`     ゙゙!lll!!゙゜    .゙!lllllllllll!!!゙゙゜       
  .゙゙゛         :        `゙゙゙゙″         
■ このスレッドは過去ログ倉庫に格納されています