トップページ⇒tech
1001コメント377KB

OOP

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/09/10(金) 19:44:50
OOPをネタに罵ったり罵られたりするスレ

0655デフォルトの名無しさん2010/10/11(月) 15:32:52
いっぷくの処理内容がタバコに依存しているかも知れんぞ。
ライターは火打石かも知れんぞ。
0656デフォルトの名無しさん2010/10/11(月) 15:40:32
>>648
横からだけど、俺もOOを勉強したてのころは
お前みたいに訳の分からん事をいっていたよ、懐かしいな。
頑張れよ。
0657デフォルトの名無しさん2010/10/11(月) 16:04:04
でも実際
喫煙者.一服 タバコ ライター
ってどうなんだろうね。
タバコ無しじゃタバコすえないし、タバコ吸うことはタバコのメイン機能なんだから、
タバコ.一服 喫煙者 ライター
が正解のように思える。
だけど、一服の形は人それぞれで、もしかしたらタバコをすわない場合もあるかもしれない。
だから、やっぱり一服は喫煙者に紐付けしたほうが良いかもしれない。
ほらもう解らないよね。
でも言うんだろ?それはどういった状況を前提にしているかによる、と。
だけどそれは裏を返せばコードを使いまわせないってことでもあって、墓穴掘ってるんだよね。
0658デフォルトの名無しさん2010/10/11(月) 16:05:23
>>655
現実に例えて説明するとそういう疑問が出てくるから駄目なんだよな
0659デフォルトの名無しさん2010/10/11(月) 16:09:41
>>603
なんて駄目な設計なんだ・・・ どうしてこんな設計に・・・

まず、
>Aの持ってるC → Cを管理してるD
これはCを、AとDが二重に管理しているという解釈でいいよな?
なんで二重に管理する必要があるんだ、どうせ機能は同じようなものなんだからまとめてしまえ。
Cを管理するA(D)
もしくは、DはAを管理するようにする。
Cを管理するA ← Aを管理するD

つぎ、
>Cを管理してるD → Dの基本クラスのE → Eの持ってるB
そもそもDはEを継承しているんだから、Bも直接管理できるはずだろう。(出来ないならそれは継承するべきではない)
基本クラスのEを気にする必要は無い。
BとCを管理するA(D)
もしくは、 
Cを管理するA ← AとBを管理するD

超すっきり。
そもそも、上にAとBを管理するクラスがあるのに、
>A → B 
なんて直接アクセスするような、行き当たりばったりなコーティングをするからいけないんだ。
これはAがやる仕事じゃないだろ。なんで上に管理させてるんだよ。
0660デフォルトの名無しさん2010/10/11(月) 16:10:30
>>658
でも、
いっぷく ( &タバコ, &ライター, &喫煙者 );
で示されるタバコとライターと喫煙者の関係は、現実でも成り立つのだ。
あっても、引数の順番に野次が飛ぶぐらい。
0661デフォルトの名無しさん2010/10/11(月) 16:32:54
>>657
>タバコ.一服 喫煙者 ライター
タバコ自体が一服の機能を持つとか、タバコが喫煙者を使うとか、
そんな馬鹿なこと言ってんじゃねーよ。
0662デフォルトの名無しさん2010/10/11(月) 16:37:53
>>661
現実に例えて説明するとそういう疑問が出てくるから駄目なんだよな
0663デフォルトの名無しさん2010/10/11(月) 16:47:20
>>630
>ボタンクラスを継承してくださいとか
こういうことをするメリットはちゃんとあるぞ。

たとえば、ボタンクラスを使うフォームクラスがあるとする。
フォーム.ボタン配置(ボタン)
これは普通に使う分には問題ないよね?

じゃあ、このフォームクラスに渡すボタンクラスの機能を変えたいとする。
もし、ただ単純に新しいボタンクラスを作っただけだと、
フォームクラスにそれは渡せないよね?
それがどういうものかフォームクラスには分らないから当然なんだが。

でも、フォームクラスがそれをどういうものか分れば話は別だ。
それを実現する機能が、継承なんだ。

新しいボタンクラスに、元のボタンクラスを継承させると、
新しいボタンクラスに、元のボタンクラスの機能とインターフェースが出来る。

フォームクラスは元のボタンクラスの機能とインターフェースの仕様は知っているので、
新しいボタンクラスに、元のボタンクラスの機能とインターフェースが備わっていれば、
フォームクラスはまるで元のボタンクラスを使うように、新しいボタンクラスも使えるようになるんだ。
0664デフォルトの名無しさん2010/10/11(月) 16:49:23
>>662
疑問が出てくるから何?
それは全く関係ないプログラムの機能の話とは、全く繋がらないぞ。
関連性がまるでない。それを見てどうしろと言うんだ。
0665デフォルトの名無しさん2010/10/11(月) 17:31:36
実空間の物体の用法や使用例を基にオブジェクト指向的分析を行うのが難しい理由ってなに?
人それぞれ抽象度や理解力が違うからなの?
0666デフォルトの名無しさん2010/10/11(月) 17:36:52
>>665
実空間の物体の用法や使用例が、
自分の作るプログラムの用法や使用例に合っていないと、
分析しても変な結果になる。

そこに原因があるんじゃないかと。
0667デフォルトの名無しさん2010/10/11(月) 17:39:34
みんな共有できる思いは「動きゃいいんだよーぅ」だな
0668デフォルトの名無しさん2010/10/11(月) 17:41:43
>>665
鳥クラスを作ってflyインタフェースをつけてもペンギンやダチョウは飛べない
そういう現実の分類と実際とのギャップは色々ある
長方形を継承して正方形を作るのが失敗だという古典的な例とか調べてみれば
0669デフォルトの名無しさん2010/10/11(月) 17:43:21
>>667
そうだなw

ただ、その何とか動いているものに、
何かしらの手を加える必要に迫られることは、絶対にあるから大変。
0670デフォルトの名無しさん2010/10/11(月) 17:58:07
>>666
その通り。
だから、型やオブジェクトにメソッドじゃーなんじゃーって機能を持たせても意味ない。
そのオブジェクトがどう使われるかは、使う人次第。
画像ファイルに展開用コードが内包されていないのと同じ。
ヘッダでフォーマットさえわかればよい。
どう扱うかはプログラムが決める。
0671デフォルトの名無しさん2010/10/11(月) 18:03:51
>>670
自販機の中のジュースを、外の人間が自由に取り扱ってもいいなら、それでもいいけどな。
0672デフォルトの名無しさん2010/10/11(月) 18:32:30
>>670
あと、データそのものと、データの入れ物を一緒にすんなよ?
0673デフォルトの名無しさん2010/10/11(月) 19:22:03
何言ってるんだろう。翻訳求む。
相当都合の悪いこと言っちゃったかな。
0674デフォルトの名無しさん2010/10/11(月) 19:34:41
タバコとライターは喫煙者にとってhas aじゃないの?
別途買うなり借りるなりでセットして、一服は引数無し。
属性コーヒーが非nullなら、一緒に飲んだって構うまいよ。
0675デフォルトの名無しさん2010/10/11(月) 19:39:30
大丈夫
俺もわからん
0676デフォルトの名無しさん2010/10/11(月) 19:40:48
ソースコードを日本語に無理やり改訳するツールでも使ってるんじゃね?
0677デフォルトの名無しさん2010/10/11(月) 20:35:56
>>659
Cは何かの操作を提供するインターフェース的オブジェクトで
操作の実態はDがまとめて実行しているかもしれない

Bはいくつかアルゴリズムを持ったデータベース的オブジェクトで、
E(D)はこのアルゴリズムを参照してCで受け付けた操作を実行しているかもしれない
そしてDはEによって回される処理の実装かもしれない

今、Aの内部状態によってBのアルゴリズムを切り替える必要が出てきたとする。

ここまで行くとDが処理の基幹を担う重要なオブジェクトであることはうっすらみえてくるはず。
Dが直接AやBを管理して結合を強めることに危険を感じ無いか?
ましてやAとDが同一なんて有り得ない。
0678デフォルトの名無しさん2010/10/11(月) 21:06:01
>>670
そして色んなコードが自分の都合のいいようにデータを操作しまくって収集がつかなくなるんですね、わかります。
0679デフォルトの名無しさん2010/10/11(月) 21:30:10
>>673
画像データはデータそのもの。
型やオブジェクトはデータの入れ物。
ちゃんと言った方がよかったな。
0680デフォルトの名無しさん2010/10/11(月) 22:07:25
>Cは何かの操作を提供
これで一度納得したのに、
>E(D)はCで受け付けた操作を実行
で、Cがなんなのかよくわからなくなった。
Cが実行する操作を決めてるの?

>DはEによって回される処理の実装
これなら、DがEを継承する必要なくね?
EがDを呼び出すだけでいい。

>Dが直接AとBを管理して結合を強めるのに危険を感じないか?
感じない。
そもそも、Dと、AやBの間に何かかませても、結合は弱くならない。面倒なだけ。

それより、AやDが、Cを別々に管理や操作する方が危険を感じる。
感じない奴はプログラマやめろ。

>AとDが同一なんてあり得ない
そこはよくわからなかったから、二通り考えたけど、もう一方はどう思う?
0681デフォルトの名無しさん2010/10/11(月) 22:15:36
だめだこりゃ
0682デフォルトの名無しさん2010/10/11(月) 22:25:17
それぞれの理解度が違うんじゃあ
平行線ですよね
0683デフォルトの名無しさん2010/10/11(月) 22:29:59
そう思うならさっさと叩きのめせばいいのに。
0684デフォルトの名無しさん2010/10/11(月) 22:32:55
そもそも継承するってことは多態が必要ということなので
Dと似た振る舞い(この場合ばBのアルゴリズム利用の何らかの実装)をする
Eを継承したオブジェクトが他に存在すると考えるのが妥当

もっと言うとDやEを継承した他オブジェクトを保持したり扱ったりするクラスも他に存在するんだろう
0685デフォルトの名無しさん2010/10/11(月) 22:35:42
そもそもAからBにアクセスしたい!と思ったときに
可能であれば他に一切変更を加えずに自動的にボッコシ穴あけてアクセスできるような仕組みが
(ようするにそれによって依存関係が崩壊しない保証ができるような機構が)
存在すればOOPももう一歩価値が高まるのに、って話では
0686デフォルトの名無しさん2010/10/11(月) 22:53:32
>>684
>継承するってことは、多態が必要
なにそれ初耳。どこの情報?

>Dと似た振る舞い
何が?
Eがということなら、なに当たり前(ry

>DやEを継承したクラスが他に存在
Dが継承されてるなら、慎重にやる必要があるな。
でも、Eが他のクラスに継承されてたとしても、Dには何の関係も無いだろう。


ところでこれは>>680に対する反論なのか?
0687デフォルトの名無しさん2010/10/11(月) 22:56:10
>>685
そんな行き当たりばったりなコーティング、オブジェクト指向じゃなくても有害だわwww
0688デフォルトの名無しさん2010/10/11(月) 23:09:27
>>686
つ 読解力
0689デフォルトの名無しさん2010/10/11(月) 23:11:10
>>687
依存関係が崩壊しない保証があればどれだけ行き当たりばったりでもそれは問題にならない
OOは依存関係を整理するためにあるんだから
0690デフォルトの名無しさん2010/10/11(月) 23:17:44
>>688
>>684から他に何を読み取れと。
説明も何もないぞ。
0691デフォルトの名無しさん2010/10/11(月) 23:21:26
>>689
いままでの話を無視すんな><
そもそも、依存関係が崩壊しない保証を確認してコーティングするのは、行き当たりばったりじゃなくね?
0692デフォルトの名無しさん2010/10/11(月) 23:31:59
Java/C++でひとりでコーディングしてるとすごくしっくりくる書き方がある。
これをチーム開発にしたとたんわけわからんイベントが多数発生する。
この原因を理解して言葉にしたいんだが。
0693デフォルトの名無しさん2010/10/11(月) 23:50:41
>>692
つジョエルテスト
最近知ったやつだけど、チームの問題を探る役に立つかも?
0694デフォルトの名無しさん2010/10/11(月) 23:58:35
ぐぐってみたけどそういうことじゃないみたい。
0695デフォルトの名無しさん2010/10/12(火) 00:29:14
>>691
だからそういう保証が簡単に取れる仕組みがあれば良いねって話でしょ
0696デフォルトの名無しさん2010/10/12(火) 00:35:12
多態以外で継承使う奴は差分プログラミングとOOPの区別が付いてないから厄介
チームに居ると割と複雑なバグだしよる
0697デフォルトの名無しさん2010/10/12(火) 00:41:22
>>696
横からで悪いが、お前はオブジェクト指向が分かっていない。
いい加減、自分だけレベルが低いことに気付け。
0698デフォルトの名無しさん2010/10/12(火) 00:43:36
あれ?OOPじゃなくてOOなの?
0699デフォルトの名無しさん2010/10/12(火) 00:44:58
>>695
いや、そんな話しはしてなかった。
>>603の例の設計は駄目だねって、俺が始めた話し。
0700デフォルトの名無しさん2010/10/12(火) 01:15:33
>>699
別に提案自体はそんなに悪筋じゃないし、そういう言い方せんでも良いのでは。
0701デフォルトの名無しさん2010/10/12(火) 06:39:29
>>697
分かってないのはお前だ。
どうせOOの一番の特徴は再利用性とでも思っているのだろう。
0702デフォルトの名無しさん2010/10/12(火) 11:00:35
>>696
>差分プログラミングとOOPの区別が付いてないから厄介
差分プログラミングとOOPが別物だと言う人間は始めて見たな。
これはどんな根拠なんだ? 誰か教えてくれ。
0703デフォルトの名無しさん2010/10/12(火) 11:14:58
>>702
馬鹿な人間が考えることは、普通の人間には解らん。
まっ天才が考えることも普通の人間には解らんが。
0704デフォルトの名無しさん2010/10/12(火) 12:06:09
>>702
差分プログラミングはあくまでOOPが広めた一要素でしかないのであって
OOP=差分プログラミングでは無いんだが
何故かやたらと差分プログラミングのための継承を乱発する奴が居る

という意味だと思う
0705デフォルトの名無しさん2010/10/12(火) 19:13:53
差分プログラミングの「差分」が、バリエーションを増やすことではなく単なる機能拡張を意味しているなら、
最近の考え方では誤りを含んでいる可能性が高いとされる。
07067052010/10/12(火) 19:15:54
継承で機能を増やそうとする前に、もう一個クラスを切って委譲することで解決できないか
考えてみた方が良いと思う。
0707デフォルトの名無しさん2010/10/12(火) 19:32:54
馬鹿な人間が考えることは、普通の人間には解らん。
0708デフォルトの名無しさん2010/10/12(火) 21:50:07
>A → Aの持ってるC → Cを管理してるD → Dの基本クラスのE → Eの持ってるB

設計は問題あるかもしれないけど
これって別に悪いことじゃないよね?

OOPというかカプセル化は上記のようにするのが目的だと思うんだが
0709デフォルトの名無しさん2010/10/12(火) 22:20:31
>>704
その意味だと”区別”とは言わない。
0710デフォルトの名無しさん2010/10/12(火) 22:29:33
OOPとしての話なら
同じ基本クラスAを継承したクラスBとクラスCがあったとして
クラスAが使われている部分を全部クラスBやクラスCに置き換えても正常に動作しなければならない

つまり多態を必要としていなければ継承は使うべきでない
0711デフォルトの名無しさん2010/10/12(火) 23:29:43
>>708
クラス図を書いて見たけど、全然悪くないと思う。

例えばMVCのビジネスロジックDクラスがCクラスを管理して
そのCクラスをViewでコンポジションするなど普通に行なう。
Dクラスがスーパークラスを持っていてもおかしくないし
そのクラスが別のクラスを持つことも普通にある。

駄目だと言っている人間は本当に実践でOOPを使えているのか?

0712デフォルトの名無しさん2010/10/12(火) 23:38:10
>>711
俺が何を駄目と言ったかちゃんと見た?
まあ、その文の様子だと見てないんだろうけど。
0713デフォルトの名無しさん2010/10/12(火) 23:48:19
お前だれだよ
0714デフォルトの名無しさん2010/10/12(火) 23:49:48
>>713
>>659です。
0715デフォルトの名無しさん2010/10/12(火) 23:54:55
>>710
お前C++房だろう。OOPを勉強して出直せ
他の言語を知っている人間ならそんなバカなこと書かないぞ。
0716デフォルトの名無しさん2010/10/12(火) 23:57:32
他人だがなぜそう思ったかさっぱり分からん
0717デフォルトの名無しさん2010/10/13(水) 00:00:13
ポリモーフィズムって定義曖昧じゃね?
0718デフォルトの名無しさん2010/10/13(水) 00:03:15
>>715
それ、単なるLSPじゃねーの
0719デフォルトの名無しさん2010/10/13(水) 00:07:05
>>715 >>710 じゃないが, OO の定義をしてくれw
まじで OOP って声高にさわぐ奴って何なのよ?

理屈、説明しても分からない
要求仕様を渡しても自分の都合のいいように改変してくる
数式渡しても全然別のものを作ってくる

まともな頭もってる奴って OO って叫ばないぞ
0720デフォルトの名無しさん2010/10/13(水) 00:11:12
>>714
659を読んだから実践でOOPが使えない人だと思ったけど。
0721デフォルトの名無しさん2010/10/13(水) 00:12:41
>>719
OOは知らんが、OOPは言語によって形態が違うな。
共通してるのはカプセル化ぐらいだ。
0722デフォルトの名無しさん2010/10/13(水) 00:18:02
>>720
本当かよww
一応言っとくけど、俺は>>711の、全く悪く無い、ってところ以外は同意してるぞ。
>>659もそれが前提になってるし。
0723デフォルトの名無しさん2010/10/13(水) 00:18:54
継承なんて極力つかうべきじゃないよ
0724デフォルトの名無しさん2010/10/13(水) 00:21:33
継承って可読性下げるよね。
メリットがないときは使わないほうがいいでしょう。
0725デフォルトの名無しさん2010/10/13(水) 00:23:38
まあ、よく分からない物は使わない、は賢い判断だわな。
継承やらテンプレートやら。
0726デフォルトの名無しさん2010/10/13(水) 00:41:19
>>721
そんなこと言ってるんじゃないんだな, これが…
たとえばの話なんだが,
MPEG シリーズってのは、規格書の書式含めて、ある意味 OO の産物なわけだ
これをふまえて, この規格書のここからここまでを何とかしたいとか言うわけ
で、連中、プログラム書いてくるんだが、
規格書に書いてあることに堂々と違反する
規格書中の数式を理解できないんだろうけど, アルゴリズムがおかしい
わかりやすく数式書き直してあげても数式通り動かない
でも, 「うちは OO してますから, 大丈夫なはずです!!!」と声高に言う
つか、 OO ってやってるふりしてりゃ許してもらえる隠れみのになってるだろw
0727デフォルトの名無しさん2010/10/13(水) 00:46:02
>>726
それOO以前の問題じゃねwww
プログラマに必要な技能が備わって無いwww
0728デフォルトの名無しさん2010/10/13(水) 00:46:18
哲学者ウィトゲンシュタインは
「思考の限界は言語の限界」だと言っている。
まっ思考には非言語的要素もあるから、これが全て正しい訳じゃないが
しかし、ほとんどの思考は言語で考え、言語で表現する。

だからC++房は駄目なんだよ。C++言語の限界が思考の限界になっている。
C++に無い部分が理解出来ない。
0729デフォルトの名無しさん2010/10/13(水) 00:52:17
>>727
そだよ! じゃなくって、
「OO してますって言えば世間が許してくれる」
と思う、その感性ってどぉよ???
0730デフォルトの名無しさん2010/10/13(水) 00:55:06
>>729
そいつらはきっと、世間から無視されるだけだからほっとけ。
0731デフォルトの名無しさん2010/10/13(水) 00:59:22
>>729
相手に仕様が伝わらないのは、お前の日本語が”変”だからじゃないのか。
0732デフォルトの名無しさん2010/10/13(水) 01:02:22
>>731
>>726は、説明書が読めないやつが居る、って言ってるんだよ。
0733デフォルトの名無しさん2010/10/13(水) 01:02:36
>>730
なんで日本語しゃべらんとあかんの?
数式読めないみたいだから、数式を高校生でも読める数式に書き換えただけなのに
07347332010/10/13(水) 01:12:17
すまん, アンカー間違えた >>731 だったわ
0735デフォルトの名無しさん2010/10/13(水) 01:17:05
>>722
>なんで二重に管理する必要があるんだ、どうせ機能は同じようなものなんだからまとめてしまえ。
そもそも2重管理じゃない。他で管理しているインスタンスを集約しているケースなどいくらでもある。

>そもそもDはEを継承しているんだから、Bも直接管理できるはずだろう。(出来ないならそれは継承するべきではない)
>基本クラスのEを気にする必要は無い。
Privateフィールドでのコンポジションを認めないのか?これも普通に存在するケースだ。
0736デフォルトの名無しさん2010/10/13(水) 01:23:43
>>732
>説明書が読めないやつが居る、って言ってるんだよ。
説明書w お前が読めていない。
0737デフォルトの名無しさん2010/10/13(水) 01:24:02
チューリング完全すら知らないやつがいる
0738デフォルトの名無しさん2010/10/13(水) 01:25:24
>>733
>なんで日本語しゃべらんとあかんの?
何語で喋っているの?
0739デフォルトの名無しさん2010/10/13(水) 01:35:27
>>735
>そもそも2重管理じゃない。他で管理しているインスタンスを集約しているケースなどいくらでもある。
百歩譲って二重管理じゃないとしても、Aの所有物にDが干渉していいのか?
データの整合性ちゃんととれるのか?
そもそもそれはプログラム的に自然なのか?

>Privateフィールドでのコンポジションを認めないのか?これも普通に存在するケースだ。
コンポジションを知らなかったので、wikipediaで調べた。
>コンポジションは、両クラス間に強いライフサイクルの依存がある場合に使用する。
>つまり、コンポジション関係にあるクラスの集約しているオブジェクトが削除されると、必ず集約されている側のオブジェクトはすべて削除される。
Privateフィールド関係なくね? というのは置いといても、
全く関係ないこと言ってないかこれ。
0740デフォルトの名無しさん2010/10/13(水) 01:36:17
>>736
比喩も認めない頭の固い人か。
07417332010/10/13(水) 01:46:42
>>738
英語でもドイツ語でも… ってのは、さておき、本質は数式部分だから……
つか、おまえ、数式読めない可愛そうな人か?
0742デフォルトの名無しさん2010/10/13(水) 02:17:35
>>739
>百歩譲って二重管理じゃないとしても、Aの所有物にDが干渉していいのか?
603が正しく理解出来ていないのか? 管理しているのはDなんだから
Dが所有物CをAが参照(委譲)しているよ考えるだろう。
何をもって干渉やデータの整合性と言っているのか分からないが
オブジェクト指向はオブジェクト内で完結するように作るものだ。

>Privateフィールド関係なくね? というのは置いといても、
>全く関係ないこと言ってないかこれ。
まぁコンポジションでも集約でもどちらでもいいんだが
Eが管理クラスだから生成・破棄を制御するのが普通だと思ってコンポジションにした。
俺が言いたいのは、PrivateフィールドならEを継承したDから直接Bを参照するのは不可能だと言うことだ。
Privateフィールドを子クラスが参照出来ないぐらい理解出来るだろう。

>基本クラスのEを気にする必要は無い。
だからこれは間違い。
0743デフォルトの名無しさん2010/10/13(水) 02:27:34
>>741
喋れるのは中国語か韓国語だと思ったよ。
>そだよ! じゃなくって、
そだよw

まぁこれ以外にもおかしな日本語いっぱい使っているし大丈夫かw
0744デフォルトの名無しさん2010/10/13(水) 02:30:24
>>740
なぜそこで比喩を使う? 言い訳が苦しいなw
0745デフォルトの名無しさん2010/10/13(水) 11:35:24
MVCに関しての質問です。

wikipediaのMVC項目、「MVCのシナリオ」で、下記の疑問をもちました。

・Vにイベントハンドらを関連付ける人はこのモデルの上位に当たるオブジェクトが担当する?
・Cはオブザーバー的な役割を持っている?
・VはMを参照として持っている?なのでVが直接Mからデータを参照するのだろうか?
・Cは入力のオブザーバー的な役割のようだが、出力は担当しないのだろうか?

記事の下部にありますシナリオですが、
私としては以下のように読み取りました。

1. ユーザがviewに入力を行う
2. viewからの入力により、Vに登録したcontrollerのイベントハンドラやコールバック等がよばれる。
3. controllerが必要に応じたmodelのメソッドを呼び、ステータスを更新する。
4. 3の結果を表示する為にviewがmodelから必要なデータを取得し出力する。

また、概念図では相互残照を行っているように見受けられます・・・。
0746デフォルトの名無しさん2010/10/13(水) 11:56:59
疑問の詳細には答えないけど、wikipediaのMVCの項目は適当だから参考にしないほうがいいと思う
特にシナリオの部分は酷い、出典が書いてないオレオレ脚注とか付いてるレベルだよ
要出典タグつけたの俺だし

>また、概念図では相互残照を行っているように見受けられます・・・。
あの図はUMLではないし、Observerパターンがわかってれば別に変でもない
0747デフォルトの名無しさん2010/10/13(水) 12:44:45
>>742
>管理しているのはDなんだから
>Dが所有物CをAが参照(委譲)しているよ考えるだろう。
ふーん。>>742はそう見ているのか。
まあ、実はどっちでもいいんだけどw

>何をもって干渉やデータの整合性と言っているのか分からないが
え? ・・・え?
干渉はまだしも、データの整合性が分らないとな・・・? お前それ本気で言ってる? 
どんなプログラムでも、二つ以上の別々の場所から参照されてるデータは、
データの整合性の問題が付きまとうものなんだがなあ・・・

>俺が言いたいのは、PrivateフィールドならEを継承したDから直接Bを参照するのは不可能だと言うことだ。
>Privateフィールドを子クラスが参照出来ないぐらい理解出来るだろう。
ああ、そうか。 それだと直接管理することは出来ないな。
確かに、Eは気にする必要がある。
と言っても、protectedやpublicなメンバから管理することは出来るが。

で、これだとまた別の問題として、継承する意味はあるのか?と言うのはある。
委譲以上のメリットを見いだすなら、
protectedなメンバからそれなりに自由な管理が出来る、と言うのがメリットになるか。
直接管理するのと同じくらいの自由度でね。


・・・あとは、>>742の用語の理解度は大丈夫か? と言うのは、まあ置いとこう。
0748デフォルトの名無しさん2010/10/13(水) 13:23:39
>>746
レス、ありがとうございました。
あの記事は当てになりませんが・・・。

出直してまいります。
0749デフォルトの名無しさん2010/10/13(水) 15:06:51
>>747
結局603を間違いじゃないと認めたな。
しかし、>>659は酷いな、お前Privateフィールドも分からないとは
オブジェクト指向でプログラム作ったことないだろう。
0750デフォルトの名無しさん2010/10/13(水) 15:30:06
>>749
いや、半分だけだぞ?
つーか、お前プログラム実装したこと無いだろ?
0751デフォルトの名無しさん2010/10/13(水) 19:35:55
protectedメンバとかpublicメンバとか言い出す時点で程度が知れるわけだが
0752デフォルトの名無しさん2010/10/13(水) 20:40:52
議論の元になってる>>603はムよりマ向けの話題だな

設計は別に悪くないけど設計者(と開発体制)が悪い。
0753デフォルトの名無しさん2010/10/13(水) 21:17:50
いつもの人だが、凄いスレが伸びてるな。バカが来たのかと思ったらやっぱり。
AとかBとかCとかDとか頭沸いてるんじゃね。マトモな会話しやがれ。

原文は、やりたいことが素直に書けないから嫌だ、そういってるだけだろ。
やりたいことってのはつまりは手続きで、まぁアルゴリズムや制御構造や関数の類だな。
それが素直にかけない・・・まぁ当たり前だわな。
だってOOPは制御構造をオブジェクト単位でぶつ切りにしてパッパラパーにしちゃうからな。
だから、その指摘自体は何も間違っちゃいないんだぜ?
よくそんなことでこんな長文合戦が続くもんだな。
0754デフォルトの名無しさん2010/10/13(水) 21:24:27
まぁだからアレだな。何でもかんでも、なんせ全部のことをクラスという道具でやろうとするから、
こんなことになってるんだな。OOPもそうなんだけど、クラス云々言ったときに何目的ベースの話なのかが見え無いと言う。
ポリモとカプセル化と差分プロの話がごっちゃになって展開される。だから意味解らん。

もうね、構文わけときゃいいと思うよ。
カプセル化はカプセル化専用の構文なり機構なり作ってそれで固めると。
その固めたオブジェクトをどうコミュニケーションさせるかは、
また別の構文なり機構なりですると。

Unixだと、プログラムはプログラムで閉じてて、
それをシェルを使ってどう組み合わせるかはまた別の話だったりして。
だから解りやすいんだよ、設計するのも、こう言うところで会話するのも。
何使ってるかで目的が明確だから。
■ このスレッドは過去ログ倉庫に格納されています