前スレ
オブジェクト指向システムの設計 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
探検
オブジェクト指向システムの設計 174 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/09/26(火) 07:20:38.98ID:qu+DPehL
110デフォルトの名無しさん
2017/10/01(日) 00:12:57.26ID:GRIqwmf+ >>109
> そう考えるとActiveRecordも継承するのは必須ではないということになるな。
当たり前だ。
virtualに対して全くoverrideしないのなら継承の意味はない。
それはある意味、典型的な間違った使い方だ。
そしてお前はそれも分からない馬鹿だということ。
> そう考えるとActiveRecordも継承するのは必須ではないということになるな。
当たり前だ。
virtualに対して全くoverrideしないのなら継承の意味はない。
それはある意味、典型的な間違った使い方だ。
そしてお前はそれも分からない馬鹿だということ。
111デフォルトの名無しさん
2017/10/01(日) 00:13:18.18ID:H5Asg8Dc トーンが明らかに下がってきたなw
ようやくこのバカも理解出来あってことか。
デザインパターンは使用例(応用例)であって
そこで継承を使っているからって
継承が使用例(応用例)になるわけじゃない
ストラテジーパターンはアルゴリズムを実行時に
選択することができるようにするためのデザインパターン
そこで継承が使われていることは重要ではない。
継承を使うパターンは他にも有る。
使用例(応用例)が論点なのであって、何を使っているかは
デザインパターンとして考えるときには重要な事ではない。
ようやくこのバカも理解出来あってことか。
デザインパターンは使用例(応用例)であって
そこで継承を使っているからって
継承が使用例(応用例)になるわけじゃない
ストラテジーパターンはアルゴリズムを実行時に
選択することができるようにするためのデザインパターン
そこで継承が使われていることは重要ではない。
継承を使うパターンは他にも有る。
使用例(応用例)が論点なのであって、何を使っているかは
デザインパターンとして考えるときには重要な事ではない。
112デフォルトの名無しさん
2017/10/01(日) 00:16:02.84ID:H5Asg8Dc113デフォルトの名無しさん
2017/10/01(日) 00:16:29.39ID:GRIqwmf+114デフォルトの名無しさん
2017/10/01(日) 00:17:15.28ID:U1G3k+aG 自分だけはバカじゃないという前提
115デフォルトの名無しさん
2017/10/01(日) 00:21:43.29ID:H5Asg8Dc >>113
でも、継承の「典型的な使用例」がストラテジーパターンである
という言葉に反論できてないじゃないですかーw
所詮、継承は使用例の一つなんですよ。
ストラテジーパターンを継承と言ってしまうと
他の継承を使っているパターンは、すべてストラテジーパターン
アルゴリズムを実行時に選択することができることが重要
だってことになるじゃないですかーw
意味不明ですよね
これはデザパタがゴミなんじゃなくて、
すべてはあんたのストラテジーパターンを継承と呼ぶから
こういう意味不明な結論にいなるわけですよ。
そうならないように、基本機能(継承)とその応用例(パターン)
きっちり分けて考えましょうって話なるわけ
何度も言いますよ?
継承の「典型的な使用例」がストラテジーパターンである
「典型的な使用例」です。
でも、継承の「典型的な使用例」がストラテジーパターンである
という言葉に反論できてないじゃないですかーw
所詮、継承は使用例の一つなんですよ。
ストラテジーパターンを継承と言ってしまうと
他の継承を使っているパターンは、すべてストラテジーパターン
アルゴリズムを実行時に選択することができることが重要
だってことになるじゃないですかーw
意味不明ですよね
これはデザパタがゴミなんじゃなくて、
すべてはあんたのストラテジーパターンを継承と呼ぶから
こういう意味不明な結論にいなるわけですよ。
そうならないように、基本機能(継承)とその応用例(パターン)
きっちり分けて考えましょうって話なるわけ
何度も言いますよ?
継承の「典型的な使用例」がストラテジーパターンである
「典型的な使用例」です。
116デフォルトの名無しさん
2017/10/01(日) 00:29:59.36ID:GRIqwmf+ >>115
間違った使い方はいくらでも出来るんだよ。言い換えれば、
・継承の正しい使用例は常にストラテジーパターンになる
でいいか?
overrideしないで継承するってのは典型的な「便利関数置き場」であって、
駄目だろこれは。
というか、これがありならパターンにあるべきだが、無いだろさすがに。
間違った使い方はいくらでも出来るんだよ。言い換えれば、
・継承の正しい使用例は常にストラテジーパターンになる
でいいか?
overrideしないで継承するってのは典型的な「便利関数置き場」であって、
駄目だろこれは。
というか、これがありならパターンにあるべきだが、無いだろさすがに。
117デフォルトの名無しさん
2017/10/01(日) 00:31:39.13ID:xYp8c7mI >>115
間違った使い方はいくらでも出来るんだよ。言い換えれば、
・継承の正しい使用例は常にストパタになる
でいいか?
overrideしないで継承するってのは典型的な「便利関数置き場」であって、
駄目だろこれは。
というか、これがありならパタにあるべきだが、無いだろさすがに。
間違った使い方はいくらでも出来るんだよ。言い換えれば、
・継承の正しい使用例は常にストパタになる
でいいか?
overrideしないで継承するってのは典型的な「便利関数置き場」であって、
駄目だろこれは。
というか、これがありならパタにあるべきだが、無いだろさすがに。
118デフォルトの名無しさん
2017/10/01(日) 00:32:27.29ID:H5Asg8Dc > ・継承の正しい使用例は常にストラテジーパターンになる
> でいいか?
継承の正しい使用例は常に「アルゴリズムを実行時に選択することができる」
ためのも。
うん。明らかに間違いだなw
実行時に選択できる必要ないし
> でいいか?
継承の正しい使用例は常に「アルゴリズムを実行時に選択することができる」
ためのも。
うん。明らかに間違いだなw
実行時に選択できる必要ないし
119デフォルトの名無しさん
2017/10/01(日) 00:33:52.13ID:H5Asg8Dc >>117
> overrideしないで継承するってのは典型的な「便利関数置き場」であって、
> 駄目だろこれは。
だめでもなんでもない。
有るクラスが、有るクラスを踏まえているならば
(is-a関係)それを表現するために継承を使うべき
継承っていうのは「便利関数置き場」じゃないのよ?
それらの関数を使わなかったとしても
継承関係にあれば継承を使うんだよ。
> overrideしないで継承するってのは典型的な「便利関数置き場」であって、
> 駄目だろこれは。
だめでもなんでもない。
有るクラスが、有るクラスを踏まえているならば
(is-a関係)それを表現するために継承を使うべき
継承っていうのは「便利関数置き場」じゃないのよ?
それらの関数を使わなかったとしても
継承関係にあれば継承を使うんだよ。
120デフォルトの名無しさん
2017/10/01(日) 00:35:47.35ID:H5Asg8Dc overrideしない使い方として例えばRuntimeErrorみたいなのがあるな
その他の実行時エラークラスはRuntimeErrorを継承して作る。
そうすることで、全ての実行時エラークラスをRuntimeErrorとして
みなすことができるし、一部のクラスだけは例外的に
その他の情報をエラークラスに格納することができる。
その他の実行時エラークラスはRuntimeErrorを継承して作る。
そうすることで、全ての実行時エラークラスをRuntimeErrorとして
みなすことができるし、一部のクラスだけは例外的に
その他の情報をエラークラスに格納することができる。
121デフォルトの名無しさん
2017/10/01(日) 00:46:34.86ID:GRIqwmf+122デフォルトの名無しさん
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
http://blog.toshimaru.net/ruby-standard-error/
# `Exception`ではなく
class MyError1 < Exception; end
# `StandardError`.
class MyError2 < StandardError; end
123デフォルトの名無しさん
2017/10/01(日) 00:51:22.19ID:H5Asg8Dc >>121
お前さ、基本
1. 自分が○○にたいして馬鹿なことを言う
2. 自分が言った馬鹿なことの対して馬鹿だと自分でツッコむ
3. そのツッコミを根拠に、○○はダメだという
というやり方やってるよね?
○○がだめなんじゃなくて
お前がダメなんだよw
お前さ、基本
1. 自分が○○にたいして馬鹿なことを言う
2. 自分が言った馬鹿なことの対して馬鹿だと自分でツッコむ
3. そのツッコミを根拠に、○○はダメだという
というやり方やってるよね?
○○がだめなんじゃなくて
お前がダメなんだよw
124デフォルトの名無しさん
2017/10/01(日) 00:53:40.85ID:GRIqwmf+ が、まあ、これらは通常は区別されているから、以下としよう。
・メソッドの継承の正しい使用例は常にストラテジーパターンになる
・メソッド/フィールド等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない
これでいいか?
・メソッドの継承の正しい使用例は常にストラテジーパターンになる
・メソッド/フィールド等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない
これでいいか?
125デフォルトの名無しさん
2017/10/01(日) 00:54:50.31ID:U1G3k+aG 何かよくわからんけどおもしろいなそれ
126デフォルトの名無しさん
2017/10/01(日) 00:57:27.86ID:H5Asg8Dc > ・メソッドの継承の正しい使用例は常にストラテジーパターンになる
ならないって何度も言ってるんだがw
> ・メソッド/フィールド等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない
意味はある。その例も出した。
結局さぁ、お前、実装のことしか考えられてないんだよ。
設計能力が圧倒的に不足している。
どんな設計を見た所で、その実装が継承使っていれば、
これは継承と呼ぶべきだーって叫ぶつもりだろ?
ならないって何度も言ってるんだがw
> ・メソッド/フィールド等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない
意味はある。その例も出した。
結局さぁ、お前、実装のことしか考えられてないんだよ。
設計能力が圧倒的に不足している。
どんな設計を見た所で、その実装が継承使っていれば、
これは継承と呼ぶべきだーって叫ぶつもりだろ?
127デフォルトの名無しさん
2017/10/01(日) 00:59:36.43ID:H5Asg8Dc 設計とはかならず「何のために」そういう設計をするのかという
目的が有る。それがデザパタの使用例や応用例なんだよ。
継承は「何のために」ではなく実現技術
だから継承といっただけでは何をしたいのか全くわからない。
だからデザインパターンで定義されている名前が必要
目的が有る。それがデザパタの使用例や応用例なんだよ。
継承は「何のために」ではなく実現技術
だから継承といっただけでは何をしたいのか全くわからない。
だからデザインパターンで定義されている名前が必要
128デフォルトの名無しさん
2017/10/01(日) 01:01:17.79ID:44WxUqLn が、まあ、これらは通常は区別されているから、以下としよう。
・メソの継承の正しい使用例は常にストパタになる
・メソ/フィー等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない
これでいいか?
・メソの継承の正しい使用例は常にストパタになる
・メソ/フィー等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない
これでいいか?
129デフォルトの名無しさん
2017/10/01(日) 01:02:05.70ID:H5Asg8Dc > ・メソッドの継承の正しい使用例は常にストラテジーパターンになる
ならないって何度も言ってるんだがw
> ・メソッド/フィールド等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない
意味はある。その例も出した。
ならないって何度も言ってるんだがw
> ・メソッド/フィールド等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない
意味はある。その例も出した。
130デフォルトの名無しさん
2017/10/01(日) 01:03:39.76ID:GRIqwmf+131デフォルトの名無しさん
2017/10/01(日) 01:05:28.40ID:H5Asg8Dc132デフォルトの名無しさん
2017/10/01(日) 01:05:32.81ID:GRIqwmf+133デフォルトの名無しさん
2017/10/01(日) 01:07:40.92ID:GRIqwmf+134デフォルトの名無しさん
2017/10/01(日) 01:09:09.45ID:GRIqwmf+ >>131
いや派生しまくってんだから、既にoverrideされまくっているはずだが。
いや派生しまくってんだから、既にoverrideされまくっているはずだが。
135デフォルトの名無しさん
2017/10/01(日) 01:10:27.50ID:H5Asg8Dc >>133
> お前は継承使ってても「これは継承ではない!」というのか?
いや? 継承使っていてもストラテジーバターンでなければ
ストラテジーパターンではないと言うつもりだよ?
お前はストラテジーバターン=継承と呼ぶべきだって言ってるんだから、
お前はストラテジーパターンでないパターンを見ても、
ストラテジーバターン(=継承)だって言うんでしょ?
っていう話をしてるんだが?
> お前は継承使ってても「これは継承ではない!」というのか?
いや? 継承使っていてもストラテジーバターンでなければ
ストラテジーパターンではないと言うつもりだよ?
お前はストラテジーバターン=継承と呼ぶべきだって言ってるんだから、
お前はストラテジーパターンでないパターンを見ても、
ストラテジーバターン(=継承)だって言うんでしょ?
っていう話をしてるんだが?
136デフォルトの名無しさん
2017/10/01(日) 01:11:52.96ID:44WxUqLn >>132
あんたが表現のロジックを統一しないから代弁してやってんだよ
あんたが表現のロジックを統一しないから代弁してやってんだよ
137デフォルトの名無しさん
2017/10/01(日) 01:12:07.31ID:H5Asg8Dc >>134
え? なに?
世界中の何処かで誰かがオーバーライドしていれば
それは継承使っていいって言ってるわけ?
その理屈だと継承が適切じゃないものなんてないだろうな。
世界中の何処かで誰かはオーバーライドしてるだろうさ
たとえそれが便利関数であったとしても
え? なに?
世界中の何処かで誰かがオーバーライドしていれば
それは継承使っていいって言ってるわけ?
その理屈だと継承が適切じゃないものなんてないだろうな。
世界中の何処かで誰かはオーバーライドしてるだろうさ
たとえそれが便利関数であったとしても
138デフォルトの名無しさん
2017/10/01(日) 01:14:01.94ID:GRIqwmf+ >>135
> お前はストラテジーバターン=継承と呼ぶべきだって言ってるんだから、
そうとは言ってない。俺は、
・(正しい用法で)メソッドを継承した場合、ストラテジーパターンは自動的に適用されるから、
わざわざ「ストラテジーパターン(キリッツ」なんて言う機会も意味もない
という立場だ。
抽象度は違うが、分離不可能だし、分離する意味もないから通常は「継承」という言葉が使われる、ということ。
> お前はストラテジーバターン=継承と呼ぶべきだって言ってるんだから、
そうとは言ってない。俺は、
・(正しい用法で)メソッドを継承した場合、ストラテジーパターンは自動的に適用されるから、
わざわざ「ストラテジーパターン(キリッツ」なんて言う機会も意味もない
という立場だ。
抽象度は違うが、分離不可能だし、分離する意味もないから通常は「継承」という言葉が使われる、ということ。
139デフォルトの名無しさん
2017/10/01(日) 01:15:16.80ID:44WxUqLn >>135
> お前はストラテジーバターン=継承と呼ぶべきだって言ってるんだから、
そうとは言ってない。俺は、
・(正しい用法で)メソを継承した場合、ストパタは自動的に適用されるから、
わざわざ「ストパタ(キリッツ」なんて言う機会も意味もない
という立場だ。
抽象度は違うが、分離不可能だし、分離する意味もないから通常は「継承」という言葉が使われる、ということ。
> お前はストラテジーバターン=継承と呼ぶべきだって言ってるんだから、
そうとは言ってない。俺は、
・(正しい用法で)メソを継承した場合、ストパタは自動的に適用されるから、
わざわざ「ストパタ(キリッツ」なんて言う機会も意味もない
という立場だ。
抽象度は違うが、分離不可能だし、分離する意味もないから通常は「継承」という言葉が使われる、ということ。
140デフォルトの名無しさん
2017/10/01(日) 01:18:01.30ID:GRIqwmf+141デフォルトの名無しさん
2017/10/01(日) 01:19:25.82ID:H5Asg8Dc >>138
> ・(正しい用法で)メソッドを継承した場合、ストラテジーパターンは自動的に適用されるから、
されない。
されると思っているのはお前がストラテジーバターン(設計用語)を
勝手に継承(実装用語)と読んでいるから、
何度も言うが設計は使用例(応用例)、つまり目的が有る
「アルゴリズムを実行時に選択することができる」
という目的があってこそストラテジーバターンと呼ぶことができるのであって
この目的がなければ、継承を使っていたからと言ってストラテジーバターンにはならない
設計用語を使わないからお前は「継承を使っているものはすべて継承だー!」という
意味不明なことをいうつもりだろって言ってんの。
設計用語を使っていれば「継承を使っているものはすべてストラテジーバターンだー!」
という事になって言葉的には意味不明なことにはならない。
もちろんこれが間違っているのは先に言ったとおり。
設計能力が足りないよ?
> ・(正しい用法で)メソッドを継承した場合、ストラテジーパターンは自動的に適用されるから、
されない。
されると思っているのはお前がストラテジーバターン(設計用語)を
勝手に継承(実装用語)と読んでいるから、
何度も言うが設計は使用例(応用例)、つまり目的が有る
「アルゴリズムを実行時に選択することができる」
という目的があってこそストラテジーバターンと呼ぶことができるのであって
この目的がなければ、継承を使っていたからと言ってストラテジーバターンにはならない
設計用語を使わないからお前は「継承を使っているものはすべて継承だー!」という
意味不明なことをいうつもりだろって言ってんの。
設計用語を使っていれば「継承を使っているものはすべてストラテジーバターンだー!」
という事になって言葉的には意味不明なことにはならない。
もちろんこれが間違っているのは先に言ったとおり。
設計能力が足りないよ?
142デフォルトの名無しさん
2017/10/01(日) 01:20:27.48ID:H5Asg8Dc143デフォルトの名無しさん
2017/10/01(日) 01:25:04.92ID:GRIqwmf+144デフォルトの名無しさん
2017/10/01(日) 01:26:45.20ID:44WxUqLn145デフォルトの名無しさん
2017/10/01(日) 01:30:18.31ID:H5Asg8Dc >>143
> メンバは追加されてるだろ。(多分)
オーバーライドの話だっただろ。アホめw
例外クラスは、クラスの階層構造を表現するのに
継承が適切だから継承を使ってる。
すべてのErrorはExceptioであり、実行時に発生するのは
StandardErrorであり、ファイルIOに関するエラーはIOErrorである
という風にだ。
これは設計として正しい。
オーバーライドするかどうかは些細な問題にすぎない。
重要なのは各クラスにどういう関係があって(これが設計)
それをどう言語で表現するか(これが実装)だ
お前がずっとやってるのは、実装だけしか見てないってことだよ。
> メンバは追加されてるだろ。(多分)
オーバーライドの話だっただろ。アホめw
例外クラスは、クラスの階層構造を表現するのに
継承が適切だから継承を使ってる。
すべてのErrorはExceptioであり、実行時に発生するのは
StandardErrorであり、ファイルIOに関するエラーはIOErrorである
という風にだ。
これは設計として正しい。
オーバーライドするかどうかは些細な問題にすぎない。
重要なのは各クラスにどういう関係があって(これが設計)
それをどう言語で表現するか(これが実装)だ
お前がずっとやってるのは、実装だけしか見てないってことだよ。
146デフォルトの名無しさん
2017/10/01(日) 01:30:53.56ID:GRIqwmf+ >>141
言いたいことは分かるが、平行線だな。
言いたいことは分かるが、平行線だな。
147デフォルトの名無しさん
2017/10/01(日) 01:32:35.82ID:H5Asg8Dc148デフォルトの名無しさん
2017/10/01(日) 01:34:40.94ID:GRIqwmf+149デフォルトの名無しさん
2017/10/01(日) 01:36:17.23ID:H5Asg8Dc >>146
すべてはお前が
ストラテジーバターンは継承を使ってるから
設計用語ではなく実装用語の継承と呼びましょう
そうするとストラテジーバターンなんて用語はいらないですよね?
ってことはデザパタ用語は全ていらないんじゃないですか?
使う目的なんか気にせず、実装に継承を使っていれば
全部継承と呼びましょうよ
だからデザパタは意味がない。ゴミ
というばーかな。理屈を言い出したのが悪い。
すべてはお前が
ストラテジーバターンは継承を使ってるから
設計用語ではなく実装用語の継承と呼びましょう
そうするとストラテジーバターンなんて用語はいらないですよね?
ってことはデザパタ用語は全ていらないんじゃないですか?
使う目的なんか気にせず、実装に継承を使っていれば
全部継承と呼びましょうよ
だからデザパタは意味がない。ゴミ
というばーかな。理屈を言い出したのが悪い。
150デフォルトの名無しさん
2017/10/01(日) 01:36:22.99ID:GRIqwmf+151デフォルトの名無しさん
2017/10/01(日) 01:36:32.17ID:44WxUqLn152デフォルトの名無しさん
2017/10/01(日) 01:38:16.54ID:H5Asg8Dc153デフォルトの名無しさん
2017/10/01(日) 01:40:22.72ID:H5Asg8Dc 使う目的が違うのに、実装に継承が使われているだけで
全部継承と呼ぶな。それは実装用語だ
ストラテジーバターンの目的として使ってない時に
ストラテジーバターンは継承♪
継承を使っていればストラテジーバターン♪
だから全部ストラテジーバターン♪
とか言い出すなボケ
ストラテジーとは別のバターンとして使っているときは
実装に継承が含まれていようが別のパターンだ
全部継承と呼ぶな。それは実装用語だ
ストラテジーバターンの目的として使ってない時に
ストラテジーバターンは継承♪
継承を使っていればストラテジーバターン♪
だから全部ストラテジーバターン♪
とか言い出すなボケ
ストラテジーとは別のバターンとして使っているときは
実装に継承が含まれていようが別のパターンだ
154デフォルトの名無しさん
2017/10/01(日) 01:42:14.15ID:GRIqwmf+155デフォルトの名無しさん
2017/10/01(日) 01:43:39.80ID:H5Asg8Dc > 現実的に使えないから使われてないのだと思うぞ。
現実的に使われてるから、使われてるとしか言いようがない
現実的に使われてるから、使われてるとしか言いようがない
156デフォルトの名無しさん
2017/10/01(日) 01:44:39.83ID:44WxUqLn157デフォルトの名無しさん
2017/10/01(日) 01:45:19.08ID:H5Asg8Dc 例えば、Railsのモデルに使われているActiveRecordというのは
もともとPoEAAのActiveRecordパターンという
パターンを実装したものだ
あまりにもRailsが有名になりすぎてRailsのものだと
勘違いしている人がいるぐらいにな。
これだけでも有名で大規模な利用例と言えよう
もともとPoEAAのActiveRecordパターンという
パターンを実装したものだ
あまりにもRailsが有名になりすぎてRailsのものだと
勘違いしている人がいるぐらいにな。
これだけでも有名で大規模な利用例と言えよう
158デフォルトの名無しさん
2017/10/01(日) 01:46:37.91ID:GRIqwmf+159デフォルトの名無しさん
2017/10/01(日) 01:49:44.09ID:H5Asg8Dc >>158
あぁ、レスが遅かったな。
すでにデザインパターンが使われてる例を一つ出したところだ
デザインパターンが使われていない証拠を出せ
デザインパターンが使われている証拠を出せ
これは
幽霊がいないという証拠を出せ
幽霊がいるという証拠を出せ
という話と似ている。幽霊がいないことを証明するのは難しいが
幽霊がいるという証明をするのは簡単
一匹でも幽霊を見つけてくればいい。
だから俺はデザインパターンが使われてる例を一つ出した。
お前は難しい方から攻めてくれ。デザインパターンが使われていないという証明をしろ。
あぁ、レスが遅かったな。
すでにデザインパターンが使われてる例を一つ出したところだ
デザインパターンが使われていない証拠を出せ
デザインパターンが使われている証拠を出せ
これは
幽霊がいないという証拠を出せ
幽霊がいるという証拠を出せ
という話と似ている。幽霊がいないことを証明するのは難しいが
幽霊がいるという証明をするのは簡単
一匹でも幽霊を見つけてくればいい。
だから俺はデザインパターンが使われてる例を一つ出した。
お前は難しい方から攻めてくれ。デザインパターンが使われていないという証明をしろ。
160デフォルトの名無しさん
2017/10/01(日) 01:52:23.50ID:GRIqwmf+161デフォルトの名無しさん
2017/10/01(日) 01:56:02.10ID:44WxUqLn #define パターン パタ
#define デザインパターン デザパタ
#define ストラテジーパターン ストパタ
#define メソッド メソ
#define フィールド フィー
これでだいぶコード量が小さくできる
他に入れとくべきものある?
#define デザインパターン デザパタ
#define ストラテジーパターン ストパタ
#define メソッド メソ
#define フィールド フィー
これでだいぶコード量が小さくできる
他に入れとくべきものある?
162デフォルトの名無しさん
2017/10/01(日) 01:56:44.56ID:H5Asg8Dc >>160
だからお前は実装のことしか見れてないっていってんだよww
視野が狭すぎ
「AcriveRecordオブジェクトを継承しといてね」は実装の話だ
「AcriveRecordパターン使ってね」は設計の話だ。
(実際には誰かに頼まれて使ったのではなくRailsの生みの親のDHHが
考慮した結果AcriveRecordパターンを使っわけだが)
お前は設計がすんだあとの立場からしか見えてないんだよ。
お前の書き込み自体が「○○しといてね」と指示を出される側から見てるのがその証拠
お前は誰かがやった設計の通りに、実装することしかしたことがないんだろ?
だからお前は実装のことしか見れてないっていってんだよww
視野が狭すぎ
「AcriveRecordオブジェクトを継承しといてね」は実装の話だ
「AcriveRecordパターン使ってね」は設計の話だ。
(実際には誰かに頼まれて使ったのではなくRailsの生みの親のDHHが
考慮した結果AcriveRecordパターンを使っわけだが)
お前は設計がすんだあとの立場からしか見えてないんだよ。
お前の書き込み自体が「○○しといてね」と指示を出される側から見てるのがその証拠
お前は誰かがやった設計の通りに、実装することしかしたことがないんだろ?
163デフォルトの名無しさん
2017/10/01(日) 02:01:22.65ID:44WxUqLn 実装は思想やモデル、指針を定義するパターンを実現する手法のひとつにすぎない
それだけのことだよね
それだけのことだよね
164デフォルトの名無しさん
2017/10/01(日) 02:03:57.54ID:GRIqwmf+ >>162
いや、指示を出す立場でも同じ言葉だと思うが。
よく知らないが、
> ActiveRecordのようなO/Rマッパーを使うと、
> オブジェクト指向プログラミングができるのはもちろん、
> モデル層の永続化のコードを基本的にライブラリ任せにできるので、
> SQLを記述する煩わしさを避けることができます。
> http://www.atmarkit.co.jp/ait/articles/1104/12/news135.html
つまり俺なら普通に「O/Rマッパー」って言うぞ。
それを厨二に「ActiveRecord(キリッ」と名付けるのは勝手だが、
何故俺がいちいち名前を覚えないといけないのだ?
いや、指示を出す立場でも同じ言葉だと思うが。
よく知らないが、
> ActiveRecordのようなO/Rマッパーを使うと、
> オブジェクト指向プログラミングができるのはもちろん、
> モデル層の永続化のコードを基本的にライブラリ任せにできるので、
> SQLを記述する煩わしさを避けることができます。
> http://www.atmarkit.co.jp/ait/articles/1104/12/news135.html
つまり俺なら普通に「O/Rマッパー」って言うぞ。
それを厨二に「ActiveRecord(キリッ」と名付けるのは勝手だが、
何故俺がいちいち名前を覚えないといけないのだ?
165デフォルトの名無しさん
2017/10/01(日) 02:05:21.68ID:44WxUqLn166デフォルトの名無しさん
2017/10/01(日) 02:08:23.29ID:GRIqwmf+167デフォルトの名無しさん
2017/10/01(日) 02:08:24.39ID:H5Asg8Dc 普通、設計は「○○パターンを使ってね」なんて言わないからなぁ。
言うとしたら「○○パターンを使いましょう」だ
なにもない所から使うパターンを考えることが設計作業なんだから。
設計者が実装者に指示を出すとしたら
「○○パターンを使いますから、必要なクラスを実装してください」か
もしくは「○○パターンを使います。そのために必要なクラスの一部を作りましたから、
あなたは○○オブジェクトを継承しといてね」になるだろう。
そう実装の話。実装の立場からしか物事を見れてないから
設計をすることの意味すらもわからず
設計に実装と同じような指示が存在すると墓穴をほってしまう。
言うとしたら「○○パターンを使いましょう」だ
なにもない所から使うパターンを考えることが設計作業なんだから。
設計者が実装者に指示を出すとしたら
「○○パターンを使いますから、必要なクラスを実装してください」か
もしくは「○○パターンを使います。そのために必要なクラスの一部を作りましたから、
あなたは○○オブジェクトを継承しといてね」になるだろう。
そう実装の話。実装の立場からしか物事を見れてないから
設計をすることの意味すらもわからず
設計に実装と同じような指示が存在すると墓穴をほってしまう。
168デフォルトの名無しさん
2017/10/01(日) 02:09:16.78ID:H5Asg8Dc169デフォルトの名無しさん
2017/10/01(日) 02:11:38.94ID:44WxUqLn170デフォルトの名無しさん
2017/10/01(日) 02:12:56.51ID:H5Asg8Dc まあ、ご教授してさしあげると(笑)
O/Rマッパーは設計を意味する用語ではない
なにかのオブジェクトとデータベースをマッピングする
という目的のためにライブラリ・フレムワークの種類のことだ。
O/Rマッパーと言ってもそこにどんな設計が使われているかはわからない。
ActiveRecordパターンを使ってるかもしれないし
Table Data Gatewayパターンを使ってるかもしれないし
Row Data Gatewayパターンを使ってるかもしれないし
Data Mapperパターンを使ってるかもしれない
O/Rマッパーは設計を意味する用語ではない
なにかのオブジェクトとデータベースをマッピングする
という目的のためにライブラリ・フレムワークの種類のことだ。
O/Rマッパーと言ってもそこにどんな設計が使われているかはわからない。
ActiveRecordパターンを使ってるかもしれないし
Table Data Gatewayパターンを使ってるかもしれないし
Row Data Gatewayパターンを使ってるかもしれないし
Data Mapperパターンを使ってるかもしれない
171デフォルトの名無しさん
2017/10/01(日) 02:14:56.98ID:H5Asg8Dc RailsのActiveRecordは
その名前の通りPoEAAのActiveRecordパターンを
実装したO/Rマッパーである
別にO/Rマッパー全てがActiveRecordパターンというわけではない
その名前の通りPoEAAのActiveRecordパターンを
実装したO/Rマッパーである
別にO/Rマッパー全てがActiveRecordパターンというわけではない
172デフォルトの名無しさん
2017/10/01(日) 02:15:32.16ID:GRIqwmf+173デフォルトの名無しさん
2017/10/01(日) 02:16:17.79ID:44WxUqLn まとめると、基本設計(パターン)とそれを実現するために使う道具(ライブラリ等の具体的な実装)の区別をちゃんとつけて設計しましょう
ってことでFA?
ってことでFA?
174デフォルトの名無しさん
2017/10/01(日) 02:17:03.31ID:H5Asg8Dc Java の Hibernate という O/Rマッパーが
Data Mapperパターンを使っている
http://d.hatena.ne.jp/naoya/20051024/1130146687
> テーブルの構造とクラスの設計に乖離がある場合、
> その乖離を埋めるためのマッピングを用意してやる必要がある、
> これが Data Mapper パターン。Java の Hibernate とかが
> Data Mapper による O/R マッピング実装。
Data Mapperパターンを使っている
http://d.hatena.ne.jp/naoya/20051024/1130146687
> テーブルの構造とクラスの設計に乖離がある場合、
> その乖離を埋めるためのマッピングを用意してやる必要がある、
> これが Data Mapper パターン。Java の Hibernate とかが
> Data Mapper による O/R マッピング実装。
175デフォルトの名無しさん
2017/10/01(日) 02:18:34.76ID:H5Asg8Dc >>172
O/Rマッパーの実装として
ActiveRecordパターンを使ったRailsのActiveRecordと
DataMapperパターンを使ったJavaのHibernateを紹介した
ここからもO/Rマッパーという用語では
設計がわからんという話に納得できただろ?w
O/Rマッパーの実装として
ActiveRecordパターンを使ったRailsのActiveRecordと
DataMapperパターンを使ったJavaのHibernateを紹介した
ここからもO/Rマッパーという用語では
設計がわからんという話に納得できただろ?w
176デフォルトの名無しさん
2017/10/01(日) 02:18:59.84ID:GRIqwmf+ >>170,171
それくらいは分かるが、と言うより、
・O/Rマッパー=OとRをマッピングするもの
であって、それ以上でも以下でもないんだよ。
ただし、中身の実装を知らなくていいというのがOOPであって、それで終わり。
それくらいは分かるが、と言うより、
・O/Rマッパー=OとRをマッピングするもの
であって、それ以上でも以下でもないんだよ。
ただし、中身の実装を知らなくていいというのがOOPであって、それで終わり。
177デフォルトの名無しさん
2017/10/01(日) 02:20:16.08ID:H5Asg8Dc > ただし、中身の実装を知らなくていいというのがOOPであって、それで終わり。
ア、ハイ、実装者側の立場からしか見えてないんですよね?w
中身の設計ぐらい知らなきゃw
ア、ハイ、実装者側の立場からしか見えてないんですよね?w
中身の設計ぐらい知らなきゃw
178デフォルトの名無しさん
2017/10/01(日) 02:21:21.14ID:44WxUqLn 少しずつ主張を変えていって最初からそう言ってるんだがってことにする論法って俗に何て言うの?
179デフォルトの名無しさん
2017/10/01(日) 02:21:59.93ID:H5Asg8Dc ちょっとまてw
終わった話を蒸し返す論法も使ってるぞw
終わった話を蒸し返す論法も使ってるぞw
180デフォルトの名無しさん
2017/10/01(日) 02:26:02.99ID:GRIqwmf+181デフォルトの名無しさん
2017/10/01(日) 02:28:09.18ID:H5Asg8Dc 実装者は使うライブラリ・フレームワークの設計をしらないと
めちゃくちゃになるからな。
例えば昔、トランザクションスクリプトパターンと
単なるSQLライブラリばかり使ってきた人が
別プロジェクトでPythonのDjango(これもActiveRecordパターン)を
使ったんだが散々な結果だったよ。
フレームワークとしてActiveRecordパターンを要求されるが
そこにActiveRecordパターンではやらないようなコード
(SQLを実行するだけのようなメソッド)をクラスに生やしたりして。
Djangoフレームワークの実装の中身は見なくてもいいけど
そこで使われている設計はちゃんと理解していなければダメだ。
めちゃくちゃになるからな。
例えば昔、トランザクションスクリプトパターンと
単なるSQLライブラリばかり使ってきた人が
別プロジェクトでPythonのDjango(これもActiveRecordパターン)を
使ったんだが散々な結果だったよ。
フレームワークとしてActiveRecordパターンを要求されるが
そこにActiveRecordパターンではやらないようなコード
(SQLを実行するだけのようなメソッド)をクラスに生やしたりして。
Djangoフレームワークの実装の中身は見なくてもいいけど
そこで使われている設計はちゃんと理解していなければダメだ。
182デフォルトの名無しさん
2017/10/01(日) 02:28:25.53ID:44WxUqLn あるOOPベースのライブラリを使うことで結果的にあるデザインパターンに沿うことになるライブラリと、いろんなデザインパターンを実現するのに使えるより純粋な道具としてのライブラリがあると思うの
そこはちゃんと分離して話をしないとダメだと思うの
そこはちゃんと分離して話をしないとダメだと思うの
183デフォルトの名無しさん
2017/10/01(日) 02:28:51.27ID:H5Asg8Dc184デフォルトの名無しさん
2017/10/01(日) 02:30:10.95ID:GRIqwmf+ 一応俺のスタンスは最初から変わってないつもりだぞ。
・デザパタはゴミ
・デザパタ厨もゴミ
・デザパタ用語は使い道がないからゴミ
・デザパタはゴミ
・デザパタ厨もゴミ
・デザパタ用語は使い道がないからゴミ
185デフォルトの名無しさん
2017/10/01(日) 02:31:34.05ID:44WxUqLn186デフォルトの名無しさん
2017/10/01(日) 02:31:45.57ID:H5Asg8Dc187デフォルトの名無しさん
2017/10/01(日) 02:32:31.62ID:GRIqwmf+188デフォルトの名無しさん
2017/10/01(日) 02:34:18.00ID:44WxUqLn189デフォルトの名無しさん
2017/10/01(日) 02:35:51.52ID:GRIqwmf+190デフォルトの名無しさん
2017/10/01(日) 02:36:36.93ID:H5Asg8Dc >>187
> しかしそれは「フレームワークの中身を知っておけ」であって、「デザパタを知っておけ」ではない。
「フレームワークで使われてるデザパタを知っておけ」だ
俺はDjangoは当時知らなかったがActiveRecordパターンを知っていたから
使い方が間違っていることにすぐに気づいたぞ
特定のフレームワークに縛られない知識が重要という話だ。
あくまで実装者として立場からしか見れないお前は
今使ってるフレームワークの使い方で精一杯なんだろうけどな。
そしてフレームワークから呼び出されるコードしか書かないから
お前の世界にはデザパタがでてこないわけだよ。
全て理屈が通ったなw
> しかしそれは「フレームワークの中身を知っておけ」であって、「デザパタを知っておけ」ではない。
「フレームワークで使われてるデザパタを知っておけ」だ
俺はDjangoは当時知らなかったがActiveRecordパターンを知っていたから
使い方が間違っていることにすぐに気づいたぞ
特定のフレームワークに縛られない知識が重要という話だ。
あくまで実装者として立場からしか見れないお前は
今使ってるフレームワークの使い方で精一杯なんだろうけどな。
そしてフレームワークから呼び出されるコードしか書かないから
お前の世界にはデザパタがでてこないわけだよ。
全て理屈が通ったなw
191デフォルトの名無しさん
2017/10/01(日) 02:40:26.75ID:GRIqwmf+ >>190
だからそれは「フレームワークがActiveRecord前提で組まれている」からであり、
それを「ActiveRecordパターン」と呼ぶのは自由だが、GoFの言う「デザパタ」とは違うって。
まあ平行線ならそれでいいが。
だからそれは「フレームワークがActiveRecord前提で組まれている」からであり、
それを「ActiveRecordパターン」と呼ぶのは自由だが、GoFの言う「デザパタ」とは違うって。
まあ平行線ならそれでいいが。
192デフォルトの名無しさん
2017/10/01(日) 02:44:03.92ID:H5Asg8Dc > GoFの言う「デザパタ」とは違うって。
そりゃそうだ。ActiveRecordパターンは
エンタープライズアプリケーションアーキテクチャパターン
https://www.amazon.co.jp/dp/B01B5MX2O2/
にのってるマーチン・ファウラーのデザインパターンなんだから
そりゃそうだ。ActiveRecordパターンは
エンタープライズアプリケーションアーキテクチャパターン
https://www.amazon.co.jp/dp/B01B5MX2O2/
にのってるマーチン・ファウラーのデザインパターンなんだから
193デフォルトの名無しさん
2017/10/01(日) 02:46:05.25ID:U1G3k+aG194デフォルトの名無しさん
2017/10/01(日) 02:50:38.64ID:GRIqwmf+195デフォルトの名無しさん
2017/10/01(日) 02:51:22.94ID:H5Asg8Dc ちなみにJava の Hibernate という O/Rマッパーは
ActiveRecordパターンとともに紹介されている
Data Mapperパターンを使っているが
Hibernate はフレームワークではない。ライブラリである。
ActiveRecordパターンとともに紹介されている
Data Mapperパターンを使っているが
Hibernate はフレームワークではない。ライブラリである。
196デフォルトの名無しさん
2017/10/01(日) 02:53:02.16ID:GRIqwmf+197デフォルトの名無しさん
2017/10/01(日) 02:55:34.72ID:44WxUqLn デザインパターンは不要の長物といってる人はデザインパターンを理解してないと思われる
何かしらのソフトウェアをゼロから作り上げるにあたっては必ず何かしらの大枠となる基本設計思想や基本構造を構想して行われる
それがGoFのデザインパターンに一致するかもしれないし、新しい独自のデザインパターンかもしれない
デザインパターンという言葉は両者含めての言葉である
つまり、デザインパターンを持たないソフトウェアなど本来は存在しない
何かしらのソフトウェアをゼロから作り上げるにあたっては必ず何かしらの大枠となる基本設計思想や基本構造を構想して行われる
それがGoFのデザインパターンに一致するかもしれないし、新しい独自のデザインパターンかもしれない
デザインパターンという言葉は両者含めての言葉である
つまり、デザインパターンを持たないソフトウェアなど本来は存在しない
198デフォルトの名無しさん
2017/10/01(日) 02:55:40.17ID:H5Asg8Dc199デフォルトの名無しさん
2017/10/01(日) 02:57:01.13ID:H5Asg8Dc >>196
> これも何度も言っているが、ストラテジーパターンに該当するとして、
> その際、継承/委譲/関数ポインタのどれにするかで大違いなので、
> 現実的に「ストラテジーパターンで行きましょう」なんて議論は無理で、
ここはいろんなアルゴリズムを実行時に切り替えられるようにしよう
であればストラテジーバターンで行きましょう。という議論になる。
アルゴリズムを実行時に切り替えられるようにしようという設計の話で
委譲にしておく?なんて実装の話は出てこない。
> これも何度も言っているが、ストラテジーパターンに該当するとして、
> その際、継承/委譲/関数ポインタのどれにするかで大違いなので、
> 現実的に「ストラテジーパターンで行きましょう」なんて議論は無理で、
ここはいろんなアルゴリズムを実行時に切り替えられるようにしよう
であればストラテジーバターンで行きましょう。という議論になる。
アルゴリズムを実行時に切り替えられるようにしようという設計の話で
委譲にしておく?なんて実装の話は出てこない。
200デフォルトの名無しさん
2017/10/01(日) 02:57:04.47ID:44WxUqLn201デフォルトの名無しさん
2017/10/01(日) 02:58:01.82ID:H5Asg8Dc ほらなw
答えたのに無視するもんなー
こういうやつです
答えたのに無視するもんなー
こういうやつです
202デフォルトの名無しさん
2017/10/01(日) 03:01:11.73ID:44WxUqLn >>196
デザインパターンとは設計の大枠となる構造や指針であって、それを決めてからより具体的な実装を検討していくってだけなんだが…
デザインパターンとは設計の大枠となる構造や指針であって、それを決めてからより具体的な実装を検討していくってだけなんだが…
203デフォルトの名無しさん
2017/10/01(日) 03:04:15.90ID:GRIqwmf+204デフォルトの名無しさん
2017/10/01(日) 03:05:53.36ID:44WxUqLn >>203
回答しといたぞ
回答しといたぞ
205デフォルトの名無しさん
2017/10/01(日) 03:07:26.90ID:GRIqwmf+206デフォルトの名無しさん
2017/10/01(日) 03:09:34.07ID:44WxUqLn >>205
デザパタっていうなら省略ポリシーをちゃんと守って書きなって言ってるだけ
デザパタっていうなら省略ポリシーをちゃんと守って書きなって言ってるだけ
207デフォルトの名無しさん
2017/10/01(日) 03:14:58.23ID:44WxUqLn >>205
デザパタと言ったかと思えばストラテジーパターンと言ってみたり、中途半端なんだよ
そういうやつが書くコードは、ところどころポリシーが違ったりしてるいい加減なコードを書きそうだ
そんな調子だからデザインパターンも軽視するのだろう
デザパタと言ったかと思えばストラテジーパターンと言ってみたり、中途半端なんだよ
そういうやつが書くコードは、ところどころポリシーが違ったりしてるいい加減なコードを書きそうだ
そんな調子だからデザインパターンも軽視するのだろう
208デフォルトの名無しさん
2017/10/01(日) 03:20:07.22ID:H5Asg8Dc デザパタと略すならストラテジーパターンも
ストパンと略すべきだろうな
ストパンと略すべきだろうな
209デフォルトの名無しさん
2017/10/01(日) 03:23:34.93ID:44WxUqLn >>208
いやそれはおかしいだろw
いやそれはおかしいだろw
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★2 [ぐれ★]
- 【速報】中国、水産物輸入停止と通達 「処理水」理由、日本政府へ ★7 [おっさん友の会★]
- 中国側が首相答弁の撤回要求、日本側拒否★7 [夜のけいちゃん★]
- NHK会長 新語・流行語大賞ノミネート「オールドメディア」に反論「言われる筋合いはない」「新しいメディアだと思っている」 [muffin★]
- 【速報】 米大使「はっきりさせておこう、米国は尖閣諸島含め日本の防衛に全面コミット、中国がどうしようが変わらない」 [お断り★]
- 自民、経済対策で子ども1人に2万円給付へ 児童手当に上乗せ 所要額は約4000億円 [ぐれ★]
- 【悲報】ヨブ・トリューニヒトさん「流石の俺でも高市早苗にはドン引き😰」 [616817505]
- 中国「次に禁止してほしいものを教えて」 [358382861]
- NvidiaとADM、ローエンドモデルのグラボの生産を終了wwwww VRAM高騰による原価割れのため [197015205]
- 【速報】中国、水産物輸入停止★3 [989870298]
- 【総裁選】記者「進次郎メモ見過ぎ」高市早苗「w」小泉進次郎「責任ある者は適切な慎重さを備えるべき」 [175344491]
- 【高市訃報】ホタテ業者、死亡😇😇😇 [573041775]
