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

レス数が900を超えています。1000を超えると表示できなくなるよ。
1uy ◆e6.oHu1j.o
垢版 |
2016/07/09(土) 00:35:13.95ID:Mn3UGZ+O
前スレ
オブジェクト指向システムの設計 171 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1465636703/
827
垢版 |
2017/07/29(土) 13:52:27.31ID:sarQXHNa
>>819の折れない心は凄いが、ホントその通りで
>>421で最初に言って、>>647で重ねたように、俺もそいつがそいつだけで行えるチェックに関しては混ぜろとは言ってないんよね。
828
垢版 |
2017/07/29(土) 13:52:38.01ID:sarQXHNa
>>826
やかましわ
2017/07/29(土) 14:18:53.75ID:Suk8TZUZ
>>819
> 権限管理オブジェクトの中で何やってるかは隠蔽されてるものなので
同じように、注文オブジェクトの内部のビジネスルールは隠蔽すべきではないですか?

> あなたは全てを「権限管理オブジェクト」にごっちゃにしてはいけないと言ってる。
違います。
注文そのものに対するビジネスルールと、それ以外(たとえば権限によるルール)をごっちゃに
してはいけないと言っています。

> ただし「権限管理オブジェクト」やビジネスロジックやその他を扱うオブジェクトを
> 統括する別のオブジェクトを作って、そこでごっちゃにしろと言ってる。
注文オブジェクトには、一切のビジネスルールの実装をしないということですか?
それには同意できませんね。

>>822
> 本質的には同じ物なんだから。
いえ、違います。オブジェクトの責務の話です。
2017/07/29(土) 14:38:07.32ID:JFgIXVoU
何が嫌いかよりコードで自分を語れよ!!!
2017/07/29(土) 14:57:48.59ID:Suk8TZUZ
テストの話を少ししましょうか。
void foo() {
  if (!check1()) {
    return;
  }
  if (!check2()) {
    return;
  }
  if (!check3()) {
    return;
  }
  do_something();
}
というコードがあったとき、チェックが3つあるから2*2*2=8通りのテストをするのかという話です。

{check1, check2, check3, do_something}
{true, true, true, 実行される}
{true, true, false, -}
{true, false, -, -}
{false, -, -, -}
の4通りで済みます。

つまり、N個のcheckがあるとき、テストケースはN+1個でいいんです。
10個のチェックがあるとき、2~10=1024通りではなく11通りです。
組み合わせ爆発は起きません。
2017/07/29(土) 15:05:20.10ID:JFgIXVoU
人間が仕事をするのだから
プログラムもそのモデルを模倣すればよい
Ningenクラスを作ろう
Ningenクラスを継承して
EigyoやKeiriクラスを作ればよい

ドヤ?
2017/07/29(土) 16:38:06.09ID:8lDGGI0L
>>831
組合せ爆発はどうあっても起こります。

重要なのは、テストするコストと価値を比べて
コストをかけてまでテストする価値はないという
コードにしてしまうことです。

テストしなくていい(する価値がない)コードが増えれば
テスト数の組合せ爆発を減らすことができます。
テストをしないためにはどうするかという話です。
2017/07/29(土) 16:40:53.77ID:8lDGGI0L
>>831
> の4通りで済みます。

それはホワイトボックステストであることが前提となっています。
なぜなら、チェックしている順番が1,2,3の順であることを
知っているからです。

チェックしている順番が1,2,3であるならば、
4通りで済みますが、ブラックボックステストであれば
どの順番でチェックしているかわからないので、
そのテストの個数では足りません。
2017/07/29(土) 16:53:18.88ID:Suk8TZUZ
>>834
check1, check2, check3が直交してたらの話だよ
ここにさらに直交するcheckが増えても、組み合わせ爆発は起こらないことの説明
2017/07/29(土) 17:04:43.91ID:8lDGGI0L
>>835
直行しているかどうかは
ブラックボックステストではわからない
2017/07/29(土) 17:12:08.75ID:Suk8TZUZ
>>836
要件が直交しているかどうかだよ。
・自分の注文しかキャンセルできない
・発送済みならキャンセルできない
これは直交した条件。

だから、ホワイトボックス・ブラックボックス関係なく、チェックの順番も関係なしに
・自分の発送されていない注文をキャンセルする
・自分の発送済みの注文をキャンセルする
・他人の注文をキャンセルする
というテストをすればいい。「他人の発想済みの注文をキャンセルする」テストは不要。

これが組み合わせ爆発が起こらない理由。
2017/07/29(土) 17:20:39.67ID:+ebLLQ0c
あほコーダーが別々で実装している場合もあるかもしれないよ
2017/07/29(土) 17:23:04.30ID:Suk8TZUZ
>>838
10個の条件があるときに、11個のテストでカバーできないようなコードを書くチームは、
もう何をしても無駄だと思うよ。
2017/07/29(土) 19:01:54.59ID:8lDGGI0L
>>837
> というテストをすればいい。「他人の発想済みの注文をキャンセルする」テストは不要。

残念ながらそうとは限らないんだよね・・・

if (自分の注文か?) {
  if (発送済みか?) {
    return キャンセル可能
  } else {
    return キャンセル不可能
  }
} else {
 if (発送済みか?) {
    return キャンセル不可能
 } else {
    return キャンセル可能 // バグ 本来はキャンセル不可能
 }
}

これは「他人の発送済みの注文をキャンセルする」場合にバグが有るコード
841デフォルトの名無しさん
垢版 |
2017/07/29(土) 19:20:58.86ID:mj0H/MXI
>>840
自分も同じツッコミをしようとしたんだけど、視点によっては>>837も正しいなと気づいた。
システムテスト視点だと>>837で良い。
単体テスト視点だと>>840だよね。
2017/07/29(土) 19:25:34.13ID:8lDGGI0L
単体テストとか言うよりも

「バグがないという前提において不要だと判断されたパターンはテストしなくて良い」
という考えは正しいかどうかって話だよな
843デフォルトの名無しさん
垢版 |
2017/07/29(土) 19:35:29.98ID:mj0H/MXI
テストに前提を於いたらいけないのは、その通りだよね。

ただ、システムレベルだと、禁則にあたる項目が多いのも事実で、そもそもテスト出来なかったりするじゃん?
その事を指して、テスト数爆発は無い、って言ってるのなら、まあわからなくもないかなと。
2017/07/29(土) 19:44:14.29ID:8lDGGI0L
テスト数は爆発するんだよ。どうあっても。残念ながらね。
それは認識しないといけない。

爆発してしまうテストを現実時間でどう扱うかというと
テストしないという選択肢を選ぶしか無ない

重要なのはそのテストしないという理由で
「バグがないという前提において不要だと判断されたパターンだから」は
バグを見つけるのが目的のテストとしては、テストしない理由としては適切ではない。

俺の理由は「テストする価値がないぐらい単純なものだから」
テストしなくてもバグがないのは明らかなものを作る
だからそういうものはテストしない
845
垢版 |
2017/07/29(土) 19:47:19.90ID:sarQXHNa
>>831
途中returnして何が積なんだよ。
そうじゃなくて、この権限ならばできる、をあとから足せる構造にせなばって言ってる。

ちなみに、普通はそれは2*2*2のテストをする。
何故ならば、どちらも、影響しないという担保を行うために。
たまにあるからね。ポインタや参照先が同じとこ向いてる不具合とか。

要はテストケースはその四通りでは足りない。
お前実務経験無いんじゃねえの?

こういう思考で間違ったオブジェクト指向を流行らせようとしてる奴こそが、本来のオブジェクト指向をディスってるような気がするわ。
846デフォルトの名無しさん
垢版 |
2017/07/29(土) 19:50:59.46ID:mj0H/MXI
テスト項目だけで考えたら、テスト爆発するのは間違いないよね。
横から入った自分にも、その点に異論反論は無いよ。

その上で、禁則を増やしてテスト爆発を小さく抑えるってのは有効だと思うけど、その点にも同意できないの?
2017/07/29(土) 19:52:02.17ID:8lDGGI0L
禁則を増やしてってなんだよw
その禁則をコードにする時にバグがでるんだろうが
848デフォルトの名無しさん
垢版 |
2017/07/29(土) 19:53:07.60ID:mj0H/MXI
違う違う。
禁則ってのは、テスト不可能な条件のこと。
2017/07/29(土) 19:56:58.62ID:8lDGGI0L
具体的にその条件とは?

もちろんテスト不可能な条件とやらがバグってる
可能性も忘れずに答えてくれ
850
垢版 |
2017/07/29(土) 20:09:17.42ID:sarQXHNa
>>842
明らかに正しくないと思うよ。
思い込んで、そう動く事を意図して作ったものを、そう動くだろう、とテストする事は滅茶苦茶簡単だけど、
そう動く事を確認するなんて、そう動く事を意図して作ってるんだから当たり前の話。

意図せざる動きをしないかどうか、渡せるパラメータ全部渡して確認するのがテストだよ。
851デフォルトの名無しさん
垢版 |
2017/07/29(土) 20:11:18.96ID:1wOX1qLb
>>849
じゃあ>>840の例でいいかな。

例えば、このシステムのUIが、web系のGUIだとしたら、システムレベルだとGUI部品分の要素しかテスト出来ないじゃん?
そうすると、他人の注文にアクセス出来るのか?ってなるよね?
要件としてアクセス可能ならもちろんテストしなければならないけど、アクセス不可能ならテストしようがないでしょ。
これが禁則。

この場合、アクセス出来ないことを真っ先にテストしておけば、他人に対するテストは全部端折れる。(というか、やりようがない)

って話なんだけど、おかしい?
852
垢版 |
2017/07/29(土) 20:11:28.57ID:sarQXHNa
>>848
テスト出来ない状態、であるというテストは要るだろ。
そういう意味ではテストケースは減らん。
853デフォルトの名無しさん
垢版 |
2017/07/29(土) 20:14:05.02ID:1wOX1qLb
>>852
もちろん。
でも、テスト項目を消化する作業を一気に減らせる、って意味。
854
垢版 |
2017/07/29(土) 20:15:19.38ID:sarQXHNa
>>851
おかしい。
挙げたように、ポインタや参照が被ってるみたいな挙動を見つけられない。
ある事をするとあることが出来なくなる、という状態を持つのであれば、さらに、状態と入力条件を全てテストするしかない。

>>853
減らない。
波及範囲の推定はその方法では不可能。
855デフォルトの名無しさん
垢版 |
2017/07/29(土) 20:15:39.71ID:1wOX1qLb
単体テストだと、禁則はほとんど無いので、爆発するよね。
856デフォルトの名無しさん
垢版 |
2017/07/29(土) 20:16:14.28ID:1wOX1qLb
>>854
えっ?
だって、テスト出来ないんだよ?
857
垢版 |
2017/07/29(土) 20:17:45.39ID:sarQXHNa
>>855
むしろ、単体レベルで爆発してるものを使うべきではない。
モジュール化できてない事の証左でしかない。
858
垢版 |
2017/07/29(土) 20:18:09.27ID:sarQXHNa
>>856
なら、最初からクラス分けろ。
859デフォルトの名無しさん
垢版 |
2017/07/29(土) 20:19:21.81ID:1wOX1qLb
>>858
いや、その話がすでに単体テストの話だよね?
話が噛み合ってない気がするんだけど。。。
860
垢版 |
2017/07/29(土) 20:20:53.20ID:sarQXHNa
>>859
いや、総合試験の話。
禁則とか言葉で誤魔化さんと、素直に、単なるルールの優先順位と気づけよ。
それはゴッドクラスでしかない。
861デフォルトの名無しさん
垢版 |
2017/07/29(土) 20:22:24.39ID:1wOX1qLb
>>860
だから、クラスとか関係ないんだってば。
最終的なシステムレベルでのテストの話なんだけど。。。
862
垢版 |
2017/07/29(土) 20:27:25.89ID:sarQXHNa
>>861
うーん、噛み合ってないな。
総合試験を作るとき、網羅度はどうやって出すの?
それが本当にやらなくても、そのメソッド呼ばれようがない、という判定は誰がどうやるの?
そして、呼ばれなかった、という悪魔の証明をどう担保したいの?
863デフォルトの名無しさん
垢版 |
2017/07/29(土) 20:40:03.01ID:1wOX1qLb
>>862
そうだよね。
ごめん、自分が間違ってたよ。
864
垢版 |
2017/07/29(土) 21:35:46.74ID:sarQXHNa
こんなレベルで総合試験どころか結合試験して提出した奴は出禁にするレベルの酷さ。
2017/07/29(土) 22:32:12.89ID:8lDGGI0L
なるほど、不具合がないことを保証するための試験ではなくて、
想定された使い方をしている限り動く
変な使い方をしなければ動く
ことを保証するテストなんだな。

想定外の操作をして問題が起きたら
それは間違った使い方をしたユーザーの責任
2017/07/30(日) 01:31:32.32ID:KXbv0POf
当たり前だろ
バカで低脳で使われるだけのユーザごときが偉そうにするな
ゴマスリしか能の無い、ちょっとコミュ力がSEより高いだけでプログラム1行も書けない下級生物は
大人しくしてろゴミ
867デフォルトの名無しさん
垢版 |
2017/07/30(日) 02:54:09.22ID:Vcbd8R0/
ひどいコミュ障の自演を見てるようだ
ID:sarQXHNa
ID:8lDGGI0L
はトラブルメーカー
言ってることは正しい
しかし、そんなことは当たり前すぎるので、更にその上の議論をしようとしている人間に対して、全く話を理解せず頭ごなしに罵倒
狭い世界でお山の大将気取ってるコーダータイプ
多分、自分は悪くない、頭の悪い周りが悪いと思いこんでいる
2017/07/30(日) 03:44:40.37ID:MHvXlxdG
>>867
んで、お前の意見は?
人に難癖だけ付けて終わんなよ
2017/07/30(日) 08:39:37.81ID:J6wXHp7u
>>865
そのシステムは扱いたくないなぁ
2017/07/30(日) 10:22:01.39ID:KXbv0POf
>>867こいつが一番コミュ障でFA
871
垢版 |
2017/07/30(日) 13:00:21.91ID:yy9Kp6PA
>>867
その上の議論を成り立たせるためには、その下の暗示されている条件を明示する必要がある。
そして事実、勘違いしてる奴が居た。
何かそれ以上あるの?
872
垢版 |
2017/07/30(日) 13:06:56.26ID:yy9Kp6PA
コミュ障と言うか、前提を明示して、その上で議論の土俵にさえ来れない奴に最低限しかコスト割いてないのは確かだが、
それに対して、俺のコミュニケーション能力の問題だと思うほうが問題だと思うが。
なぜ理解できないのか、とか思わないのかな。
2017/07/30(日) 13:19:16.26ID:MHvXlxdG
あ、自覚されてない方がいらっしゃいましたw
2017/07/30(日) 13:21:02.86ID:MHvXlxdG
解説

867 名前:デフォルトの名無しさん[] 投稿日:2017/07/30(日) 02:54:09.22 ID:Vcbd8R0/
ひどいコミュ障の自演を見てるようだ



870 名前:デフォルトの名無しさん[sage] 投稿日:2017/07/30(日) 10:22:01.39 ID:KXbv0POf [2/2]
>>867こいつが一番コミュ障でFA



872 名前:あ[sage] 投稿日:2017/07/30(日) 13:06:56.26 ID:yy9Kp6PA [2/2]
それに対して、"俺の" コミュニケーション能力の問題だと思うほうが問題だと思うが。



さて問題です。"俺の" が指す俺とはどれのことでしょう?
2017/07/30(日) 14:31:39.59ID:+SbgHtHH
なんだよそれ わけわかんねーこと言って煙に巻いてんじゃねーぞカス
876
垢版 |
2017/07/30(日) 14:34:19.09ID:ZJvEhfsD
>>873
>>874
何を言うとるかわからんが、870の指示代名詞が単数であることから、
>>867で挙げている二人ではなく、>>867自身を>>870は挙げていると捉えたが。

だから2レスにわけてんのに。
877
垢版 |
2017/07/30(日) 14:35:11.53ID:ZJvEhfsD
アホを支えるやつはアホなのかな。
2017/07/30(日) 14:43:35.67ID:gbfUAfb8
煽りたいだけのガキはマッマのオッパイでも吸ってろや
せめてコードで殴り合え
879
垢版 |
2017/07/30(日) 15:35:17.38ID:P5Qwr2jW
>>878
前からそれ疑問に思ってたんだけど、公式言語なんなの?
なんか、難癖に見せかけた、難癖つける為の前フリに見えるわ。
コードで殴り合えと言っても、多分理解及ばんだろ。コードのほうが。
2017/07/30(日) 15:39:55.58ID:MHvXlxdG
コードって意外と重くて硬いぞ
十分殴り合えるだろう。
881
垢版 |
2017/07/30(日) 15:56:42.37ID:P5Qwr2jW
>>880
いい感じに振り回すと先端は音速超えるしな。
10年ちょい前に論文読んだけどクソ真面目にやってて面白かった。
2017/07/30(日) 15:59:09.22ID:yjzfrjlP
あー、なるほどコードを振り回した時に
ヒュンヒュンなってるのはコードの速度が
音速を超えたために発生したソニックブームだったんだな
2017/07/30(日) 16:03:05.39ID:gbfUAfb8
>>879
Javaだよ
JavaがOOPerの実質公用語
Javaすら読めんゴミはそもそもOOPなんて語る資格も価値も無いから
無視してよい
884
垢版 |
2017/07/30(日) 16:03:53.31ID:P5Qwr2jW
>>882
そこまでは風切り音で、そっから手首を返したときに起こる破裂音だね。
牛追いムチを観測してソニックブームが起こってることを確認したって古い論文を出してきてものすごく真面目に検証、考察してた。
885
垢版 |
2017/07/30(日) 16:08:05.66ID:P5Qwr2jW
>>883
全然オブジェクト指向っぽいが、必ずしもオブジェクト指向ではないでしょ。
Objectから綺麗に出てきてない型も居れば、演算子も定義できず、プロパティも持てないし。
べき論はおいといて、ダイヤモンド継承も出来ない、実装を持つインターフェイスも書けない、ただJVMってスタックマシンで動く物を作るための言語じゃん。
2017/07/30(日) 22:44:39.88ID:9nHjp9K2
実装を持つインターフェイスはずいぶん前から書けるし
ダイヤモンド継承はそれが出来るからって自慢するもんじゃないだろう
2017/07/30(日) 23:16:41.73ID:gbfUAfb8
本物のオブジェクト指向見せたろか?
2017/07/30(日) 23:29:47.09ID:X0A6ZRSX
>>887
ぜひ
2017/07/30(日) 23:47:07.62ID:/ilXptvI
つ Smalltalk!
2017/07/30(日) 23:47:20.97ID:+SbgHtHH
>>887
見せて見ろ
カス
2017/07/31(月) 00:08:48.05ID:hPrOEueK
>>887
はよ!
2017/07/31(月) 00:09:12.67ID:+ZZTwtJO
>>887
師ね
2017/07/31(月) 01:48:46.33ID:RrKvfi6Q
ここにはない
2017/07/31(月) 08:23:13.73ID:petpUpvz
>>887
見せて!
895
垢版 |
2017/07/31(月) 12:12:33.00ID:/DHTAviI
>>886
べき論はおいとくって言ってんのに何言ってんだよ。
まぁ、出来ると便利よ。
2017/07/31(月) 13:04:11.69ID:L1o8DOnz
>>895
デフォルトメソッドで菱形継承はできるだろ
現状でJavaの最大の問題のひとつは高階ジェネリックが無い(型クラス相当が実現できない)ことだよ
2017/07/31(月) 17:52:08.83ID:k2YlNqjB
>>885
> 全然オブジェクト指向っぽいが、必ずしもオブジェクト指向ではないでしょ。

こういうのがわけわからんって言われてるんだ
2017/07/31(月) 17:53:32.27ID:k2YlNqjB
>>885
> Objectから綺麗に出てきてない型も居れば、演算子も定義できず、プロパティも持てないし。
> べき論はおいといて、ダイヤモンド継承も出来ない、実装を持つインターフェイスも書けない、ただJVMってスタックマシンで動く物を作るための言語じゃん。

このスレで語られるレベルのことは、Javaで表現できるだろ
899
垢版 |
2017/07/31(月) 18:16:30.26ID:/DHTAviI
>>896
デフォルトメソッド同時喧嘩するじゃん?再定義してやらないとならん。
呼ぶ方が決めたいとか思う。

形クラスが無いのと、あと、インライン展開無いのは痛いと思う。
今はあんのかな?
900
垢版 |
2017/07/31(月) 18:18:08.72ID:/DHTAviI
>>897
>>898

だから何なんだ。
片手落ちで、このスレで語られてるレベルの事はと後付されても。
未来永劫このスレではjavaの限界超えないみたいじゃん。

訳わかってないのはお前の理解力足らんだけだろ。普通にレス返せてる奴が居てどの口が言ってんの?
2017/07/31(月) 19:11:17.23ID:9Hgupd7z
ああもう最悪な
これは・・・
全然関係ないことで300レス消費した理由がはっきりしたわ
2017/07/31(月) 19:24:23.04ID:W4UbSJlH
あ ってずっと暴れてるけど暇なの?
2017/07/31(月) 19:41:19.22ID:L1o8DOnz
>>899
「Javaにデフォルトメソッドがあるなんて今まで知りませんでした無知な発言>>885を許してください」でおk
904
垢版 |
2017/07/31(月) 23:03:41.25ID:p1siwd2s
>>903
知っとるよ。しつこいな。

>>902
暇なときは暇よ。
2017/07/31(月) 23:22:37.88ID:khcSadY1
実装を持つインターフェイスも書けない
実装を持つインターフェイスも書けない
実装を持つインターフェイスも書けない
実装を持つインターフェイスも書けない
実装を持つインターフェイスも書けない
実装を持つインターフェイスも書けない
実装を持つインターフェイスも書けない
実装を持つインターフェイスも書けない
実装を持つインターフェイスも書けない 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
2017/07/31(月) 23:59:59.08ID:iPdlauJl
>>879
一応ここはプログラミング板なんだけどな
だからこそ>>887には期待してる
2017/08/01(火) 00:03:40.43ID:zRlG3ihR
う〜ん、なら

(obj1, obj2, obj3) . method ( obj4, obj5, obj6 );

どうだ!
2017/08/01(火) 00:11:26.04ID:EEmbGQa7
>>907
それの意味は?
2017/08/01(火) 00:13:55.39ID:zRlG3ihR
レシーバをobj1,obj2,obj3として
引数obj4,obj5,obj6で
methodを呼び出す
2017/08/01(火) 00:24:18.66ID:up/JWAZ5
>>909
すまん
それはどんな動きをするんだい?と聞いたつもりだった

俺の知識不足で申し訳ないんだがその書き方は見たこと無い
2017/08/01(火) 00:33:52.37ID:zRlG3ihR
関数の引数は複数とる場合も当然あり得るんだから
そのうちの一つの引数だけを特別扱いしてレシーバーとするのは
理屈の上では不自然なのでは?と考えただけ

http://nyamtech.blogspot.jp/2012/06/clojure_29.html
https://japan-clojurians.github.io/clojure-site-ja/reference/multimethods
2017/08/01(火) 00:42:33.76ID:Lo+24Uvw
使いづらい上に可読性最悪
メンテ性ゴミ
ブレファ並のギャグ
2017/08/01(火) 00:46:42.92ID:up/JWAZ5
>>911
期待外れ
帰っていいよ
2017/08/01(火) 01:04:02.59ID:zRlG3ihR
まぁでも、これがそもそもの起点となってる部分もあるから
これはシングルディスパッチのOOPが悪いとかそういうことではなくね
OO以前はもっぱら関数を中心軸にして考えていたのを
第一引数を中心軸にして考えるとどうなるかっていう
そのときの適切な設計とその手法はどうなのか
ってことだから

ただしあまり深入りしたくないのは、第一引数を中心に考えるってのが
割と経験則みたいなところがあって、必ずしもいつも適切かどうかは分からん
だからOOP万能ってことにはならないし、やはり銀の弾などないってありきたりな結論なわけだが

その意味で「本物のオブジェクト指向」ってのはかなり笑える表現だと思う
「本物のオブジェクト指向」とやらがあったとして、それが使いやすいかどうかは別問題っていう
まぁそういうことが言いたいのではないかね>>887
それか全く何も考えてないか
OO原理主義みたいな人が書いたプログラムは読みにくいって相場は決まってるしな
ちなみに俺は>>887ではないよ
2017/08/01(火) 01:12:14.49ID:zRlG3ihR
逆にマルチメソッド主義で行くんなら
複数ある関数の引数はどれも同じ重みで扱われることになるから
むしろOO以前の考え方に先祖返りすることになる
第一引数だけを特別扱いしてそれを軸足にして考える
ってのがOOの独特の世界観なわけで、全部の引数を等しく扱うなら・・・

第一引数だけを特別扱いしたときに経験的に上手くいくことが多いけど
そのやり方がどの範囲まで通用するかの実験みたいなもんだと思っとけば良いんじゃね?
無理やりにでもそうするやつと、初めから割り切ってるやつと、2パターン居るよね
2017/08/01(火) 01:45:23.53ID:up/JWAZ5
>>914
え?ちがうの?
じゃあまだ>>887への期待は捨てなくていいの?

でもお前はもういらない
姿慎めよ
2017/08/01(火) 07:23:01.97ID:q7SQowVl
Smalltalk発のメッセージングのオブジェクト指向が「本物」とか言ってる時点でオブジェクト指向の理解にかなり問題がある

アラン・ケイのメッセージングのオブジェクト指向は、設計・実装・実行・運用・保守とあらゆる局面における
「遅延結合」(…という表現だと実行時のみにひっぱられる人がいるので「決定の遅延」の方がベターか)を
メッセージングというお題目を通じて実践・徹底・サポートするアイデア
http://d.hatena.ne.jp/katzchang/20080807/p2
http://metatoys.org/oxymoron/oxymoron.html

いろいろやり残した事はあるけど、ケイも興味を失っているし、このアイデアを試す実験自体、彼がSqueakを離れた時点で終了している

一方でC++発の抽象データ型のオブジェクト指向は、例えば型推論や型クラスといった関数型のコミュニティ発の優れたアイデアを
取り入れた賢い型システムを構築してどんどん進化していて、「本物」を語るならむしろこっちをちゃんと勉強して突き詰めた方がいい


長くなったけど伝えたいことは一つだけ。

“「本物」のオブジェクト指向を知りたいなら、「メッセージ」のことはもう忘れろ”
2017/08/01(火) 14:38:47.37ID:LECQ7oI6
あってほんとに自分の日本語がおかしくないって思ってるのかな
919
垢版 |
2017/08/01(火) 20:37:27.59ID:ps+Dq31M
>>905
あ、うん、それは書いたな。ごめん。

>>917
本物じゃなくて良いとは思うけど、何より型って話をしだすと長い割に、最終的には扱う側の問題だなって思うよ。
いわゆる「Javaで言うオブジェクト指向」とかその辺に行き過ぎるのも微妙かと。
定義したあと変化する変数なんか要らなかったんだ、すべての源は原始再帰関数だみたいな話とか、Forthみたいな、手続きとスタックがあればそれで良かったんだみたいな話も、今更見直されてるし。

>>918
自覚としては薄い。
2017/08/01(火) 21:35:09.94ID:q7SQowVl
>>919
あ、うんって、お前、記憶ガイジなん?
2017/08/01(火) 21:48:10.35ID:q7SQowVl
> 手続きとスタックがあればそれで良かったんだみたいな

さながらチューリングの泥沼にはまって身動きとれなくなったロートルだな
922
垢版 |
2017/08/02(水) 08:35:23.02ID:xl010nKq
>>920
同じこと何回も繰り返すやつ程度には。

>>921
機械がチューリングマシンで動いてる限り仕方ないよ。
今更オペアンプみたいなアナログコンピュータやら、メカニカルな物理計算機使うわけにもいかん。
乱数コプロとかDSPを数珠つなぎにするならそれも良いと思うし、全部マイクロカーネルに乗せてそいつらには目をつぶってシステムはそのイベントシステムで組むのなら、関数型とかアクターモデルを真に名乗っていいと思うけど。
2017/08/02(水) 10:06:16.17ID:QboL4ysj
> 機械がチューリングマシンで動いてる限り仕方ない

そんな機械がこの世のいったいどこにあるんかね
もしかしてチューリングマシン自体がオブジェクト指向とおなじ程度に抽象化産物ってことわかっとらん人?
さもなくば定式化されてないアイデアはこの世に存在しないも同然とか考えてる数理科学系気取ったバカ?
2017/08/02(水) 10:07:00.25ID:tPIF94Ld
>>923
やっぱり日本語不自由だから理解できてないんだな、文脈
2017/08/02(水) 19:10:48.23ID:JD5jVN3c
過去ログを追ってて思ったんですが、もしかしてこのスレってオブジェクト指向設計の話題はNGですか?
2017/08/02(水) 20:00:50.33ID:BkFBLKJo
>>925
宗教戦争みたいなものだよ
で、ここはその戦場だからガンガン話題出して下さいな
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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