前スレ
オブジェクト指向システムの設計 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+xB902デフォルトの名無しさん
2017/09/24(日) 10:49:08.03ID:rk9buIU7 >>897
StrategyMyModuleはないわww
StrategyMyModuleはないわww
903デフォルトの名無しさん
2017/09/24(日) 11:09:57.56ID:sQZN3/qk ID:R8lp94JX
ラッパでも吹いてろゴミゆとりwwwwwwwwwwwwwwwww
ラッパでも吹いてろゴミゆとりwwwwwwwwwwwwwwwww
904デフォルトの名無しさん
2017/09/24(日) 11:15:24.97ID:R8lp94JX905デフォルトの名無しさん
2017/09/24(日) 11:20:12.29ID:zoxaw5LC >>893
構造体とオブジェクトの違いがわからない(理解しようとしない)クズ
構造体とオブジェクトの違いがわからない(理解しようとしない)クズ
906デフォルトの名無しさん
2017/09/24(日) 11:56:26.32ID:dIaNhcU3907デフォルトの名無しさん
2017/09/24(日) 11:58:08.61ID:dIaNhcU3908デフォルトの名無しさん
2017/09/24(日) 12:10:37.74ID:rk9buIU7 >>904
なんとかパターン(キリッ
普通のプログラマがふっつーに語彙として使ってるパターン名を、お前はドヤ顔されてるように感じちゃうからイライラするんだな
勝手にイライラしてる人ってたまにいるけど、お前もそっちだったか
なんとかパターン(キリッ
普通のプログラマがふっつーに語彙として使ってるパターン名を、お前はドヤ顔されてるように感じちゃうからイライラするんだな
勝手にイライラしてる人ってたまにいるけど、お前もそっちだったか
909デフォルトの名無しさん
2017/09/24(日) 12:44:49.84ID:5g9dg2+V これはヤバイ
901 デフォルトの名無しさん sage 2017/09/24(日) 10:48:10.22 ID:dIaNhcU3
undoを実装するにはどうしたら良いでしょうか?
正解 コマンドパターンを使います。
901 デフォルトの名無しさん sage 2017/09/24(日) 10:48:10.22 ID:dIaNhcU3
undoを実装するにはどうしたら良いでしょうか?
正解 コマンドパターンを使います。
910デフォルトの名無しさん
2017/09/24(日) 12:48:49.90ID:dIaNhcU3 そして理由を書かない
いつものパターン(笑)
いつものパターン(笑)
911デフォルトの名無しさん
2017/09/24(日) 12:49:33.29ID:sQZN3/qk912デフォルトの名無しさん
2017/09/24(日) 12:50:06.83ID:sQZN3/qk913デフォルトの名無しさん
2017/09/24(日) 12:58:38.50ID:5g9dg2+V914デフォルトの名無しさん
2017/09/24(日) 12:58:45.83ID:R8lp94JX915デフォルトの名無しさん
2017/09/24(日) 13:03:51.26ID:Oc3oIVgi916デフォルトの名無しさん
2017/09/24(日) 13:04:36.29ID:rk9buIU7 >>914
GitHubでパターン名を検索するくらいの知恵もないのか
GitHubでパターン名を検索するくらいの知恵もないのか
917デフォルトの名無しさん
2017/09/24(日) 13:11:14.14ID:sQZN3/qk918デフォルトの名無しさん
2017/09/24(日) 13:17:39.49ID:R8lp94JX >>913
なるほど以下を見る限り、undoはmementoだな。
http://www.techscore.com/tech/DesignPattern/Memento.html/
とはいえ、デザパタに頼る=デザパタが無いと何も出来ないから、というのはよく分かった。
undoすらパターン提示されないと作れない程馬鹿なのね。
・スナップショット+正方向履歴=メメントパターン
mementoってパターンにする必要ないほどのゴミだろ。この程度でいちいち命名してたらきりがない。
なるほど以下を見る限り、undoはmementoだな。
http://www.techscore.com/tech/DesignPattern/Memento.html/
とはいえ、デザパタに頼る=デザパタが無いと何も出来ないから、というのはよく分かった。
undoすらパターン提示されないと作れない程馬鹿なのね。
・スナップショット+正方向履歴=メメントパターン
mementoってパターンにする必要ないほどのゴミだろ。この程度でいちいち命名してたらきりがない。
919デフォルトの名無しさん
2017/09/24(日) 13:20:45.50ID:rk9buIU7 >>913
> とはいえ、デザパタに頼る=デザパタが無いと何も出来ないから、というのはよく分かった。
> undoすらパターン提示されないと作れない程馬鹿なのね。
そうやって相手の程度を決めつけないと上に立てないほど自信がないのはよくわかった。
って言い返されたいパターン?
> とはいえ、デザパタに頼る=デザパタが無いと何も出来ないから、というのはよく分かった。
> undoすらパターン提示されないと作れない程馬鹿なのね。
そうやって相手の程度を決めつけないと上に立てないほど自信がないのはよくわかった。
って言い返されたいパターン?
920デフォルトの名無しさん
2017/09/24(日) 13:21:21.52ID:Oc3oIVgi マウントパターン
921デフォルトの名無しさん
2017/09/24(日) 13:25:26.63ID:dIaNhcU3 >>918
> mementoってパターンにする必要ないほどのゴミだろ。この程度でいちいち命名してたらきりがない。
じゃあmementoって名前を使わずに
mementoの話をしてくださいな。
自分でmementoって言ってるくせになぁw
> mementoってパターンにする必要ないほどのゴミだろ。この程度でいちいち命名してたらきりがない。
じゃあmementoって名前を使わずに
mementoの話をしてくださいな。
自分でmementoって言ってるくせになぁw
922デフォルトの名無しさん
2017/09/24(日) 13:41:52.80ID:R8lp94JX デザパタ派はアルゴリズムを考えることを全くせず、既存パターンからコピペすることは分かった。
この場合、パターンは手持ちのカードだから、無理にでも増やそうとするのも分かる。
実際、馬鹿にプログラムさせる場合はこの方が捗るかもしれん。この感覚は俺にはなかった。
この場合、パターンは手持ちのカードだから、無理にでも増やそうとするのも分かる。
実際、馬鹿にプログラムさせる場合はこの方が捗るかもしれん。この感覚は俺にはなかった。
923デフォルトの名無しさん
2017/09/24(日) 13:49:00.51ID:L7/sMAP/ たしかに、引数が多いのをまとめるために構造体渡しにすることを
コマンドパターンとか言っちゃうオツムの人にとっては
デザインパターンは便利かもしれないね
コマンドパターンとか言っちゃうオツムの人にとっては
デザインパターンは便利かもしれないね
924デフォルトの名無しさん
2017/09/24(日) 13:52:17.29ID:L7/sMAP/ 同時に、コマンドパターンを見て
引数が多いのをまとめるために構造体渡しにすることと同一だと
思ってしまうオツムのひとは
デザインパターンを学んでも理解できないわけだから
それ以前の知能が足りてないという意味で役に立たないだろうね
こういう人は本を読んでも、誰かに説明を受けても
理解できない、知識が吸収できない、抽象的なことが理解できない
わけだから、常に場当たり的に対応するしかないね
会話も成り立たないし
引数が多いのをまとめるために構造体渡しにすることと同一だと
思ってしまうオツムのひとは
デザインパターンを学んでも理解できないわけだから
それ以前の知能が足りてないという意味で役に立たないだろうね
こういう人は本を読んでも、誰かに説明を受けても
理解できない、知識が吸収できない、抽象的なことが理解できない
わけだから、常に場当たり的に対応するしかないね
会話も成り立たないし
925デフォルトの名無しさん
2017/09/24(日) 13:57:45.31ID:dIaNhcU3 >>922
> デザパタ派はアルゴリズムを考えることを全くせず、既存パターンからコピペすることは分かった。
いやそりゃそうだろw
設計はアルゴリズムじゃない。
アルゴリズムは処理だが、
設計は構造だ
お前全く分かってないじゃないかw
> デザパタ派はアルゴリズムを考えることを全くせず、既存パターンからコピペすることは分かった。
いやそりゃそうだろw
設計はアルゴリズムじゃない。
アルゴリズムは処理だが、
設計は構造だ
お前全く分かってないじゃないかw
926デフォルトの名無しさん
2017/09/24(日) 14:08:32.54ID:dIaNhcU3 アルゴリズムにも名前ついてるの知らないのかな?
コピペはしませーん。
他の人が作ったアルゴリズムのライブラリを
使うだけだからコピペじゃありませーんって
言うつもりなのだろうか?
コピペはしませーん。
他の人が作ったアルゴリズムのライブラリを
使うだけだからコピペじゃありませーんって
言うつもりなのだろうか?
927デフォルトの名無しさん
2017/09/24(日) 14:31:19.48ID:R8lp94JX >>926
旧来の貧民プログラマにとってundo実装の第一選択肢は「逆方向履歴」なんだよ。
これがダメな場合は「スナップショット+正方向履歴」になる。
君はこのことにすら気づけない程の馬鹿だ。
しかし、実際、後者のほうが圧倒的に簡単だから、馬鹿には後者を押し付けておけ、というのは合ってるんだよ。
俺はC出身だから「馬鹿はプログラミングするな」という感覚なのだが、
昨今は文系馬鹿もプログラミングする機会があるわけだし、デザパタ洗脳も現実解としてはありなのかもしれん。
出来ない奴に考えさせたら永久にループするからね。
JavaでOOPこそが正義と洗脳するのも似たようなもんだし。
旧来の貧民プログラマにとってundo実装の第一選択肢は「逆方向履歴」なんだよ。
これがダメな場合は「スナップショット+正方向履歴」になる。
君はこのことにすら気づけない程の馬鹿だ。
しかし、実際、後者のほうが圧倒的に簡単だから、馬鹿には後者を押し付けておけ、というのは合ってるんだよ。
俺はC出身だから「馬鹿はプログラミングするな」という感覚なのだが、
昨今は文系馬鹿もプログラミングする機会があるわけだし、デザパタ洗脳も現実解としてはありなのかもしれん。
出来ない奴に考えさせたら永久にループするからね。
JavaでOOPこそが正義と洗脳するのも似たようなもんだし。
928デフォルトの名無しさん
2017/09/24(日) 14:34:09.72ID:dIaNhcU3929デフォルトの名無しさん
2017/09/24(日) 14:47:05.63ID:99mn0O+v930デフォルトの名無しさん
2017/09/24(日) 14:47:11.92ID:R8lp94JX >>928
上司がお前らを馬鹿と見極めて「デザパタ洗脳」していたとしたら、全て辻褄が合うんだよ。
上司がお前らを馬鹿と見極めて「デザパタ洗脳」していたとしたら、全て辻褄が合うんだよ。
931デフォルトの名無しさん
2017/09/24(日) 14:48:22.76ID:dIaNhcU3 お前ん中ではな(笑)
932デフォルトの名無しさん
2017/09/24(日) 15:51:48.82ID:sQZN3/qk 喚くだけの基地害
こんなやつとは絶対に一緒に仕事したくないな
こんなやつとは絶対に一緒に仕事したくないな
933デフォルトの名無しさん
2017/09/24(日) 16:00:01.88ID:/PuckvVk934デフォルトの名無しさん
2017/09/24(日) 16:08:12.02ID:uS0xIQvj >>933
undo stack
undo stack
935デフォルトの名無しさん
2017/09/24(日) 16:18:43.21ID:L7/sMAP/ テキストエディタのUndoぐらいならわけない
何処までの操作を1コマンドとするかというのは有るが
まぁできるよこれぐらいは
Redo、Undoでメモリ節約のため差分を取っていく方式なら
全てのデータの変更の差分を取っておかないと上手くいかないが
そのデータが自分の管轄外の外部からも編集可能だった場合は難しい
腕の見せ所
何処までの操作を1コマンドとするかというのは有るが
まぁできるよこれぐらいは
Redo、Undoでメモリ節約のため差分を取っていく方式なら
全てのデータの変更の差分を取っておかないと上手くいかないが
そのデータが自分の管轄外の外部からも編集可能だった場合は難しい
腕の見せ所
936デフォルトの名無しさん
2017/09/24(日) 16:20:14.18ID:L7/sMAP/ つまりは差分を取っていくといっても
外部からも勝手に変更されるので
完ぺきには出来ないから
ある程度ファジーなつくりにする必要があるんだわ
外部からも勝手に変更されるので
完ぺきには出来ないから
ある程度ファジーなつくりにする必要があるんだわ
937デフォルトの名無しさん
2017/09/24(日) 16:27:00.69ID:L7/sMAP/ 例えばA→AB→ABCっていう編集なら
差分を取るのは簡単だし、元に戻すのも簡単だけど
他所のソフトからリアルタイムで「B」が削除されたとして
それは自分のソフトからも検出可能かもしれないが
自分のソフトから「B」を消したわけじゃないから
自分のソフトのUndoコマンドリストに入れるのはおかしな話だし
でも実際「B」は無くなってるわけで・・・
この辺下手にやるとRedo動作で消したはずの「B」が復活したりする
このような場合は若干難しい
差分を取るのは簡単だし、元に戻すのも簡単だけど
他所のソフトからリアルタイムで「B」が削除されたとして
それは自分のソフトからも検出可能かもしれないが
自分のソフトから「B」を消したわけじゃないから
自分のソフトのUndoコマンドリストに入れるのはおかしな話だし
でも実際「B」は無くなってるわけで・・・
この辺下手にやるとRedo動作で消したはずの「B」が復活したりする
このような場合は若干難しい
938デフォルトの名無しさん
2017/09/24(日) 16:53:15.51ID:Oc3oIVgi939デフォルトの名無しさん
2017/09/24(日) 17:06:20.42ID:gFeQddMX940デフォルトの名無しさん
2017/09/24(日) 17:12:54.02ID:R8lp94JX >>937
無能らしくきちんとメメントパターンにすがれ
無能らしくきちんとメメントパターンにすがれ
941デフォルトの名無しさん
2017/09/24(日) 17:47:27.17ID:ZoycLPfe942デフォルトの名無しさん
2017/09/24(日) 19:10:06.85ID:sQZN3/qk デザインパターンを理解し、undo/redoに対してきちんと設計を考え答えられる人
対して、
デザインパターンが理解ない人
↓
940 名前:デフォルトの名無しさん[sage] 投稿日:2017/09/24(日) 17:12:54.02 ID:R8lp94JX [11/11]
>>937
無能らしくきちんとメメントパターンにすがれ
悲しいなぁ
対して、
デザインパターンが理解ない人
↓
940 名前:デフォルトの名無しさん[sage] 投稿日:2017/09/24(日) 17:12:54.02 ID:R8lp94JX [11/11]
>>937
無能らしくきちんとメメントパターンにすがれ
悲しいなぁ
943デフォルトの名無しさん
2017/09/24(日) 19:28:13.46ID:L7/sMAP/ >>939
「それは自分のソフトからも検出可能かもしれないが」
とは書いたが、必ずしも検出が現実的に行えるかはわからないし
完璧なリアルタイム性が無くて、後から「変更したよ」
って通知が届くだけかもしれないし
そもそも取りこぼすかもしれないし
こういったことを考えていくと、ある程度ファジーに作っとくしかない
一体何の事例だと言われそうだが、俺の場合はファイルシステムだった
ファイル構成は俺の知らないところで
エクスプローラとかから勝手に変更されたりするから
フォルダ一覧から取得したファイルリストに対して何か編集が出来て
そのファイルリストがリアルタイムで実際のフォルダ構成に従って更新されうる場合
普通であれば、ファイルリストを、「一覧取得時点」での静的な物にしてしまうか
Undo、Redoを諦めるか、のどちらかだが
俺の場合はたまたま両方必要になってしまった
かなり稀なケースだとは思うけど、まぁ面倒だ
「それは自分のソフトからも検出可能かもしれないが」
とは書いたが、必ずしも検出が現実的に行えるかはわからないし
完璧なリアルタイム性が無くて、後から「変更したよ」
って通知が届くだけかもしれないし
そもそも取りこぼすかもしれないし
こういったことを考えていくと、ある程度ファジーに作っとくしかない
一体何の事例だと言われそうだが、俺の場合はファイルシステムだった
ファイル構成は俺の知らないところで
エクスプローラとかから勝手に変更されたりするから
フォルダ一覧から取得したファイルリストに対して何か編集が出来て
そのファイルリストがリアルタイムで実際のフォルダ構成に従って更新されうる場合
普通であれば、ファイルリストを、「一覧取得時点」での静的な物にしてしまうか
Undo、Redoを諦めるか、のどちらかだが
俺の場合はたまたま両方必要になってしまった
かなり稀なケースだとは思うけど、まぁ面倒だ
944デフォルトの名無しさん
2017/09/24(日) 20:07:26.73ID:gFeQddMX945デフォルトの名無しさん
2017/09/24(日) 20:13:27.53ID:R8lp94JX 俺にしたらデザパタ厨はゴミだとよく分かったけどね。
undo/redoするだけなら>>938-939で全く正しい。
履歴はコマンドを保持する形になり、呼び出し形式がコマンドパターンと類似してくる。これが>>886が混同した理由。
なおこのケースでは大半の場合、コマンドには関数ポインタは含まれず、構造体が渡される。
これすら分からない馬鹿が粘着している。
俺だったら内部でテーブルジャンプかハッシュだね。コマンド側から関数ポインタを与えるメリットが無いから。
なおEmacsはここでユーザ関数ポインタを与える構造になっているから、ほぼ無限の拡張能力がある。
>>943は相変わらず全く分からないみたいだが。
要はデザパタ厨はデザパタから一歩離れれば何も出来なくなるわけだ。
元々初心者にメッキを施す為だし、この意味では機能している。
>>933のようにundo出来ないよりは「○○パターン」で実装する奴の方が上と言えば上だ。
しかし俺は>>933を評価したい。理由は上達する可能性があるからだ。
どうすればいいのか?を考え続ければ上達はする。これが>>933だ。
この場合はこれ、を何度続けても、慣れはするが上達はしない。これがデザパタ厨だ。
プログラミング暦だけ長くても全く上達しない奴が偶にいて不思議だったのが、これか。
ただ、undo/redo等は標準的な機能ではあるし、OSS等を参考にすれば脳死済みのデザパタ厨でもある程度戦えるのかもしれん。
undo/redoするだけなら>>938-939で全く正しい。
履歴はコマンドを保持する形になり、呼び出し形式がコマンドパターンと類似してくる。これが>>886が混同した理由。
なおこのケースでは大半の場合、コマンドには関数ポインタは含まれず、構造体が渡される。
これすら分からない馬鹿が粘着している。
俺だったら内部でテーブルジャンプかハッシュだね。コマンド側から関数ポインタを与えるメリットが無いから。
なおEmacsはここでユーザ関数ポインタを与える構造になっているから、ほぼ無限の拡張能力がある。
>>943は相変わらず全く分からないみたいだが。
要はデザパタ厨はデザパタから一歩離れれば何も出来なくなるわけだ。
元々初心者にメッキを施す為だし、この意味では機能している。
>>933のようにundo出来ないよりは「○○パターン」で実装する奴の方が上と言えば上だ。
しかし俺は>>933を評価したい。理由は上達する可能性があるからだ。
どうすればいいのか?を考え続ければ上達はする。これが>>933だ。
この場合はこれ、を何度続けても、慣れはするが上達はしない。これがデザパタ厨だ。
プログラミング暦だけ長くても全く上達しない奴が偶にいて不思議だったのが、これか。
ただ、undo/redo等は標準的な機能ではあるし、OSS等を参考にすれば脳死済みのデザパタ厨でもある程度戦えるのかもしれん。
946デフォルトの名無しさん
2017/09/24(日) 20:17:22.51ID:Oc3oIVgi バーカ
947デフォルトの名無しさん
2017/09/24(日) 20:35:02.81ID:ZoycLPfe948デフォルトの名無しさん
2017/09/24(日) 20:38:27.77ID:ZoycLPfe 日本人のカタカナ英語って
英米人と明らかに発音が違うが
オブジェクト指向を手続き型の中で
解釈するのってそれと似てるな
自分では同じつもりなんだろうけど
ぜんぜん違うんだよ
英米人と明らかに発音が違うが
オブジェクト指向を手続き型の中で
解釈するのってそれと似てるな
自分では同じつもりなんだろうけど
ぜんぜん違うんだよ
949デフォルトの名無しさん
2017/09/24(日) 20:57:58.94ID:uS0xIQvj コマンドパターンの適用例の一つとしてundoがあるだけで
undoを実現するために存在してるパターンじゃないよ
undo/redoの実装方式だって一つじゃないんだし状況に応じて設計を選択すればいい
技術力の高い人はその選択が適切に出来る人
undoを実現するために存在してるパターンじゃないよ
undo/redoの実装方式だって一つじゃないんだし状況に応じて設計を選択すればいい
技術力の高い人はその選択が適切に出来る人
950デフォルトの名無しさん
2017/09/24(日) 21:10:06.90ID:sQZN3/qk >>945
おいおい
「構造体」を適宜「オブジェクト」に読み替え関数ポインタ/関数オブジェクト「ラッパ」パターン君が
コマンドパターンなんて言葉使っちゃダメだろ
> デザパタ厨はゴミ
1レスでブーメラン頭に突き刺すとか民主党もビックリだぜ!
おいおい
「構造体」を適宜「オブジェクト」に読み替え関数ポインタ/関数オブジェクト「ラッパ」パターン君が
コマンドパターンなんて言葉使っちゃダメだろ
> デザパタ厨はゴミ
1レスでブーメラン頭に突き刺すとか民主党もビックリだぜ!
951デフォルトの名無しさん
2017/09/24(日) 21:18:11.67ID:R8lp94JX >>949
> コマンドパターンの適用例の一つとしてundoがあるだけで
ちなみに君の中のコマンドパターンの定義は、コマンド内には関数ポインタがあることが必要なのか?
通常のundoなら一番単純な実装はe(EventArgs)をundo stack に積んでいくことであり、
この場合は関数ポインタを保持してないから矛盾するが。
> コマンドパターンの適用例の一つとしてundoがあるだけで
ちなみに君の中のコマンドパターンの定義は、コマンド内には関数ポインタがあることが必要なのか?
通常のundoなら一番単純な実装はe(EventArgs)をundo stack に積んでいくことであり、
この場合は関数ポインタを保持してないから矛盾するが。
952デフォルトの名無しさん
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秒
レス数が1000を超えています。これ以上書き込みはできません。
