前スレ
オブジェクト指向システムの設計 172
http://mevius.2ch.net/test/read.cgi/tech/1467992113
類似スレ
手続き型システムの設計 1
http://mevius.2ch.net/test/read.cgi/tech/1500282714
オブジェクト指向システムの設計 173 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2017/08/08(火) 17:52:14.38ID:4Kd2O+xB952デフォルトの名無しさん
2017/09/24(日) 21:34:19.75ID:6WCXGFDs お前ら暇そうだな
953デフォルトの名無しさん
2017/09/24(日) 21:45:55.89ID:/PuckvVk テキストエディタとか
操作毎にスナップショット撮るわけにもいかんだろ
オペレーション毎に逆捜査も実装しとんの?
それともうまいこと変更箇所だけ前後を記憶してるのか
操作毎にスナップショット撮るわけにもいかんだろ
オペレーション毎に逆捜査も実装しとんの?
それともうまいこと変更箇所だけ前後を記憶してるのか
954デフォルトの名無しさん
2017/09/24(日) 22:31:02.79ID:5g9dg2+V >>918
頭の中でシュミレーションできる演繹な人なら
逆の作用を実装しなきゃいけないこと、
作用にかかわる環境、DB等も含め保存しとかないと再現できないこと、
が想定できるからcommandのようなものでなく状態の方を保持した方が楽とわかる
数学の公式を暗記する人と、自分で導いたり証明できる人との差だな
そしてわかってる人に説明するときピタゴラスの定理とかいえばいちいち証明せずに簡潔に伝わる
これが共通認識
デザインパターンは演繹と経験の帰納からによるベストプラクティスでもあるが、どこにでも使いたがるゴールデンハンマーアンチパターンもある
お前のように暗記するだけの奴は陥りがち
頭の中でシュミレーションできる演繹な人なら
逆の作用を実装しなきゃいけないこと、
作用にかかわる環境、DB等も含め保存しとかないと再現できないこと、
が想定できるからcommandのようなものでなく状態の方を保持した方が楽とわかる
数学の公式を暗記する人と、自分で導いたり証明できる人との差だな
そしてわかってる人に説明するときピタゴラスの定理とかいえばいちいち証明せずに簡潔に伝わる
これが共通認識
デザインパターンは演繹と経験の帰納からによるベストプラクティスでもあるが、どこにでも使いたがるゴールデンハンマーアンチパターンもある
お前のように暗記するだけの奴は陥りがち
955デフォルトの名無しさん
2017/09/24(日) 22:37:03.69ID:sQZN3/qk ID:R8lp94JX
パターン暗記人間を馬鹿にしてるのに
自分がパターン暗記のワンパターン人間だったパターン
結局、ただの同族嫌悪パターンだったんだね
パターン暗記人間を馬鹿にしてるのに
自分がパターン暗記のワンパターン人間だったパターン
結局、ただの同族嫌悪パターンだったんだね
956デフォルトの名無しさん
2017/09/24(日) 22:43:55.92ID:R8lp94JX957デフォルトの名無しさん
2017/09/24(日) 22:55:31.56ID:L7/sMAP/ >>944
それがファイルのリストを編集するんよ
順番を入れ替えたり、属性くわえたり、あれやこれや
例えば順番入れ替えるのに挿入位置と元の位置をインデックスで覚えておくとすると
ファイル一覧が更新されたとき差異が有ったらインデックスがズレるから修正するとかね
(もっとほかの方法もあるけど、単純にインデックスで覚えておくとそうなる、という例え話)
もしくはファイルが消えたと思ったら、ゴミ箱から復活してきたりしたときに
ちゃんと元の編集情報を引き継げるのかとか
そういうのがUndo、Redo全般にまで絡んできてややこしいよね、って話
それがファイルのリストを編集するんよ
順番を入れ替えたり、属性くわえたり、あれやこれや
例えば順番入れ替えるのに挿入位置と元の位置をインデックスで覚えておくとすると
ファイル一覧が更新されたとき差異が有ったらインデックスがズレるから修正するとかね
(もっとほかの方法もあるけど、単純にインデックスで覚えておくとそうなる、という例え話)
もしくはファイルが消えたと思ったら、ゴミ箱から復活してきたりしたときに
ちゃんと元の編集情報を引き継げるのかとか
そういうのがUndo、Redo全般にまで絡んできてややこしいよね、って話
958デフォルトの名無しさん
2017/09/24(日) 23:09:35.85ID:L7/sMAP/ まぁ何か操作されるたびに状態全部丸ごと保存しておくような
アホみたいな実装でもメモリが圧迫しないほど
対象物が小さければ、それが一番簡単だわな
ただ実際には問題になるケースがあるから
逆操作どうのこうのになるんだが
逆操作が面倒なら、操作のうち30回に一回ほど完璧なスナップショットを取って
それ以外は順方向の差分にしておく方法もあるな
巻き戻すときは近場のスナップショットから順方向に差分を展開して求める
動画のキーフレームと差分フレームみたいなものだな
逆操作が要らなくなるから、かなりの負担軽減になるのと
スナップショットの頻度でメモリ使用量のチューニングが効くな
アホみたいな実装でもメモリが圧迫しないほど
対象物が小さければ、それが一番簡単だわな
ただ実際には問題になるケースがあるから
逆操作どうのこうのになるんだが
逆操作が面倒なら、操作のうち30回に一回ほど完璧なスナップショットを取って
それ以外は順方向の差分にしておく方法もあるな
巻き戻すときは近場のスナップショットから順方向に差分を展開して求める
動画のキーフレームと差分フレームみたいなものだな
逆操作が要らなくなるから、かなりの負担軽減になるのと
スナップショットの頻度でメモリ使用量のチューニングが効くな
959デフォルトの名無しさん
2017/09/24(日) 23:16:13.53ID:L7/sMAP/ 業務アプリではUndo、Redoを実装してくれって要望はあまりないんだろうな
大体は何かのエディタとかで必要になる機能だからなぁ
そんな印象を受けた
大体は何かのエディタとかで必要になる機能だからなぁ
そんな印象を受けた
960デフォルトの名無しさん
2017/09/24(日) 23:18:28.72ID:R8lp94JX961デフォルトの名無しさん
2017/09/24(日) 23:34:49.79ID:dIaNhcU3 結局のところコマンドパターンを使えばいいんでしょう?
962デフォルトの名無しさん
2017/09/24(日) 23:38:10.28ID:gFeQddMX963デフォルトの名無しさん
2017/09/24(日) 23:39:49.07ID:R8lp94JX964デフォルトの名無しさん
2017/09/24(日) 23:42:39.61ID:dIaNhcU3 スナップショットと言ってもオブジェクトの全ての
情報を保存しておかなければいけないとは限らない。
一部だけで良い場合もある。
じゃあこのスナップショットを設計するには
どのようなクラスやメソッドが必要だろうか?
少し時間をあげるから考えてみると良い
情報を保存しておかなければいけないとは限らない。
一部だけで良い場合もある。
じゃあこのスナップショットを設計するには
どのようなクラスやメソッドが必要だろうか?
少し時間をあげるから考えてみると良い
965デフォルトの名無しさん
2017/09/24(日) 23:43:38.74ID:dIaNhcU3966デフォルトの名無しさん
2017/09/24(日) 23:48:53.18ID:R8lp94JX967デフォルトの名無しさん
2017/09/24(日) 23:59:11.94ID:dIaNhcU3 >>966
設計というのはそういうものだぞ?
アルゴリズムじゃないんだから、
クラスがあってどんなメソッドが必要かっていうのを
提示しなければいけない
例えばソート関数はアルゴリズムでこれ単体では設計ではないが、
そのソートアルゴリズムを切り替え可能な汎用的な
コレクションクラスのようなものは設計となる
設計というのはそういうものだぞ?
アルゴリズムじゃないんだから、
クラスがあってどんなメソッドが必要かっていうのを
提示しなければいけない
例えばソート関数はアルゴリズムでこれ単体では設計ではないが、
そのソートアルゴリズムを切り替え可能な汎用的な
コレクションクラスのようなものは設計となる
968デフォルトの名無しさん
2017/09/24(日) 23:59:55.88ID:R8lp94JX >>949
結局俺の疑問>>951には答えてくれないのか?
まあそちらは分かっているとは思うが、
コマンドパターンをその名の通り、「コマンドにオブジェクトを与える」とするなら、
殆どの場合で関数ポインタを直接差し込む必要はない。
通常はキーを与え内部でハッシュ等から関数ポインタを呼ぶ。
ただ、Javaでは関数ポインタが取れないから、そもそもこの「関数ポインタ引き用ハッシュ」を作れない。(はず)
だからJavaでコマンドパターンを記述すると無理に継承が行われ、説明が余計に意味不明になる。
それが俺が基本的に説明のコード部分を無視している理由。Javaには構造を正しく記述する能力がない。
ただPythonでもそうなのなら、関数ポインタを差し込むのが定義なのかもしれんが。
結局俺の疑問>>951には答えてくれないのか?
まあそちらは分かっているとは思うが、
コマンドパターンをその名の通り、「コマンドにオブジェクトを与える」とするなら、
殆どの場合で関数ポインタを直接差し込む必要はない。
通常はキーを与え内部でハッシュ等から関数ポインタを呼ぶ。
ただ、Javaでは関数ポインタが取れないから、そもそもこの「関数ポインタ引き用ハッシュ」を作れない。(はず)
だからJavaでコマンドパターンを記述すると無理に継承が行われ、説明が余計に意味不明になる。
それが俺が基本的に説明のコード部分を無視している理由。Javaには構造を正しく記述する能力がない。
ただPythonでもそうなのなら、関数ポインタを差し込むのが定義なのかもしれんが。
969デフォルトの名無しさん
2017/09/25(月) 00:29:03.77ID:8cq/CpUk >>968
コマンドオブジェクト内のメソッドのことを関数ポインタと呼んでるんなら
コマンド内には関数ポインタは必須だよ(間接的に呼び出すのでも別に構わないけど)
コマンドを実行する側が、コマンドの内部実装を気にする必要がなく
executeメソッドやundoメソッドみたいに共通の呼び出しで
各コマンドを処理できることに意味がある
Javaも8からラムダ使えるから単なる関数の実行だけなら
インターフェースや継承使わなくても関数ポインタ的なものを
実行側のリストに直接追加するなりハッシュ作って追加するなりできるよ
コマンドオブジェクト内のメソッドのことを関数ポインタと呼んでるんなら
コマンド内には関数ポインタは必須だよ(間接的に呼び出すのでも別に構わないけど)
コマンドを実行する側が、コマンドの内部実装を気にする必要がなく
executeメソッドやundoメソッドみたいに共通の呼び出しで
各コマンドを処理できることに意味がある
Javaも8からラムダ使えるから単なる関数の実行だけなら
インターフェースや継承使わなくても関数ポインタ的なものを
実行側のリストに直接追加するなりハッシュ作って追加するなりできるよ
970デフォルトの名無しさん
2017/09/25(月) 00:36:24.94ID:8cq/CpUk undo/redoの仕組みは
- 操作を記録する方法
- 状態を記録する方法
- 状態の差分を記録する方法
のどれかかその組み合わせ
コマンドパターンでのundoは操作を記録して逆操作をする
メメントパターンでのundoは状態を記録
それぞれ良し悪しあるから状況にあったのを選べばいい
何を記録するか以外に
サポートするundoの機能によって記録するデータ構造が変わる
stackとかtreeとか
- 操作を記録する方法
- 状態を記録する方法
- 状態の差分を記録する方法
のどれかかその組み合わせ
コマンドパターンでのundoは操作を記録して逆操作をする
メメントパターンでのundoは状態を記録
それぞれ良し悪しあるから状況にあったのを選べばいい
何を記録するか以外に
サポートするundoの機能によって記録するデータ構造が変わる
stackとかtreeとか
971デフォルトの名無しさん
2017/09/25(月) 00:51:45.61ID:N+1HPlkM スナップショットってどうやって実現すればいいの?
undo/redoってどうやって実現すればいいの?
その答がデザインパターンなんだな
undo/redoってどうやって実現すればいいの?
その答がデザインパターンなんだな
972デフォルトの名無しさん
2017/09/25(月) 00:53:39.30ID:3XblncDf >>969
> コマンドオブジェクト内のメソッドのことを関数ポインタと呼んでるんなら
> コマンド内には関数ポインタは必須だよ(間接的に呼び出すのでも別に構わないけど)
ああ、この認識でいい。
Java7まではメンバポインタを関数ポインタ代わりとみなし、差し込んで上位からメソッド呼び出ししかなかったろ。
そこで疑問だが、ここで関数ポインタ直接差込のメリットあるか?
俺だったらハッシュをクロージャで捕捉して、
「この呼び出し機構から呼べるのはこのハッシュ内関数のみ」として制限する。
この方がソース上で一覧も見やすくなるし。
直接差込だと何でも実行可能になり、どうしてもバラけるし、
(俺はあまり気にしないが)変な物を差し込まれてないかのテスト等がしにくい。
パターン作った連中はここら辺の事情は分かっているはずで、ちょっと不自然さを感じるんだが。
> コマンドオブジェクト内のメソッドのことを関数ポインタと呼んでるんなら
> コマンド内には関数ポインタは必須だよ(間接的に呼び出すのでも別に構わないけど)
ああ、この認識でいい。
Java7まではメンバポインタを関数ポインタ代わりとみなし、差し込んで上位からメソッド呼び出ししかなかったろ。
そこで疑問だが、ここで関数ポインタ直接差込のメリットあるか?
俺だったらハッシュをクロージャで捕捉して、
「この呼び出し機構から呼べるのはこのハッシュ内関数のみ」として制限する。
この方がソース上で一覧も見やすくなるし。
直接差込だと何でも実行可能になり、どうしてもバラけるし、
(俺はあまり気にしないが)変な物を差し込まれてないかのテスト等がしにくい。
パターン作った連中はここら辺の事情は分かっているはずで、ちょっと不自然さを感じるんだが。
973デフォルトの名無しさん
2017/09/25(月) 00:55:43.76ID:N+1HPlkM メンバポインタってなんだ?
974デフォルトの名無しさん
2017/09/25(月) 00:57:17.48ID:N+1HPlkM C言語には関数ポインタは有るけど、
その関数ポインタは名前の通り関数へのポインタであって
データへのポインタは含まないんだよな
だから関数とデータで別々に扱わないといけない
その関数ポインタは名前の通り関数へのポインタであって
データへのポインタは含まないんだよな
だから関数とデータで別々に扱わないといけない
975デフォルトの名無しさん
2017/09/25(月) 00:57:27.34ID:3XblncDf976デフォルトの名無しさん
2017/09/25(月) 00:58:44.83ID:N+1HPlkM >>972
> パターン作った連中はここら辺の事情は分かっているはずで、ちょっと不自然さを感じるんだが。
パターンは実装ではないので、
あるパターンに対して幾つもの実装がある
言語が変われば実装は異なる
だから君みたいに実装のことなんて考えてないんだよ
あくまで設計だから一つ上の層から物事を考えてる
> パターン作った連中はここら辺の事情は分かっているはずで、ちょっと不自然さを感じるんだが。
パターンは実装ではないので、
あるパターンに対して幾つもの実装がある
言語が変われば実装は異なる
だから君みたいに実装のことなんて考えてないんだよ
あくまで設計だから一つ上の層から物事を考えてる
977デフォルトの名無しさん
2017/09/25(月) 00:59:09.44ID:N+1HPlkM978デフォルトの名無しさん
2017/09/25(月) 03:20:37.55ID:eX6e3GbI みんな話が通じてるかのように会話してるけど俺にはさっぱりだ
ロジックを無理に日本語にせずJavaかC++の疑似コードかなんかで書いてくれた方が誤解なく伝わるぞ
ロジックを無理に日本語にせずJavaかC++の疑似コードかなんかで書いてくれた方が誤解なく伝わるぞ
979デフォルトの名無しさん
2017/09/25(月) 03:21:41.82ID:/NZHFTqW しったかの応酬
980デフォルトの名無しさん
2017/09/25(月) 05:13:23.75ID:2SJhli4d981デフォルトの名無しさん
2017/09/25(月) 22:28:14.08ID:DU69B7yE デザパタって何?
982デフォルトの名無しさん
2017/09/25(月) 22:34:32.01ID:AtwfXPhb なんだろう?
983デフォルトの名無しさん
2017/09/25(月) 23:07:47.29ID:N+1HPlkM >>981
> デザパタって何?
デザインパターンのこと
設計のパターン
例えばソートでもアルゴリズムによって
バブルソートなどという名前がついているように、
デザパタでもパターンに名前をつけてる。
もし名前がなくて「undo/redoを実現するやり方」という言い方をしたら
どうやってやるのか?っていうのを他の人と知識の共有ができないし、
逆にどうやってやるのか?を「オブジェクトをリストの形でもって
それぞれが変更内容の情報を持っていて、その変更内容を逆方向に
適用することでundo、順方向に適用することでredoを実現する」という
言い方をしたら冗長な上に正確ではないし、undo/redo以外にも使えるってことが
わからないし、まあ何も良いことがないだろ?
名前をつけることで、デザパタの知識を持っている人の間で
知識を共有できるわけよ。
その知識のカタログがデザインパターン
> デザパタって何?
デザインパターンのこと
設計のパターン
例えばソートでもアルゴリズムによって
バブルソートなどという名前がついているように、
デザパタでもパターンに名前をつけてる。
もし名前がなくて「undo/redoを実現するやり方」という言い方をしたら
どうやってやるのか?っていうのを他の人と知識の共有ができないし、
逆にどうやってやるのか?を「オブジェクトをリストの形でもって
それぞれが変更内容の情報を持っていて、その変更内容を逆方向に
適用することでundo、順方向に適用することでredoを実現する」という
言い方をしたら冗長な上に正確ではないし、undo/redo以外にも使えるってことが
わからないし、まあ何も良いことがないだろ?
名前をつけることで、デザパタの知識を持っている人の間で
知識を共有できるわけよ。
その知識のカタログがデザインパターン
984デフォルトの名無しさん
2017/09/25(月) 23:20:57.87ID:5HagYgjy 哲学
985デフォルトの名無しさん
2017/09/25(月) 23:30:01.68ID:3XblncDf986デフォルトの名無しさん
2017/09/25(月) 23:36:45.43ID:N+1HPlkM いや・・・クイックソートという名前を出してる人に
クイックソートを実装してみろって意味不明だろ。
クイックソートを実装してみろって意味不明だろ。
987デフォルトの名無しさん
2017/09/25(月) 23:40:43.21ID:3XblncDf ID:3Bk8qYPA == ID:N+1HPlkM
988デフォルトの名無しさん
2017/09/25(月) 23:42:00.75ID:N+1HPlkM >>978
外れw
外れw
989デフォルトの名無しさん
2017/09/26(火) 00:05:37.02ID:3DlL6rrx 物凄く残念な人が住み着いたから
しばらくはこのスレもお休みだな
しばらくはこのスレもお休みだな
990デフォルトの名無しさん
2017/09/26(火) 00:43:54.35ID:wPSfJS/Y 俺は最初から居たから、その理論ならデザパタ厨がコミだということになる。
無理に布教しようとするからおかしな事になる。
仮にデザパタ厨がundo如きピシッと実装出来ていれば、自然と布教出来ただろうに。
この有様では訴求力なんて皆無だろ。
無理に布教しようとするからおかしな事になる。
仮にデザパタ厨がundo如きピシッと実装出来ていれば、自然と布教出来ただろうに。
この有様では訴求力なんて皆無だろ。
991デフォルトの名無しさん
2017/09/26(火) 00:47:18.92ID:Yx2E7i/E >>990
反デザパタのお前に訴求力があればその台詞も格好ついたんだろうけどなあ
反デザパタのお前に訴求力があればその台詞も格好ついたんだろうけどなあ
992デフォルトの名無しさん
2017/09/26(火) 01:04:27.60ID:w3seKs+r 次スレ立てろ
993デフォルトの名無しさん
2017/09/26(火) 01:10:41.31ID:wPSfJS/Y994デフォルトの名無しさん
2017/09/26(火) 01:34:04.11ID:SmezMtDi ID:3XblncDf=ID:R8lp94JX=「構造体」を適宜「オブジェクト」に読み替え関数ポインタ/関数オブジェクト「ラッパ」パターン君
ゴミw
ゴミw
995デフォルトの名無しさん
2017/09/26(火) 01:35:14.08ID:SmezMtDi デザパタは必要
ソースは
「構造体」を適宜「オブジェクト」に読み替え関数ポインタ/関数オブジェクト「ラッパ」パターン
これ読んだだけでわかる
ソースは
「構造体」を適宜「オブジェクト」に読み替え関数ポインタ/関数オブジェクト「ラッパ」パターン
これ読んだだけでわかる
996デフォルトの名無しさん
2017/09/26(火) 02:46:47.83ID:LgPIDr44 デザパタ、デザパタうっせーよ
デザインパターンな
デザインパターンな
997デフォルトの名無しさん
2017/09/26(火) 03:18:16.89ID:shxtGnUG デザパタ
998デフォルトの名無しさん
2017/09/26(火) 03:21:34.51ID:shxtGnUG ザパタデ
999デフォルトの名無しさん
2017/09/26(火) 03:22:11.12ID:1aSY2upq >>996
目立ちたがりやさん
目立ちたがりやさん
1000デフォルトの名無しさん
2017/09/26(火) 03:22:32.56ID:shxtGnUG パタデザ
10011001
Over 1000Thread このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 48日 9時間 30分 18秒
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 48日 9時間 30分 18秒
10021002
Over 1000Thread 2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/
▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/
▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- トランプ大統領 日本を批判「トヨタは100万台米国で販売する一方GMやフォードはほとんど販売してない。米国の企業は他国で排除」★4 [Hitzeschleier★]
- 【速報】 1ドル=146円 [お断り★]
- 「店内に車が突っ込んだ」92歳の男性運転の車が「丸亀製麺 守山店」に突っ込む けが人なし 名古屋 [どどん★]
- 【社会】「拳銃を誤って持ち込んだ」自ら申告し逮捕されたアメリカ人男性 神戸地検が不起訴処分 [シャチ★]
- 石破総理「極めて残念であり不本意」 トランプ大統領が日本に24%の相互関税 [どどん★]
- 中居正広がヒアリングで語らなかった「密室での出来事」第三者委員会からの守秘義務解除の依頼を拒否、被害者の心変わりを懸念したか [Ailuropoda melanoleuca★]
- 【自民党速報】 日本の伝統的な “ヤクザ” である暴力団員の減少が深刻。 全国で2万人を割り込んでしまう [485983549]
- 【悲報】斎藤元彦陣営のネット広報担当会社が投稿したnoteで騒然★629 [931948549]
- アメップさん、Switch2が高すぎて逝くwww 「トランプ関税46%が追加で発生😭 ただですらヘイト価格なのに……」 [175344491]
- 【朗報】TOYOTA「関税含めてもアメリカで値上げしません。日本の企業努力でトランプ関税分は対応します」 [673057929]
- ニンテンドースイッチ2、ゲームソフトの値段を爆上げwwwww [916921592]
- キッズ「寿司屋に開封したコンドーム捨ててみた」店「特定したぞオメー」キッズ「謝罪したい😭」店「厳正な対応を行う」 [249947164]