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

■ このスレッドは過去ログ倉庫に格納されています
2017/09/26(火) 07:20:38.98ID:qu+DPehL
前スレ
オブジェクト指向システムの設計 172
http://mevius.2ch.net/test/read.cgi/tech/1467992113
オブジェクト指向システムの設計 173
http://mevius.2ch.net/test/read.cgi/tech/1502182334/

類似スレ
手続き型システムの設計 1
http://mevius.2ch.net/test/read.cgi/tech/1500282714
2017/09/30(土) 21:26:28.25ID:MuV6ZELy
要件定義をきちんとすれば自然に辿り着くことだけど
自動販売機をモデル化する場合に核になるのはステートマシン
それを理解せず設計したりコードを書いたりすれば
>>45で指摘したような問題が後から後から出てくる

設計時もコーディング時も
事前/事後/不変条件を常に意識することが大事
2017/09/30(土) 21:49:36.71ID:Lb08y44X
>>55
「デザパタ」が必要ないんじゃなくて
「デザパタ用語」が必要ないって
お前書いてるよね?w
2017/09/30(土) 21:53:10.48ID:iRa5Yzik
デザインパターンな..
2017/09/30(土) 22:04:28.64ID:Lb08y44X
逆方向履歴という機能を実装するのに
デザインパターンが使われている
2017/09/30(土) 22:23:39.23ID:bL0j7tMv
>>57
それは当たり前。
デザパタは登場時の時点で「既に頻出」な物に名前を付けただけ。
何も新しい物はない。普通にコード書けば使っている。
だから俺は「デザパタを別に勉強する意味はない」という立場。

>>59
> 逆方向履歴という機能を実装するのに
何パターン?
これにはパターンは無いはずだが。
(ただし俺は全て押さえているわけではないが)
2017/09/30(土) 22:25:15.02ID:eDPmsgZ7
デザインパターンだっつってんだろ
馬鹿なの死ぬの?
2017/09/30(土) 22:26:30.68ID:bL0j7tMv
>>56
> 自動販売機をモデル化する場合に核になるのはステートマシン
これは多分違うぞ。
どのレベルからステートマシンと称するかにもよるが。
2017/09/30(土) 22:26:30.88ID:Lb08y44X
> デザパタは登場時の時点で「既に頻出」な物に名前を付けただけ。

たしかに世界にとっては頻出だろう?
だが勉強中の人にとっては知らない知識だ

だからその人が世界に追いつくために
勉強しなければいけないってことだ

なぜ頻出なものを自分で考え出さないといけないのか
それこそ時間の無駄だ
2017/09/30(土) 22:27:41.01ID:eDPmsgZ7
>>62
そこはステマシじゃねぇのかよ
中途半端な野郎だな
2017/09/30(土) 22:31:39.91ID:Lb08y44X
結局デザパタを認めないやつは
自分で考えだしたものが
実は教科書に乗っているようなものと
認めたくないんだろうな。
2017/09/30(土) 22:38:00.59ID:bL0j7tMv
>>63
> なぜ頻出なものを自分で考え出さないといけないのか
> それこそ時間の無駄だ
使える物は全て言語機能に採り入れられてるから、言語を学べば「使い方」は理解出来る。
そしてせっかく覚えた「デザパタ用語」は使い道がない。
中途半端に抽象化した結果、「ストラテジーバターン」=動的に対象関数を切り替える
とした場合、実装は「継承/委譲/関数ポインタ」等になり、実装時にはこれらの区別も重要な為、
「継承/委譲/関数ポインタ」が使われ、「ストラテジーバターン」が使われることはない。
だったら最初から言語機能をきっちり押さえた方がいい、というのが俺の立場。
(ただしJavaみたいな制限がきつい言語だと、言語だけ学んでも駄目だが)
2017/09/30(土) 22:39:39.55ID:eDPmsgZ7
>>66
ストパタじゃねぇのかよ
馬鹿なの?
2017/09/30(土) 22:40:17.60ID:Lb08y44X
> 使える物は全て言語機能に採り入れられてるから、言語を学べば「使い方」は理解出来る。

言語を学ぶの中にデザパタを学ぶが含まれているんだが?
なにを言ってるのだろうこいつは
2017/09/30(土) 22:41:49.90ID:Lb08y44X
ストラテジーバターンは継承/委譲/関数ポインタを応用して
作り出すパターン

単体の道具(継承/委譲/関数ポインタ)を
複数組み合わせて構造を作るのがパターン

やっぱりデザパタ分かってないんだなw
2017/09/30(土) 22:42:49.94ID:eDPmsgZ7
>>69
ストバタにしろやカス
2017/09/30(土) 22:43:01.60ID:bL0j7tMv
>>68
> 言語を学ぶの中にデザパタを学ぶが含まれているんだが?
これは初耳だが、どの言語のことだ?
2017/09/30(土) 22:46:06.66ID:Lb08y44X
>>71
どの言語でも

継承ってなんですか?
→ 親クラスの機能をサブクラスが受け継ぐことです

継承を使うと何ができるんですか?
→ 応用例はいくつもあります。例えば〜のような使い方が出来ます。
このような使い方を○○パターンといいます。

っていうように道具を使った応用例として
デザパタがでてくるだろ

お前は継承という道具を勉強するだけで
その継承のいろんな応用例まで勉強中のやつが思いつくと思ってんのか?
2017/09/30(土) 22:49:13.24ID:bL0j7tMv
>>69
> 単体の道具(継承/委譲/関数ポインタ)を
> 複数組み合わせて構造を作るのがパターン
これは俺は無駄なバリエーションで名前の数を増やしているだけという立場。
お前らはテンプレートメソッド=継承という立場だったはずだが、
その場合、テンプレートメソッド、ストラテジー、コンポジットを別々にする意味はあるのか?
そして、この程度の差異で無駄に名前を増産する意味があるのか?
何の為にストラテジーパターンを抽象化したんだ?
2017/09/30(土) 22:51:54.36ID:bL0j7tMv
>>72
> → 応用例はいくつもあります。例えば〜のような使い方が出来ます。
> このような使い方を○○パターンといいます。
ねーよアホ。
デザパタが書かれる前から継承はあったし、使われてる。
継承は継承としか書いてない。
お前はデザパタ洗脳用の教科書を掴まされたんじゃないのか?
2017/09/30(土) 22:54:20.26ID:Lb08y44X
> その場合、テンプレートメソッド、ストラテジー、コンポジットを別々にする意味はあるのか?
使い方が違うからな。

第一な、無駄なリエーションで名前を増やしているというのなら、
言語なんて実は

・順次実行
・メモリ(I/O)読み書き機能
・演算機能
・(条件付き)ジャンプ機能

これだけの用語で十分。関数とか例外とかそんなものすらいない。
実際機械語はこのぐらいしか機能がない。
それ以外の機能は、これらの基本的な機能の応用例でしか無い。

だが、それだけじゃあまりにも基本的な機能すぎて
他の人と知識を共有できないから名前を増やすことで
短い単語で言いたいことを表現してるんだろうが
2017/09/30(土) 22:54:51.73ID:eDPmsgZ7
>>73
テンメソだろ
なめてんのかてめぇ
2017/09/30(土) 22:55:19.24ID:Lb08y44X
>>74
> デザパタが書かれる前から継承はあったし、使われてる。

だからなんだ。

使われてるその応用例をカタログ化したのが
デザインパターンなんだろ

プロが長年かけて最適なパターンを教科書に乗せて
初学者がすぐに追いつけるようにしたんだよ。
2017/09/30(土) 22:57:54.56ID:Lb08y44X
> 継承は継承としか書いてない。

当たり前過ぎ・・・
基本と応用の違いも理解できんのか。

初学者に継承を教えるだけで、
すぐに応用例が思いつくわけ無いだろ

基本(継承)を教えてから、基本機能を組み合わせて
応用(パターン)を学ぶんだよ。


継承とパターンが違うんだから、
継承のストラテジーパターンって書くわけ無いだろw

継承=ストラテジーパターンではない。
色んなパターンの中で継承が使われてる
ストラテジーパターン以外でも継承が使われている。
この2つの単語は同一ではない
2017/09/30(土) 22:59:02.15ID:bL0j7tMv
>>75
> 短い単語で言いたいことを表現してるんだろうが
おう、だからやってみろと>>55で俺は言ったはずだが、
お前も不都合なことは見えなくなる病気なんだな。

デザパタ用語は抽象度が中途半端すぎて、何にも使えない、というのが俺の立場。
まあ、>>55の回答を待つ。
2017/09/30(土) 23:00:35.25ID:wIKBotg5
>>69
> 単体の道具(継承/委譲/関数ポインタ)を
> 複数組み合わせて構造を作るのがパタ
これは俺は無駄なバリで名前の数を増やしているだけという立場。
お前らはテンメソ=継承という立場だったはずだが、
その場合、テンメソ、スト、コンポジを別々にする意味はあるのか?
そして、この程度の差異で無駄に名前を増産する意味があるのか?
何の為にストパタを抽象化したんだ?
2017/09/30(土) 23:01:38.79ID:bL0j7tMv
>>77
俺は>>72
> どの言語でも (中略)
> っていうように道具を使った応用例として
> デザパタがでてくるだろ
についてダウト!と言ってるんだよ。
理由は「継承」は「デザパタ」よりも古いから。

これに対する回答は?
2017/09/30(土) 23:15:32.07ID:Lb08y44X
>>79
> おう、だからやってみろと>>55で俺は言ったはずだが、

そこがお前ずれてるんだよ。

デザパタは「やること」ではない
(誰かが)やったことの知識だ

すでに「やってる」ことに過ぎない
何をやれと言ってるのかさっぱりわからない。
2017/09/30(土) 23:17:34.98ID:Lb08y44X
>>81
> 理由は「継承」は「デザパタ」よりも古いから。

古いから何なんだよ・・・

最初に継承が生まれ、それを使って
いろんなパターンが生み出された。

継承はパタ−ンよりも古くて当然だよ。

で「継承」は「デザパタ」よりも古いからなに?
2017/09/30(土) 23:18:06.00ID:bL0j7tMv
>>78
> 初学者に継承を教えるだけで、
> すぐに応用例が思いつくわけ無いだろ
いやストラテジーパターンは応用例ですらない。使用例だ。
誰でも思いつくというか、この使い方をする為に設計された言語機能が継承だ。
そして使い方なら言語の説明で一通り為されて居るものだ。

> 継承=ストラテジーパターンではない。
(意見としては)違うね。
継承を使った場合、ストラテジーパターンに該当しない物を作れない。
抽象度が異なる為、これらは確かに単語としては同じではないが、しかし、
「ストラテジーパターン」という単語を使って説明する適切な場合がない。
要らない単語をいたずらに増やしただけだ。
2017/09/30(土) 23:20:26.38ID:Lb08y44X
>>80
> その場合、テンメソ、スト、コンポジを別々にする意味はあるのか?

応用例の説明見れば分かる通り
使い方が違うんだから意味あるだろうな。

シチューとカレーなんてどちらもほとんど同じ材料が使われてるが
別々の料理になってるだろ。


お前が言ってるのはそういうこと
いろんなパターンで継承が使われてるが、その継承の
使い方の違いでパターンの違いになるんだよ。

どっちも同じ材料が入ってるから、
「にんじん+たまねぎ+じゃがいも料理」だ!
じゃないの
2017/09/30(土) 23:21:33.84ID:bL0j7tMv
>>82
> 何をやれと言ってるのかさっぱりわからない。
お前は本当に馬鹿なのか?
日本語が通じないようならこの辺で打ちきりにするが。

俺は、
> 他の人と知識を共有できないから名前を増やすことで
> 短い単語で言いたいことを表現してるんだろうが (>>75)
について、>>55で求めた、
> 前者は「DLL」、後者は前回も言ったがundoなら「逆方向履歴」等
よりも簡単な説明をデザパタ用語でやれ、と言ってるんだが。
2017/09/30(土) 23:21:47.75ID:Lb08y44X
>>84
> 誰でも思いつくというか、この使い方をする為に設計された言語機能が継承だ。

最初にストラテジーパターンというパターンがあって
継承が生まれただと?

ハハハ



なぜなら

> 理由は「継承」は「デザパタ」よりも古いから。
2017/09/30(土) 23:23:53.47ID:bL0j7tMv
>>83
なるほどお前は池沼なんだな。

> で「継承」は「デザパタ」よりも古いからなに?
デザパタ(1995)以前の「継承」を実装していた言語の仕様書、
例えば「プログラミング言語C++」(1983)において、
> どの言語でも (中略)
> っていうように道具を使った応用例として
> デザパタがでてくるだろ (>>72)
があり得ない、と言ってるんだが。
2017/09/30(土) 23:24:28.98ID:Lb08y44X
>>86

> 前者は「DLL」、後者は前回も言ったがundoなら「逆方向履歴」等
DLLはダイナミックリンクライブラリ
動的にリンクするライブラリと言うだけで、
それだけではどんなものかがわからない。

> undoなら「逆方向履歴」
逆方向履歴という機能を実現するにはいろんなやり方がある。
それだけではどんな設計を使うのかが決まっていない

その設計にどんなパターンを使うのが良いのか?
そこでデザインパターンの中から適切なものを探そう
2017/09/30(土) 23:26:32.68ID:Lb08y44X
>>88
あ、お前今が2017年だってわかってなのか?w

そりゃデザインパターンとしてカタログ化されてない
昔(1995)以前では、言語の勉強の中で
デザパタが登場するわけ無いだろwww
昔(お前の時代)にはデザパタ出てこないの当たり前だよーーーーw

今は言語の勉強の中で基本の応用として
デザパタを学習するんだよ。
2017/09/30(土) 23:27:35.90ID:Lb08y44X
いや、まかさ

俺の子供の時代にはそんなこと習わなかった

が根拠になっていたとはなwww
草www
2017/09/30(土) 23:29:01.75ID:bL0j7tMv
>>87
> 最初にストラテジーパターンというパターンがあって
> 継承が生まれただと?
お前は本当に馬鹿だな。

継承の典型的な使用例に「ストラテジーパターン」という名前を付けただけだ。
だけど実際は「継承」で全く問題なくて、しかも無駄に抽象化したから使いどころもなくなった。

というかどうやらデザパタ厨はマジで馬鹿で議論が出来ないのは分かった。
他の言葉が通じる連中が出て来たら再開する。
2017/09/30(土) 23:31:17.52ID:wIKBotg5
>>87
> 最初にストラテジーパターンというパターンがあって
> 継承が生まれただと?
お前は本当に馬鹿だな。

継承の典型的な使用例に「ストパタ」という名前を付けただけだ。
だけど実際は「継承」で全く問題なくて、しかも無駄に抽象化したから使いどころもなくなった。

というかどうやらデザパタ厨はマジで馬鹿で議論が出来ないのは分かった。
他の言葉が通じる連中が出て来たら再開する。
2017/09/30(土) 23:31:34.77ID:Lb08y44X
> 継承の典型的な使用例に「ストラテジーパターン」という名前を付けただけだ。

継承の応用例の一つとして「ストラテジーパターン」がある
応用例の一つであるということからもわかるように
継承を使った応用例はいくつも有るから

継承と言っただけで「ストラテジーパターン」を意味することにはならない。
だから「使い方」を言いたいときには「ストラテジーパターン」という必要がある。

継承はベースとなる機能
その継承の使い方がパターンなのである
2017/09/30(土) 23:32:35.29ID:bL0j7tMv
>>89
> その設計にどんなパターンを使うのが良いのか?
> そこでデザインパターンの中から適切なものを探そう
それも俺は要求済みだ。早く答えろ。

> > 逆方向履歴という機能を実装するのに
> 何パターン? (>>60)

お前は典型的な「都合が悪い物は見えない病気」だな。
まあこの議論を見れば、デザパタ厨がどれだけゴミか分かるだろうから、お前らの布教も捗るだろうよ。
2017/09/30(土) 23:33:05.80ID:Lb08y44X
> 継承の典型的な使用例に「ストパタ」という名前を付けただけだ。

継承の典型的な使用例と何度も言っていることからわかるように

ストラテジーパターンは継承の使用例の一つでしか無い
だから継承といっても使用例が定まるわけではない。


何度も言うぞ

継承の「典型的な使用例」がストラテジーパターンである
2017/09/30(土) 23:35:25.33ID:bL0j7tMv
>>94
だから
・継承を使っているがストラテジーパターンには非該当
の例を出せるか?多分無理なんだよ。だから、
> だから「使い方」を言いたいときには「ストラテジーパターン」という必要がある。
この分離は必要ないんだよ。
この言い方では通じないとは思うが。
2017/09/30(土) 23:36:17.57ID:Lb08y44X
何度も言うぞ

継承の「典型的な使用例」がストラテジーパターンである

継承の使用例の一つがストラテジーパターンであるが
継承の利用例は他にも有る。

では聞こう

継承とは何パターンか?
答えるわけがない。

継承の使用例の一つがストラテジーパターンであるが
継承の他の利用例は別のパターン名がついているからである。


継承は道具。使用例がパターン。
使用例であるパターン名を言わないと、
どんな使用例かは答えられない

何度も言うぞ

継承の「典型的な使用例」がストラテジーパターンである 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
2017/09/30(土) 23:37:23.69ID:Lb08y44X
もうそろそろ、継承の「典型的な使用例」がストラテジーパターンである
という言葉の意味が理解できたことだろうか?


そう使用例がパターンなのである
2017/09/30(土) 23:37:53.05ID:wIKBotg5
>>94
だから
・継承を使っているがストパタには非該当
の例を出せるか?多分無理なんだよ。だから、
> だから「使い方」を言いたいときには「ストラテジーパターン」という必要がある。
この分離は必要ないんだよ。
この言い方では通じないとは思うが。
2017/09/30(土) 23:38:34.58ID:bL0j7tMv
>>94,96,98,99
>>97読め、そして以下の例よろしく
・継承を使っているがストラテジーパターンには非該当
2017/09/30(土) 23:39:35.12ID:wIKBotg5
>>94,96,98,99
>>97読め、そして以下の例よろしく
・継承を使っているがストパタには非該当
2017/09/30(土) 23:40:59.93ID:Lb08y44X
>>100

> ・継承を使っているがストパタには非該当
> の例を出せるか?

だせるが?

継承を使っている他のパターンはいくつも有るだろ?
だが、そのほかのパターンまで必要ない
継承の「使用例」がストラテジーパターンだ。
2017/09/30(土) 23:49:17.59ID:Lb08y44X
一つのクラスが複数のパターンを使っているってことは有るが
有るパターンが有るパターンを内包しているってのはない。

継承を使ってる他のパターンがストラテジーパターンを内包していること無い。

なぜそんな愚かな勘違いをするのか?

それはストラテジーパターンという使用例を
基本機能である継承と同一視しているからだ。

継承を使っているパターンはあるが
それはストラテジーパターンとして使っているわけではない。



継承とストラテジーパターンを同一視しているから、
そんな馬鹿な結論に至る。

これこそが、継承(基本機能)と応用(使用例)を
別々にしておくべきだという回答の一つでも有る
2017/09/30(土) 23:51:38.51ID:Lb08y44X
> Strategy パターンは、コンピュータープログラミングの領域において、アルゴリズムを実行時に選択することができるデザインパターンである。

と説明してあるように

アルゴリズムを実行時に選択しないのであれば
それはストラテジーパターンではない

継承を使っているからと言って実行時に選択するとは限らないからな

アルゴリズムを実行時に選択したい(使用例)ときに使うのが
ストラテジーパターンである
2017/09/30(土) 23:55:48.04ID:bL0j7tMv
>>105
だから、継承を使っていて、
> アルゴリズムを実行時に選択しない
例を挙げてみろ、と言ってるんだよ。
2017/10/01(日) 00:01:15.13ID:H5Asg8Dc
例えばRailsアプリだと一般的にモデルはActiveRecordクラスを継承して作るが
実行時にアルゴリズムを変えたりはしない
2017/10/01(日) 00:03:26.64ID:GRIqwmf+
>>107
ではそれは何の為に継承しているんだ?
2017/10/01(日) 00:07:41.09ID:H5Asg8Dc
ActiveRecordクラスで実装されている
機能を利用するために決まってるだろw

蛇足だが

ActiveRecordクラスを使わないモデルもあって
その場合は例えばActiveModelを使う。

だが面白いことに、ActiveRecordクラスは継承するが
ActiveModelは継承ではなくinclude(MixIn)する

実際の所コードを再利用することが目的なので
継承以外にもやり方はあるということだ。

そう考えるとActiveRecordも継承するのは必須ではないということになるな。

まあ蛇足だがw
2017/10/01(日) 00:12:57.26ID:GRIqwmf+
>>109
> そう考えるとActiveRecordも継承するのは必須ではないということになるな。
当たり前だ。
virtualに対して全くoverrideしないのなら継承の意味はない。
それはある意味、典型的な間違った使い方だ。
そしてお前はそれも分からない馬鹿だということ。
2017/10/01(日) 00:13:18.18ID:H5Asg8Dc
トーンが明らかに下がってきたなw

ようやくこのバカも理解出来あってことか。
デザインパターンは使用例(応用例)であって

そこで継承を使っているからって
継承が使用例(応用例)になるわけじゃない

ストラテジーパターンはアルゴリズムを実行時に
選択することができるようにするためのデザインパターン
そこで継承が使われていることは重要ではない。

継承を使うパターンは他にも有る。
使用例(応用例)が論点なのであって、何を使っているかは
デザインパターンとして考えるときには重要な事ではない。
2017/10/01(日) 00:16:02.84ID:H5Asg8Dc
>>110
> virtualに対して全くoverrideしないのなら継承の意味はない。
(そこからかーw)
2017/10/01(日) 00:16:29.39ID:GRIqwmf+
>>111
は?下がってないぞ。
俺はデザパタ=ゴミ、デザパタ厨=ゴミ、で変わりない。
ただしお前が馬鹿すぎて議論は無理だからフェードアウト気味なだけ。
2017/10/01(日) 00:17:15.28ID:U1G3k+aG
自分だけはバカじゃないという前提
2017/10/01(日) 00:21:43.29ID:H5Asg8Dc
>>113
でも、継承の「典型的な使用例」がストラテジーパターンである
という言葉に反論できてないじゃないですかーw

所詮、継承は使用例の一つなんですよ。
ストラテジーパターンを継承と言ってしまうと

他の継承を使っているパターンは、すべてストラテジーパターン
アルゴリズムを実行時に選択することができることが重要
だってことになるじゃないですかーw

意味不明ですよね

これはデザパタがゴミなんじゃなくて、
すべてはあんたのストラテジーパターンを継承と呼ぶから
こういう意味不明な結論にいなるわけですよ。


そうならないように、基本機能(継承)とその応用例(パターン)
きっちり分けて考えましょうって話なるわけ

何度も言いますよ?
継承の「典型的な使用例」がストラテジーパターンである
「典型的な使用例」です。
2017/10/01(日) 00:29:59.36ID:GRIqwmf+
>>115
間違った使い方はいくらでも出来るんだよ。言い換えれば、
・継承の正しい使用例は常にストラテジーパターンになる
でいいか?

overrideしないで継承するってのは典型的な「便利関数置き場」であって、
駄目だろこれは。
というか、これがありならパターンにあるべきだが、無いだろさすがに。
2017/10/01(日) 00:31:39.13ID:xYp8c7mI
>>115
間違った使い方はいくらでも出来るんだよ。言い換えれば、
・継承の正しい使用例は常にストパタになる
でいいか?

overrideしないで継承するってのは典型的な「便利関数置き場」であって、
駄目だろこれは。
というか、これがありならパタにあるべきだが、無いだろさすがに。
2017/10/01(日) 00:32:27.29ID:H5Asg8Dc
> ・継承の正しい使用例は常にストラテジーパターンになる
> でいいか?

継承の正しい使用例は常に「アルゴリズムを実行時に選択することができる」
ためのも。

うん。明らかに間違いだなw
実行時に選択できる必要ないし
2017/10/01(日) 00:33:52.13ID:H5Asg8Dc
>>117
> overrideしないで継承するってのは典型的な「便利関数置き場」であって、
> 駄目だろこれは。

だめでもなんでもない。

有るクラスが、有るクラスを踏まえているならば
(is-a関係)それを表現するために継承を使うべき

継承っていうのは「便利関数置き場」じゃないのよ?
それらの関数を使わなかったとしても
継承関係にあれば継承を使うんだよ。
2017/10/01(日) 00:35:47.35ID:H5Asg8Dc
overrideしない使い方として例えばRuntimeErrorみたいなのがあるな
その他の実行時エラークラスはRuntimeErrorを継承して作る。

そうすることで、全ての実行時エラークラスをRuntimeErrorとして
みなすことができるし、一部のクラスだけは例外的に
その他の情報をエラークラスに格納することができる。
2017/10/01(日) 00:46:34.86ID:GRIqwmf+
>>119
それはまた違う話だ。
1本道で複数継承している場合は、将来的に分岐したり交換される可能性等を踏まえているだけ。
絶対に分岐しないと分かり切っている場合に継承する意味はないだろ。

例えば、メソッド一つ一つ全部バラして継承させて、メソッド20個で継承20階層も出来るが、無駄だろ。
将来的にも絶対にoverrideされないのなら最初から継承構造なんて必要ないんだよ。
ベタにクラス作って終わりだ。

>>120
それはoverrideと同じ、というか、メソッドではなくメンバのoverrideになる。
2017/10/01(日) 00:49:35.69ID:H5Asg8Dc
これのどこがメンバのオーバーライドをしているのか説明してほしいもんなんだがw

http://blog.toshimaru.net/ruby-standard-error/

# `Exception`ではなく
class MyError1 < Exception; end
# `StandardError`.
class MyError2 < StandardError; end
2017/10/01(日) 00:51:22.19ID:H5Asg8Dc
>>121
お前さ、基本

1. 自分が○○にたいして馬鹿なことを言う
2. 自分が言った馬鹿なことの対して馬鹿だと自分でツッコむ
3. そのツッコミを根拠に、○○はダメだという

というやり方やってるよね?


○○がだめなんじゃなくて
お前がダメなんだよw
2017/10/01(日) 00:53:40.85ID:GRIqwmf+
が、まあ、これらは通常は区別されているから、以下としよう。
・メソッドの継承の正しい使用例は常にストラテジーパターンになる
・メソッド/フィールド等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない
これでいいか?
2017/10/01(日) 00:54:50.31ID:U1G3k+aG
何かよくわからんけどおもしろいなそれ
2017/10/01(日) 00:57:27.86ID:H5Asg8Dc
> ・メソッドの継承の正しい使用例は常にストラテジーパターンになる

ならないって何度も言ってるんだがw

> ・メソッド/フィールド等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない

意味はある。その例も出した。



結局さぁ、お前、実装のことしか考えられてないんだよ。
設計能力が圧倒的に不足している。

どんな設計を見た所で、その実装が継承使っていれば、
これは継承と呼ぶべきだーって叫ぶつもりだろ?
2017/10/01(日) 00:59:36.43ID:H5Asg8Dc
設計とはかならず「何のために」そういう設計をするのかという
目的が有る。それがデザパタの使用例や応用例なんだよ。

継承は「何のために」ではなく実現技術

だから継承といっただけでは何をしたいのか全くわからない。
だからデザインパターンで定義されている名前が必要
2017/10/01(日) 01:01:17.79ID:44WxUqLn
が、まあ、これらは通常は区別されているから、以下としよう。
・メソの継承の正しい使用例は常にストパタになる
・メソ/フィー等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない
これでいいか?
2017/10/01(日) 01:02:05.70ID:H5Asg8Dc
> ・メソッドの継承の正しい使用例は常にストラテジーパターンになる

ならないって何度も言ってるんだがw

> ・メソッド/フィールド等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない

意味はある。その例も出した。
2017/10/01(日) 01:03:39.76ID:GRIqwmf+
>>122
おれはRuby使いではないからチラ見ではよく分からんが、
見る限りrescueの仕様によるものであって、
Exceptionは派生しまくってるし、特に変だとも思わないが。
2017/10/01(日) 01:05:28.40ID:H5Asg8Dc
>>130
メソッド/フィールド等全てについて(将来的にも)全くoverrideしない
継承の正しい使い方だって言ってる
2017/10/01(日) 01:05:32.81ID:GRIqwmf+
>>129
とりあえずID見る癖付けろ。
俺のレスは粘着により複製されてるから。
2017/10/01(日) 01:07:40.92ID:GRIqwmf+
>>126
> どんな設計を見た所で、その実装が継承使っていれば、
> これは継承と呼ぶべきだーって叫ぶつもりだろ?
そりゃそうだろ。
お前は継承使ってても「これは継承ではない!」というのか?
2017/10/01(日) 01:09:09.45ID:GRIqwmf+
>>131
いや派生しまくってんだから、既にoverrideされまくっているはずだが。
2017/10/01(日) 01:10:27.50ID:H5Asg8Dc
>>133
> お前は継承使ってても「これは継承ではない!」というのか?

いや? 継承使っていてもストラテジーバターンでなければ
ストラテジーパターンではないと言うつもりだよ?

お前はストラテジーバターン=継承と呼ぶべきだって言ってるんだから、
お前はストラテジーパターンでないパターンを見ても、
ストラテジーバターン(=継承)だって言うんでしょ?

っていう話をしてるんだが?
2017/10/01(日) 01:11:52.96ID:44WxUqLn
>>132
あんたが表現のロジックを統一しないから代弁してやってんだよ
2017/10/01(日) 01:12:07.31ID:H5Asg8Dc
>>134
え? なに?

世界中の何処かで誰かがオーバーライドしていれば
それは継承使っていいって言ってるわけ?

その理屈だと継承が適切じゃないものなんてないだろうな。
世界中の何処かで誰かはオーバーライドしてるだろうさ
たとえそれが便利関数であったとしても
2017/10/01(日) 01:14:01.94ID:GRIqwmf+
>>135
> お前はストラテジーバターン=継承と呼ぶべきだって言ってるんだから、
そうとは言ってない。俺は、
・(正しい用法で)メソッドを継承した場合、ストラテジーパターンは自動的に適用されるから、
わざわざ「ストラテジーパターン(キリッツ」なんて言う機会も意味もない
という立場だ。
抽象度は違うが、分離不可能だし、分離する意味もないから通常は「継承」という言葉が使われる、ということ。
2017/10/01(日) 01:15:16.80ID:44WxUqLn
>>135
> お前はストラテジーバターン=継承と呼ぶべきだって言ってるんだから、
そうとは言ってない。俺は、
・(正しい用法で)メソを継承した場合、ストパタは自動的に適用されるから、
わざわざ「ストパタ(キリッツ」なんて言う機会も意味もない
という立場だ。
抽象度は違うが、分離不可能だし、分離する意味もないから通常は「継承」という言葉が使われる、ということ。
2017/10/01(日) 01:18:01.30ID:GRIqwmf+
>>137
意味不明。

RubyのExceptionは派生しまくっている=メソッド/フィールド等が既に追加/上書きされているはずであり、
これは正しい継承の使い方である、ということ。
2017/10/01(日) 01:19:25.82ID:H5Asg8Dc
>>138
> ・(正しい用法で)メソッドを継承した場合、ストラテジーパターンは自動的に適用されるから、
されない。

されると思っているのはお前がストラテジーバターン(設計用語)を
勝手に継承(実装用語)と読んでいるから、

何度も言うが設計は使用例(応用例)、つまり目的が有る
「アルゴリズムを実行時に選択することができる」
という目的があってこそストラテジーバターンと呼ぶことができるのであって
この目的がなければ、継承を使っていたからと言ってストラテジーバターンにはならない

設計用語を使わないからお前は「継承を使っているものはすべて継承だー!」という
意味不明なことをいうつもりだろって言ってんの。

設計用語を使っていれば「継承を使っているものはすべてストラテジーバターンだー!」
という事になって言葉的には意味不明なことにはならない。
もちろんこれが間違っているのは先に言ったとおり。

設計能力が足りないよ?
2017/10/01(日) 01:20:27.48ID:H5Asg8Dc
>>140
> RubyのExceptionは派生しまくっている=メソッド/フィールド等が既に追加/上書きされているはずであり、
いや上書きされてない。
上書きする必要ようもないしな。
2017/10/01(日) 01:25:04.92ID:GRIqwmf+
>>142
メンバは追加されてるだろ。(多分)
全く同じで階層だけ与えてエントリポイントをずらしているのか?
走だとしたらかなり奇妙な使い方だとは思うが。
2017/10/01(日) 01:26:45.20ID:44WxUqLn
>>142
メンバは追加されてるだろ。(多分)
全く同じで階層だけ与えてエンポイをずらしているのか?
走だとしたらかなり奇妙な使い方だとは思うが。
2017/10/01(日) 01:30:18.31ID:H5Asg8Dc
>>143
> メンバは追加されてるだろ。(多分)
オーバーライドの話だっただろ。アホめw


例外クラスは、クラスの階層構造を表現するのに
継承が適切だから継承を使ってる。
すべてのErrorはExceptioであり、実行時に発生するのは
StandardErrorであり、ファイルIOに関するエラーはIOErrorである
という風にだ。

これは設計として正しい。

オーバーライドするかどうかは些細な問題にすぎない。
重要なのは各クラスにどういう関係があって(これが設計)
それをどう言語で表現するか(これが実装)だ


お前がずっとやってるのは、実装だけしか見てないってことだよ。
2017/10/01(日) 01:30:53.56ID:GRIqwmf+
>>141
言いたいことは分かるが、平行線だな。
2017/10/01(日) 01:32:35.82ID:H5Asg8Dc
>>146
お前は言いたいことがわかる(俺が言ってることを理解した)
俺はお前が言いたいことがわからない

平行線ではない
2017/10/01(日) 01:34:40.94ID:GRIqwmf+
>>145
それも既に書いたけどね。
>>124読め。

とはいえ平行線ならそれでいい。
2017/10/01(日) 01:36:17.23ID:H5Asg8Dc
>>146
すべてはお前が

ストラテジーバターンは継承を使ってるから
設計用語ではなく実装用語の継承と呼びましょう

そうするとストラテジーバターンなんて用語はいらないですよね?
ってことはデザパタ用語は全ていらないんじゃないですか?

使う目的なんか気にせず、実装に継承を使っていれば
全部継承と呼びましょうよ

だからデザパタは意味がない。ゴミ


というばーかな。理屈を言い出したのが悪い。
2017/10/01(日) 01:36:22.99ID:GRIqwmf+
>>147
> 俺はお前が言いたいことがわからない
じゃあ全部読み直せ。
それで分からないのなら、俺かお前の日本語が駄目駄目なだけであり、
どちらにしてもこれ以上は無理だ。
2017/10/01(日) 01:36:32.17ID:44WxUqLn
>>145
それも既に書いたけどね。
>>128読め。

とはいえ平行線ならそれでいい。
2017/10/01(日) 01:38:16.54ID:H5Asg8Dc
>>150
お前の日本語がダメダメだってことだろw

お前はコンテキストを理解してない。
設計の話をしている時に実装の話をすんな
2017/10/01(日) 01:40:22.72ID:H5Asg8Dc
使う目的が違うのに、実装に継承が使われているだけで
全部継承と呼ぶな。それは実装用語だ

ストラテジーバターンの目的として使ってない時に

ストラテジーバターンは継承♪
継承を使っていればストラテジーバターン♪
だから全部ストラテジーバターン♪

とか言い出すなボケ

ストラテジーとは別のバターンとして使っているときは
実装に継承が含まれていようが別のパターンだ
2017/10/01(日) 01:42:14.15ID:GRIqwmf+
>>149
>>66,79,84読め
現実的に使えないから使われてないのだと思うぞ。
これも平行線ならそれでいいが。

>>153
そんなことは言ってないんだが、そう読めたのならそれでいい。
2017/10/01(日) 01:43:39.80ID:H5Asg8Dc
> 現実的に使えないから使われてないのだと思うぞ。

現実的に使われてるから、使われてるとしか言いようがない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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