オブジェクト指向システムの設計 173 [無断転載禁止]©2ch.net

レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
垢版 |
2017/08/08(火) 17:52:14.38ID:4Kd2O+xB
前スレ
オブジェクト指向システムの設計 172
http://mevius.2ch.net/test/read.cgi/tech/1467992113

類似スレ
手続き型システムの設計 1
http://mevius.2ch.net/test/read.cgi/tech/1500282714
2017/09/24(日) 23:48:53.18ID:R8lp94JX
>>965
> その時に必要なメソッドはどんなものか?
お前も相当な馬鹿だな。
2017/09/24(日) 23:59:11.94ID:dIaNhcU3
>>966
設計というのはそういうものだぞ?
アルゴリズムじゃないんだから、
クラスがあってどんなメソッドが必要かっていうのを
提示しなければいけない

例えばソート関数はアルゴリズムでこれ単体では設計ではないが、
そのソートアルゴリズムを切り替え可能な汎用的な
コレクションクラスのようなものは設計となる
2017/09/24(日) 23:59:55.88ID:R8lp94JX
>>949
結局俺の疑問>>951には答えてくれないのか?

まあそちらは分かっているとは思うが、
コマンドパターンをその名の通り、「コマンドにオブジェクトを与える」とするなら、
殆どの場合で関数ポインタを直接差し込む必要はない。
通常はキーを与え内部でハッシュ等から関数ポインタを呼ぶ。

ただ、Javaでは関数ポインタが取れないから、そもそもこの「関数ポインタ引き用ハッシュ」を作れない。(はず)
だからJavaでコマンドパターンを記述すると無理に継承が行われ、説明が余計に意味不明になる。
それが俺が基本的に説明のコード部分を無視している理由。Javaには構造を正しく記述する能力がない。
ただPythonでもそうなのなら、関数ポインタを差し込むのが定義なのかもしれんが。
2017/09/25(月) 00:29:03.77ID:8cq/CpUk
>>968
コマンドオブジェクト内のメソッドのことを関数ポインタと呼んでるんなら
コマンド内には関数ポインタは必須だよ(間接的に呼び出すのでも別に構わないけど)

コマンドを実行する側が、コマンドの内部実装を気にする必要がなく
executeメソッドやundoメソッドみたいに共通の呼び出しで
各コマンドを処理できることに意味がある

Javaも8からラムダ使えるから単なる関数の実行だけなら
インターフェースや継承使わなくても関数ポインタ的なものを
実行側のリストに直接追加するなりハッシュ作って追加するなりできるよ
2017/09/25(月) 00:36:24.94ID:8cq/CpUk
undo/redoの仕組みは
- 操作を記録する方法
- 状態を記録する方法
- 状態の差分を記録する方法
のどれかかその組み合わせ

コマンドパターンでのundoは操作を記録して逆操作をする
メメントパターンでのundoは状態を記録
それぞれ良し悪しあるから状況にあったのを選べばいい

何を記録するか以外に
サポートするundoの機能によって記録するデータ構造が変わる
stackとかtreeとか
2017/09/25(月) 00:51:45.61ID:N+1HPlkM
スナップショットってどうやって実現すればいいの?
undo/redoってどうやって実現すればいいの?

その答がデザインパターンなんだな
2017/09/25(月) 00:53:39.30ID:3XblncDf
>>969
> コマンドオブジェクト内のメソッドのことを関数ポインタと呼んでるんなら
> コマンド内には関数ポインタは必須だよ(間接的に呼び出すのでも別に構わないけど)
ああ、この認識でいい。
Java7まではメンバポインタを関数ポインタ代わりとみなし、差し込んで上位からメソッド呼び出ししかなかったろ。

そこで疑問だが、ここで関数ポインタ直接差込のメリットあるか?
俺だったらハッシュをクロージャで捕捉して、
「この呼び出し機構から呼べるのはこのハッシュ内関数のみ」として制限する。
この方がソース上で一覧も見やすくなるし。
直接差込だと何でも実行可能になり、どうしてもバラけるし、
(俺はあまり気にしないが)変な物を差し込まれてないかのテスト等がしにくい。
パターン作った連中はここら辺の事情は分かっているはずで、ちょっと不自然さを感じるんだが。
2017/09/25(月) 00:55:43.76ID:N+1HPlkM
メンバポインタってなんだ?
2017/09/25(月) 00:57:17.48ID:N+1HPlkM
C言語には関数ポインタは有るけど、
その関数ポインタは名前の通り関数へのポインタであって
データへのポインタは含まないんだよな
だから関数とデータで別々に扱わないといけない
2017/09/25(月) 00:57:27.34ID:3XblncDf
>>972訂正
× メンバポインタ
○ メンバ関数ポインタ
まあ分かる範囲だろ。
2017/09/25(月) 00:58:44.83ID:N+1HPlkM
>>972
> パターン作った連中はここら辺の事情は分かっているはずで、ちょっと不自然さを感じるんだが。

パターンは実装ではないので、
あるパターンに対して幾つもの実装がある
言語が変われば実装は異なる

だから君みたいに実装のことなんて考えてないんだよ
あくまで設計だから一つ上の層から物事を考えてる
2017/09/25(月) 00:59:09.44ID:N+1HPlkM
>>975
メンバ関数ポインタって何?
Javaに関数ポインタなんて無いんだが
2017/09/25(月) 03:20:37.55ID:eX6e3GbI
みんな話が通じてるかのように会話してるけど俺にはさっぱりだ
ロジックを無理に日本語にせずJavaかC++の疑似コードかなんかで書いてくれた方が誤解なく伝わるぞ
2017/09/25(月) 03:21:41.82ID:/NZHFTqW
しったかの応酬
2017/09/25(月) 05:13:23.75ID:2SJhli4d
>>956
理由を挙げることができないのは馬鹿だからですか?
小学生とかよくそうだよね
2017/09/25(月) 22:28:14.08ID:DU69B7yE
デザパタって何?
2017/09/25(月) 22:34:32.01ID:AtwfXPhb
なんだろう?
2017/09/25(月) 23:07:47.29ID:N+1HPlkM
>>981
> デザパタって何?
デザインパターンのこと
設計のパターン

例えばソートでもアルゴリズムによって
バブルソートなどという名前がついているように、

デザパタでもパターンに名前をつけてる。
もし名前がなくて「undo/redoを実現するやり方」という言い方をしたら
どうやってやるのか?っていうのを他の人と知識の共有ができないし、
逆にどうやってやるのか?を「オブジェクトをリストの形でもって
それぞれが変更内容の情報を持っていて、その変更内容を逆方向に
適用することでundo、順方向に適用することでredoを実現する」という
言い方をしたら冗長な上に正確ではないし、undo/redo以外にも使えるってことが
わからないし、まあ何も良いことがないだろ?

名前をつけることで、デザパタの知識を持っている人の間で
知識を共有できるわけよ。

その知識のカタログがデザインパターン
2017/09/25(月) 23:20:57.87ID:5HagYgjy
哲学
2017/09/25(月) 23:30:01.68ID:3XblncDf
>>981
ゴミ。
結局デザパタ厨は誰もundoすらまともに実装出来なかったろ。推して知るべし。
2017/09/25(月) 23:36:45.43ID:N+1HPlkM
いや・・・クイックソートという名前を出してる人に
クイックソートを実装してみろって意味不明だろ。
2017/09/25(月) 23:40:43.21ID:3XblncDf
ID:3Bk8qYPA == ID:N+1HPlkM
2017/09/25(月) 23:42:00.75ID:N+1HPlkM
>>978
外れw
2017/09/26(火) 00:05:37.02ID:3DlL6rrx
物凄く残念な人が住み着いたから
しばらくはこのスレもお休みだな
2017/09/26(火) 00:43:54.35ID:wPSfJS/Y
俺は最初から居たから、その理論ならデザパタ厨がコミだということになる。

無理に布教しようとするからおかしな事になる。
仮にデザパタ厨がundo如きピシッと実装出来ていれば、自然と布教出来ただろうに。
この有様では訴求力なんて皆無だろ。
2017/09/26(火) 00:47:18.92ID:Yx2E7i/E
>>990
反デザパタのお前に訴求力があればその台詞も格好ついたんだろうけどなあ
2017/09/26(火) 01:04:27.60ID:w3seKs+r
次スレ立てろ
2017/09/26(火) 01:10:41.31ID:wPSfJS/Y
>>991
俺は「反デザパタ」ではなく、「デザパタは役に立たん」と言っているだけ。
ソースはデザパタ厨の実力。
2017/09/26(火) 01:34:04.11ID:SmezMtDi
ID:3XblncDf=ID:R8lp94JX=「構造体」を適宜「オブジェクト」に読み替え関数ポインタ/関数オブジェクト「ラッパ」パターン君

ゴミw
2017/09/26(火) 01:35:14.08ID:SmezMtDi
デザパタは必要

ソースは
「構造体」を適宜「オブジェクト」に読み替え関数ポインタ/関数オブジェクト「ラッパ」パターン

これ読んだだけでわかる
2017/09/26(火) 02:46:47.83ID:LgPIDr44
デザパタ、デザパタうっせーよ
デザインパターンな
2017/09/26(火) 03:18:16.89ID:shxtGnUG
デザパタ
2017/09/26(火) 03:21:34.51ID:shxtGnUG
ザパタデ
2017/09/26(火) 03:22:11.12ID:1aSY2upq
>>996
目立ちたがりやさん
2017/09/26(火) 03:22:32.56ID:shxtGnUG
パタデザ
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 48日 9時間 30分 18秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況