X



オブジェクト指向ってクソかよPart5
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2019/10/08(火) 15:46:57.38ID:YglSDU9b
無理やりオブジェクト指向にしたから出てきた問題を解決して凄い凄い言ってるだけ。
単なるマッチポンプ。


カプセル化(英語:encapsulation)とは、オブジェクト指向を構成する概念の一つで、
オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、
オブジェクトの実際の型を隠蔽したりすることをいう。

偏差値の低い学校向けの情報処理系教科書において「大変すばらしいものであり絶対に使うように」と大体的に宣伝された。

一方、カリフォルニア大学バークレー校の有識者を中心としたインターネットを作った人たちは「階層化の有害性」として
「絶対に使うな」としている。大雑把にいうと、その時は良くても、将来的な改修の際に隠蔽されたデータに
アクセスできないと解決できない問題が出てきて、結果的にデスマーチに陥るというのである。

オブジェクト指向の発案者であるアラン・ケイもコーディング規約(頭文字にアンダースコアを付けるなどの命名規則)で
縛る程度にすることを推奨しており、アラン・ケイが関わったオブジェクト指向プログラミング言語にはどれも「private」
という概念はない。

https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96

前前前前スレ
オブジェクト指向ってクソじゃね?
https://mevius.5ch.net/test/read.cgi/tech/1535085129/
前前前スレ
オブジェクト指向ってクソじゃねぇよ? Part2
https://mevius.5ch.net/test/read.cgi/tech/1539872441/
前前スレ
オブジェクト指向ってクソじゃねぇかよPart3
https://mevius.5ch.net/test/read.cgi/tech/1542884872/
前スレ
オブジェクト指向ってクソじゃねぇかよPart4
https://mevius.5ch.net/test/read.cgi/tech/1556462315/
0256デフォルトの名無しさん
垢版 |
2019/10/13(日) 15:54:57.84ID:bBavR94N
>>254
オブジェクト指向の教育をしてるから、
殆どのフレームワークの設計を理解できるよw

ほぼすべてのフレームワークはオブジェクト指向だからね。
0257デフォルトの名無しさん
垢版 |
2019/10/13(日) 15:55:00.68ID:OAJhlsQO
お前もお前もお前も全員
オブジェクト指向について素人臭くって見てらんない

唯一俺だけが理解してるし
俺以外のはオブジェクト指向じゃないからね

いいね
0258デフォルトの名無しさん
垢版 |
2019/10/13(日) 15:56:02.21ID:3vnN9KRU
嘘だろ、w
少なくともお前は理解している気になっている新興宗教宣教師のスパゲティー製造機だろw
白状しろw
0262デフォルトの名無しさん
垢版 |
2019/10/13(日) 15:58:32.53ID:bBavR94N
少なくともオブジェクト指向が世の中の多くを締めてるんだから
それを教えないのは愚の骨頂だよね。
オブジェクト指向を知らなければ、オブジェクト指向を批判することも出来ない。
(デファクトスタンダードの)オブジェクト指向がわかりませんっていう人間が出来てしまう。
0263デフォルトの名無しさん
垢版 |
2019/10/13(日) 15:58:49.16ID:0tGtu6dL
なんか、加速やべえ。
オブジェクト指向がクソだと思う人は使わない。
オブジェクト指向にメリットが見いだせる人は使う。

もう、それでいいと思うよ。
0266デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:00:51.46ID:3vnN9KRU
>>262
使っているよ。
役に立つところにところではね。害のあるところでは使わない。
Java案件は使わざるを得ないかな注意して使うけど、周りかだどんどん汚いものが入ってくる
0267デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:01:48.07ID:bBavR94N
>>264
なんで俺にオブジェクト指向を無視してよかった事例を聞くの?
オブジェクト指向を批判する人は、オブジェクト指向を理解してないとダメだが、
オブジェクト指向を理解したからと言って、オブジェクト指向を批判する必要はないしw
0268デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:03:48.79ID:3vnN9KRU
>>265
中で使っているんだよ。それをアプリレイヤでは演算子で使う。
なのでOOP的な書き方とは一線を画している
0269デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:05:12.80ID:bBavR94N
>>268
急に「NumPyはオブジェクト指向を中で使われてる。」と
オブジェクト指向は使われてることをアピールしてどうしたの?w
0271デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:08:35.81ID:bBavR94N
>>270
でもNumPyの内部に踏み込むと
オブジェクト指向なんでしょう?w

オブジェクト指向教えないと、使えない人間になっちゃうよ?
0272デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:08:42.31ID:BlSgSv0G
>>268
突っ込みどころ
1.それってオブジェクト指向をクソだと言えないのでは?
2.むしろアプリ層ほど、オブジェクト指向って重要だと思うのですが(フレームワーク的に)。

2.は何の開発をしているのかにもよるだろうけど。
0273デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:10:27.29ID:bBavR94N
「NumPy グラフ描画ライブラリ」でググると
一番目に出てくるのがmatplotlib

https://ja.wikipedia.org/wiki/Matplotlib
> Matplotlibは、プログラミング言語Pythonおよびその科学計算用ライブラリ
> NumPyのためのグラフ描画ライブラリである。
> オブジェクト指向のAPIを提供しており、様々な種類のグラフを描画する能力を持つ。

なので、どちらにしろオブジェクト指向は必須なんだわ
オブジェクト指向が嫌いなら嫌いでいいが、オブジェクト指向を教えないのは愚の骨頂
0274デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:11:29.29ID:3vnN9KRU
>>272

ここに書いているだろ。
>>266
> >>262
> 使っているよ。
> 役に立つところにところではね。害のあるところでは使わない。
> Java案件は使わざるを得ないかな注意して使うけど、周りかだどんどん汚いものが入ってくる

その上で問題があり害のある使われ方がしていると
いっているんだが。

前スレではどういう場合に使うか書いたんだけれど、また長々書くのは嫌だわ
0275デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:13:43.92ID:bBavR94N
なんで言語の問題じゃなくて、

「俺の周りの人間がクズなんだ」って話にすり替えるんだろうかw
類は友を呼ぶって言葉知ってる?
周りがクズなら、お前もクズだっていってるようなもんなんだよ。
0276デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:17:23.02ID:3vnN9KRU
>>273
matplotlibが必要があってOOPSにしたか、あるいはなんでも良かったのかは不明だから
使っているから、必要があると決め付ける。
こういうのをミスリーディングという。

>> 219 でも気になったけど

誰も言っていないのに

>例えて言うのなら
>お前「エアバッグは自動車事故を完璧に防ぐものだ」
>お前「でもエアバッグでは自動車事故は完璧に防げない」
>お前「だからエアバッグはだめなんだ」
>このセリフを一人で言ってるだけ。

と妄想して決め付ける、揚げ足取りのをミスリーディングが多くて
まじめに議論する相手としてふさわしくないな
0277デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:19:04.99ID:bBavR94N
>>276
> 使っているから、必要があると決め付ける。

使ってるんだから、matplotlib使うコード書くときは必要じゃん?
オブジェクト指向が必要なフレームワークをたくさん上げればいいの?
NumPyだけで仕事できるわけじゃあるまいし
あんたが、何を言いたいのかわからん。
0278デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:19:43.66ID:3vnN9KRU
>>275
また決め付けた

>「俺の周りの人間がクズなんだ」って話にすり替えるんだろうかw
>類は友を呼ぶって言葉知ってる?
>周りがクズなら、お前もクズだっていってるようなもんなんだよ。

オレがそんなこと書いてないのに、答える必要はなさそうだな

どうもお前さんとは話がかみ合わないな
0279デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:20:26.39ID:bBavR94N
>>276
あと、日本語が理解できてないよ。

誰も言ってないって、
「俺が例えとしてだした」んだから
誰も言ってないので当たり前じゃん。

なんで俺が言った(例えによる)説明を
他の人が言ってるはずだ。って思っちゃったのさ?w
0281デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:21:19.61ID:bBavR94N
>>278
> オレがそんなこと書いてないのに
↓書いてるじゃんw

> 周りかだどんどん汚いものが入ってくる
0283デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:22:19.20ID:bBavR94N
>>280
> matplotlib は必要があってOOPS IFを採用したかは不明だと書いているんだよ

え?なに?その理屈でいいなら、
NumPyは必要があってOOPSを採用してないかは不明だといえばいいの?w
0286デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:22:54.71ID:bBavR94N
>>282
人が言ったことだと思ったのは
お前のミスであって、

俺は最初から、自分の意見しか言ってない
0292デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:27:07.80ID:3vnN9KRU
>>291
上のほうにも書いたんだがな。なんでそんな初歩的なことをなども聞くか。
教えてクンにもほどがある。だからオレオレオブジェクト指向論者はいちゃなんだ

クラスまたはインスタンスに、メソッドがスコープ付けられていること
これは
うまく使えばメリットがあるはずの
新しいことだったんだよ。
0295デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:33:32.62ID:bBavR94N
>>292
正々堂々と間違いを語られても(苦笑)

さっき俺がオブジェクト指向は関数を組み合わせる時の
(複雑性の)問題を解決するものだって言ったよね?

お前「メリットは、クラスまたはインスタンスに、メソッドがスコープ付けられていること」
お前「だがクラスまたはインスタンスに、メソッドがスコープ付けられていることに、メリットはない」

自分で間違ったことを言って、
自分の意見を否定してるwwww
0297デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:36:58.24ID:bBavR94N
>>296
お前「メリットは、クラスまたはインスタンスに、メソッドがスコープ付けられていること
これは事実である。」

と言ったってこと?
0299デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:37:42.42ID:3vnN9KRU
>>291興味本位へお答えしますが
>>292 で「うまく使えばメリットがある『はず』」って書いてあるでしょ。
そうじゃねぇ場合も出てきたってことなのよ。
0300デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:37:48.21ID:0tGtu6dL
>>292
スコープなんてやけに言語仕様に依存しそうな話が出てきましたね。

ためしに聞きますけど、ポリモーフィズムってご存じですか?先程、然り気無くポリモーフィズムの例を書いたのですが、何が言いたいのかわからんと仰ってましたよね?
0302デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:38:45.02ID:bBavR94N
>>299
そうじゃねぇ"場合"も出てきた = そう(メリット)がある場合ももちろんある

こういう主張ってことでいいですか?
0305デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:41:28.60ID:V3xYaAid
本当のオブジェクト指向がどうたらいうの鬱陶しい
そんなもん共通見解も定義もありゃしない
0306デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:42:25.03ID:3vnN9KRU
>>300
多態はなにやっているんだかぱっと見てわからなくなるから
上のほうでも書いたけど min max abs くらいにして
なるべく使わないほうが良いというのが最近の定説だと思うけど、

あの例は

の部分で内やってんだか分からんけど
共通関数かしたいのかな?くらいしかよみとれなかったがそれがなにか
0308デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:43:03.09ID:bBavR94N
> 多態はなにやっているんだかぱっと見てわからなくなるから

お前の能力不足の話?
それともお前の周りが書いたコードの話?
0309デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:43:48.86ID:5y3mzviq
>>202
>たとえば委譲した動的階層化データ構造の中の、ある局面で一見みえないメンバがどこか遠くで 定義され参照され更新され、、、

こういった状況に陥らないようにするのがカプセル化
0311デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:44:24.79ID:bBavR94N
多態は使わないほうが良いというのが定説
というのはどこで語られてるの?

いや、マジでないでしょ?w
あるなら言ってみてよwww
(個人ブログは定説とは言いません)
0316デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:50:15.97ID:3vnN9KRU
>>312

>> 171


>(3)ポリモーフィズムが可能
>Storage s = new Usb();
>...
>s = new SDCard();
>
>SDカード・USBの違いを区別することなくアクセス可能。
>s.read(ファイル);

これのどこがポリモーフィズムのせつめいなの?
「違いを区別することなくアクセス可能」とかかれりゃ
同じ名前のmethodがあるのかな?
newして使いまわしてなにやりたいんだかわからん
くらいしか思い付かないぜ
だからながしたんだが
0319デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:56:00.75ID:3jcvRrfy
オブジェクト指向って大まかにでも一言で説明できないような難解なものなの?
0321デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:57:05.14ID:bBavR94N
>>316
オブジェクト指向を勉強したほうが良くないか?w

ポリモーフィズムでその例を見せられたら、
ああ、SDCard型でもUSB(メモリ)型でも
どちらでも同じように扱える例だなって気づくでしょ?

それに気づいた上で、何かしらの意見を言うならわかるけど、
それに気づかないレベルって、単にオブジェクト指向を知らないだけだよ。
0322デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:57:33.59ID:V3xYaAid
多態のデメリット

・メソッド呼び出し部分見てもどれが呼び出されてるのかわからない。
呼び出し先の処理は実際に実行するまでどれになるか不明。

・マシン語に展開したとき、処理が安全だといいづらい
必要もないのに処理の分岐先がデータと一緒に送られてきて危なっかしい。

動的に処理が決定されるというのは静的言語のメリットを殺してる面がある。
必要もなくすべてのメソッドが多態可能とか悪夢
0323デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:58:14.65ID:0tGtu6dL
>>150 で思いっきり社員のことを批判されてましたが、正直、あなたの実力が凄く怪しいです。

>>319
このスレ、オブジェクト指向を学ぶ人にとって毒でしかないので、Qiitaとかで検索することをオススメします。
0324デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:58:26.86ID:bBavR94N
>>320
お前が今言った「ファクトリー」はどういうものか言ってみ。

質問の意図は、お前が自身がお前の言った言葉を
理解してるかを確認するためね。
0326デフォルトの名無しさん
垢版 |
2019/10/13(日) 16:59:55.59ID:bBavR94N
>>322
> ・メソッド呼び出し部分見てもどれが呼び出されてるのかわからない。
> 呼び出し先の処理は実際に実行するまでどれになるか不明。

実行するまで決まらないもの(例えばユーザーの設定によって決まるもの)を
実行する前にわかることってあると思うの?
0328デフォルトの名無しさん
垢版 |
2019/10/13(日) 17:00:55.65ID:bBavR94N
>>325
なんのために「お前が今言った」って書いたと思ってんのさw
ググって見つかる「ファクトリー」と
お前が言った「ファクトリー」は違うとしか思えないから、

「お前定義のファクトリー」を聞いたんだが。
お前定義のファクトリーはお前にしかわからん。

んで、お前定義のファクトリーはどういうものさ?
0330デフォルトの名無しさん
垢版 |
2019/10/13(日) 17:04:10.97ID:V3xYaAid
>>326
IF文で分岐すれば少なくともその部分の処理は特定できる
多態したら実際の呼び出し先がライブラリ中に無数にある継承クラスのどれになるか
全部データから辿って判断しなきゃいけなくなるだろ
悪夢だ
0331デフォルトの名無しさん
垢版 |
2019/10/13(日) 17:04:31.39ID:3vnN9KRU
インスタンスの生成と処理を別のクラスで行うパターンのファクトリーとして書いたが。
0332デフォルトの名無しさん
垢版 |
2019/10/13(日) 17:05:22.52ID:bBavR94N
> IF文で分岐すれば少なくともその部分の処理は特定できる
それだと、コードの中に全ての対応するモジュール名が記述されることになる。
それだと、外部プロジェクトで拡張するプラグインの仕組みが作れない
0333デフォルトの名無しさん
垢版 |
2019/10/13(日) 17:06:48.22ID:bBavR94N
>>331
このコードを見てそう思った?

インスタンスの生成はどのクラスで、
処理はどのクラスだと思った?

コードちゃんと読んでる?
0334デフォルトの名無しさん
垢版 |
2019/10/13(日) 17:06:53.28ID:5y3mzviq
>>322
ポリモーフィズムには動的なものだけじゃなく静的なものもあるよ
それはトレードオフの判断であって動的だから悪いってことではない
0336デフォルトの名無しさん
垢版 |
2019/10/13(日) 17:07:25.90ID:OAJhlsQO
そんな実装に密接した話してんのもなんか胡散臭ぇ
オブジェクト指向設計ではないのか?
0337デフォルトの名無しさん
垢版 |
2019/10/13(日) 17:08:43.44ID:3vnN9KRU
>>333
それが隠されているように見えた。
両方Strage方を帰しているので
Superクラスが前後に略されているのかなとかチラッと考えた
0338デフォルトの名無しさん
垢版 |
2019/10/13(日) 17:09:30.25ID:bBavR94N
もっと具体的に質問しようか?
以下のコード、
>(3)ポリモーフィズムが可能
>Storage s = new Usb();
>...
>s = new SDCard();
>
>SDカード・USBの違いを区別することなくアクセス可能。
>s.read(ファイル);

登場人物は、StrageとUsbとSDCardしかいない。

質問1 インスタンスの生成を行ったのは、StrageとUsbとSDCard のうち
どれだと思ったのですか?

質問2 処理を行ったのは、StrageとUsbとSDCard のうち
どれだと思ったのですか?


それそれ、3択の中から1つを選ぶだけの簡単な質問だよ。
(それ以外の答えがあるというなら、それで答えてもいいけど)
0339デフォルトの名無しさん
垢版 |
2019/10/13(日) 17:10:34.32ID:bBavR94N
>>335
> だからって何もかも多態可能にする必要ないだろ!

誰が何もかも多態可能にするって言ったんだ?
0340デフォルトの名無しさん
垢版 |
2019/10/13(日) 17:11:01.87ID:OAJhlsQO
設計の話してるときコードを出さないと話ができない人は
オブジェクト指向云々かんぬん以前にレベルが低いよ

そこはガチで低いはずなので素直に忠告を聞いてほしいと思う
0341デフォルトの名無しさん
垢版 |
2019/10/13(日) 17:11:41.50ID:bBavR94N
>>337
> Superクラスが前後に略されているのかなとかチラッと考えた

あなたが想像した「省略されてるSuperクラス」とはどのようなものですか?

”あなたが想像した"ものを聞いてるので
これもググっても出ません。
0344デフォルトの名無しさん
垢版 |
2019/10/13(日) 17:14:22.39ID:bBavR94N
>>340
ちゃんと理解してる人は、コードを出すことも出来る。

今は、ちゃんと理解してる人(俺なw)と
ちゃんと理解してない人の会話

ちゃんと理解してない人は「コードを出さないと話ができないレベルが低い人」なのだから
コードを要求することで、それがはっきりするわけよ。

俺がコードを出して話をしてるんじゃなくて、相手が理解してるかどうかを図るために
「せめてコードぐらいは出せるよな?w」という考えで要求してるの
0345デフォルトの名無しさん
垢版 |
2019/10/13(日) 17:15:40.27ID:bBavR94N
>>343
ファクトリーは「あるクラス」を使って「別のクラス」を生成するということは知ってますか?
0346デフォルトの名無しさん
垢版 |
2019/10/13(日) 17:15:48.94ID:0tGtu6dL
なんというか、もう、色々お察しがついてしまいました。
オブジェクト指向を否定的に捉える前にオブジェクト指向のお勉強をされることをおすすめします。

特に、Java、C#、Python、js等はオブジェクト指向のパラダイムを思いっきり取り込んでいるので、開発を楽するためにも、勉強をされることをお勧めします。
0348デフォルトの名無しさん
垢版 |
2019/10/13(日) 17:17:12.09ID:OAJhlsQO
>>344
ちゃんこちゃんこうるせぇな
設計の話してるときにコード持ってくるアホなんて
まともな会社なら相手にしねぇよ
0349デフォルトの名無しさん
垢版 |
2019/10/13(日) 17:17:44.97ID:bBavR94N
>>347
質問に答えてよw

まあ想像できるから、さっさと追い詰めるけどw

>Storage s = new Usb();
>...
>s = new SDCard();

このコードはどう見ても、Usbクラス(お前がファクトリークラスだと思ってるもの)から
SDCardクラスを生成してません
0350デフォルトの名無しさん
垢版 |
2019/10/13(日) 17:18:52.85ID:OAJhlsQO
>>346
直訳すると

テメーは気に入らないからオブジェクト指向が理解できていない(認定)

ということでよろしいですか?
0351デフォルトの名無しさん
垢版 |
2019/10/13(日) 17:19:19.41ID:3vnN9KRU
>>346
で、>>343 は違うの?
サンプルコードの前後が省かれていてよく分からんのに
いきなりポリモーフィズムとか言われて流したらなにがまずいの
0352デフォルトの名無しさん
垢版 |
2019/10/13(日) 17:22:13.85ID:3vnN9KRU
>>349
これ見て両方Storage返して
…のかなでUsb();の処理は終わって、
sをSDCard();で使いまわして
s.read(ファイル名)していると思ったが
0353デフォルトの名無しさん
垢版 |
2019/10/13(日) 17:22:24.95ID:bBavR94N
>>351
何がまずいって、ポリもーフィーズムとわかるのに十分なコードなのに
それがわからずにファクトリーを思い浮かべてしまったお前の頭がまずいw
どう見てもファクトリーのコードではないのに、なんでファクトリーだと思ったのか?
■ このスレッドは過去ログ倉庫に格納されています

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