探検


オブジェクト指向はオワコン? part2

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2026/08/13(木) 14:38:03.02ID:pdAcKRXu
前スレ
オブジェクト指向はオワコン?
https://mevius.5ch.io/test/read.cgi/tech/1721393540/
2026/08/15(土) 11:13:24.09ID:Yv1XFEHU
言っちゃうとさ、抽象型そんなに大事?
2026/08/15(土) 11:18:15.56ID:Yv1XFEHU
実は大して大事じゃないよね、便宜上そういう概念を基にすることもできるということ
クラスとは違う、そうだ。クラスは色々まずかった
まずかったことと<それほど大事でもないもの、それぞれを元に牽きまわしてとか
そういう狭い考え方省みてはってのは俺の意図なんだけれど
それを理解できないで頭に血が昇っちゃったみたいだね
76デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:19:26.24ID:TQSPkWiN
>>72
>>67の失礼な発言をお前は俺に謝罪するべきだと思う
2026/08/15(土) 11:21:05.63ID:Yv1XFEHU
何でソフトウエア作るときにいちいち抽象型みたいなものいちいち設けて継承したりして書く必要があるのよ
2026/08/15(土) 11:22:53.41ID:Yv1XFEHU
>>76
それのどこが失礼か客観的に説明出来たらな。
単にお前が頭に血が上て癇に障っただけのことならそれはお前の性格の問題で俺には関係ない
79デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:23:37.06ID:TQSPkWiN
>>77
そんな事する必要があるとは誰も言ってないから
それはただの藁人形論法じゃんか
2026/08/15(土) 11:23:59.01ID:Yv1XFEHU
型とか階層間を引き回すのやめなよ
2026/08/15(土) 11:25:05.50ID:Yv1XFEHU
>>79
それが好きなことに口挟まれると気に入らないらしい
変な人もいるもんだ
82デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:25:50.03ID:TQSPkWiN
>>78
関係ないで済むわけないじゃんか
>>65の俺の発言が>>64に対する返信だと思ってそんな話じゃないと
俺に言ってきたんだから、君がいうべきなのは間違いましたすみません
ということだよ
83デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:27:01.22ID:TQSPkWiN
>>81
ちょっと何言ってんのかわからない
いまのところの俺の中で変な人は君だけだ
2026/08/15(土) 11:27:18.09ID:Yv1XFEHU
あんたなんか障害あるんじゃない?
85デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:28:12.39ID:TQSPkWiN
>>84
それはそっくりそのままお返しするよ
2026/08/15(土) 11:28:17.21ID:Yv1XFEHU
>>82
あんたの性格に俺がどう関係あるのよw
87デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:28:45.25ID:TQSPkWiN
まず謝れよ!!!
2026/08/15(土) 11:28:54.59ID:Yv1XFEHU
>>85
お前に言ったんじゃないのに反すなよw
2026/08/15(土) 11:29:28.68ID:Yv1XFEHU
>>87
お前さんを相手にして時間を無駄にしてすみませんでした
90デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:30:24.58ID:TQSPkWiN
>>86
俺の性格の話をしてるんじゃない
お前が間違って俺に迷惑を書けたことについて非礼を詫びろと言っている
いいかげんにしろよ、ネットのやり取りだからといってごまかして逃げられると思うなよ
2026/08/15(土) 11:30:35.59ID:Yv1XFEHU
>>87
お前さんの性格の問題点を引き出すような書き込みをしてすみませんでした
92デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:30:41.75ID:TQSPkWiN
>>89
謝罪になってないやり直せ
93デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:31:31.49ID:TQSPkWiN
>>88
そういうのは通用しないよ、アンカーつけてなくても文脈で判断できるから
裁判所舐めない方が良いよ
2026/08/15(土) 11:31:47.90ID:Yv1XFEHU
>>90
俺が関係ないと書いたのはお前に正確についてだぞw
それに名何お迷惑だよ示してみろ
朝腹が立って気分が悪くなったレベルならざまーみろざ
95デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:31:55.28ID:TQSPkWiN
おい!!謝罪は!!!
2026/08/15(土) 11:32:21.68ID:Yv1XFEHU
>>93
裁判所がどうしたの
2026/08/15(土) 11:32:50.37ID:Yv1XFEHU
>>95
謝罪っ謝罪って韓国人かよw
98デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:33:24.49ID:TQSPkWiN
謝れない人っているよねえ
99デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:34:05.36ID:TQSPkWiN
クソジャップは謝罪もできない劣等民族
2026/08/15(土) 11:34:09.65ID:Yv1XFEHU
必要がないからな
そそそも謝罪ポイントがない
腹が立ったのは分かったw
101デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:34:21.46ID:TQSPkWiN
テポドン落としたってもええねんど
2026/08/15(土) 11:34:31.15ID:Yv1XFEHU
>>99
日本語上手くなったね
2026/08/15(土) 11:34:52.85ID:Yv1XFEHU
>>101
裁判所に言ってこい
104デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:35:31.16ID:TQSPkWiN
>>102
お前は下手だな
2026/08/15(土) 11:36:06.79ID:Yv1XFEHU
ここに日本語では書いてないがw
106デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:36:33.10ID:TQSPkWiN
>>103
お前が行け、ちんちんの調子が悪いんですけど判決をお願いしますと言って警察に捕まって森の奥の病院で包茎の治療を受けろ
2026/08/15(土) 11:38:11.85ID:Yv1XFEHU
マジ韓国だったのか
急に火病るとは話に聞いていたが
薬飲んでも直らなそうだな
2026/08/15(土) 11:39:25.17ID:Yv1XFEHU
>>106
本性現したなw
挑発に弱すぎ、これも人柄の表れか
2026/08/15(土) 11:40:23.17ID:Yv1XFEHU
何の薬が効くのやら
やっぱトンスル飲んでるんだろうな
110デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:41:32.47ID:TQSPkWiN
テポドンは北朝鮮の人工衛星だよ
北朝鮮と韓国の違いもわからんのか
ジャップの義務教育はどうなってんだ
こんな義務教育の落ちこぼれはネットにアクセスさせるな
我が国で再教育してやろうか
2026/08/15(土) 11:42:42.55ID:IzVYAgKs
>これまで刷り込まれた既成概念で思考停止してない?
などと書いておいて
>他人のおツムの中で起きているこは(´・ω・`)知らんがな
自分は思考停止以前に思考放棄

結局このレベルなのよねぇ
少しはオツム使えよ
2026/08/15(土) 11:42:45.54ID:Yv1XFEHU
ttps://www.google.com/search?q=%E3%83%86%E3%83%9D%E3%83%89%E3%83%B3&hl=ja
2026/08/15(土) 11:43:58.28ID:Yv1XFEHU
>>110
脱北者だったのか…
2026/08/15(土) 11:45:59.67ID:Yv1XFEHU
日本に文句バッカ言って何で居るんだろう
いつでもお帰り頂いて結構なのに
なぜじゃ
2026/08/15(土) 11:46:44.54ID:Yv1XFEHU
ま・さ・か・ 生活保護もらったりしてないだろうな
116デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:51:24.27ID:TQSPkWiN
>>115
もらってたらどうなんだ、お前が助けてくれるのか?
お前が俺に手を差し伸べるなら俺はそれに感謝するだろう
そして>>111とお前と俺と三人で助け合って生きていこう
俺たちズッ友だからな
117デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:52:56.91ID:TQSPkWiN
これが俺たち三人の出会いでした
2026/08/15(土) 11:54:54.93ID:Yv1XFEHU
>>116
っ�I

できる仕事探して働けよ

お前は俺の友達として物足りない
119デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:58:10.07ID:TQSPkWiN
>>111
最後のオチをお願いしても良いでしょうか?
2026/08/15(土) 11:59:46.06ID:Yv1XFEHU
俺の知人に朝鮮籍の椰子がいて
東工大学部出てうちの大学に入ってきて結構頭は良いかった
卒業後仲間と会社を興してその後どうなったかは知らん
虚勢は張るタイプではあったがここまでふぁびょって人に変に絡むことはなかったなー
2026/08/15(土) 12:03:46.63ID:Yv1XFEHU
>>119
やっぱ噂通りウ○チ溶いた酒のむん?
122デフォルトの名無しさん
垢版 |
2026/08/15(土) 13:17:53.71ID:TQSPkWiN
継承の問題は具象メソッドを上書きすることによって起こる
interfaceがdefault methodを持てるようになったけど
default methodは具象メソッドなので
interfaceの実装でも継承の問題は起こるのよね
そういう意味ではinterfaceだから問題ないとも言えなくなった

ソフトウェアも密を避けるべき
https://developer.mamezou-tech.com/blogs/2023/08/02/software-coupling/

ここでの継承の問題は↑のようなもの
123デフォルトの名無しさん
垢版 |
2026/08/15(土) 13:29:23.70ID:TQSPkWiN
Javaの良くないところはメソッドをデフォルトで上書き可能にしたところだ
クラスを書いた人が意図したときだけ上書き可能にするべきだった
C++やC#はそうなっている
オブジェクト指向言語と言ったらJavaのイメージが強いが
実際にオブジェクト指向言語として完成度が高いのはC#やKotlinだな
2026/08/15(土) 13:33:50.38ID:fk/8MezU
>>122
そのページをちゃんと読んだ?
interface継承ならその問題は起きません
class継承だから発生した問題です
125デフォルトの名無しさん
垢版 |
2026/08/15(土) 13:34:51.45ID:TQSPkWiN
継承は問題があるから委譲を使おうとなって
困るのは委譲メソッドの実装コストなんよな

C#やKotlinは拡張メソッドの言語機能によって
委譲メソッドの実装コストが高いことを解決した

そこからするとJavaはまだ言語機能が未熟であるが
ゆえに継承を使わざるを得ないというのが実際のところだ
126デフォルトの名無しさん
垢版 |
2026/08/15(土) 13:36:05.05ID:TQSPkWiN
>>124
めちゃくちゃ読んだし
写経もした
interfaceで同じことが起きることも確認した
2026/08/15(土) 13:37:22.52ID:sdc2zI/7
>>126
ウソついたらダメ
interfaceで起きるならコード示して
128デフォルトの名無しさん
垢版 |
2026/08/15(土) 13:41:23.66ID:TQSPkWiN
>>127
お前w そういうときはわからないので教えてくださいって言うものだよ
煽って何かを教えてもらおうなどとは
お前のそういうところ俺は好き、ちょっと待ってて
129デフォルトの名無しさん
垢版 |
2026/08/15(土) 13:50:18.16ID:3CRH9xzf
>>122
おまえバカだろ
そのサイトは密結合のクラス継承をしているために起きる問題を解説してくれている
疎結合のインターフェース継承ではもちろんその問題は起きない
まずはその違いを理解しろ
130デフォルトの名無しさん
垢版 |
2026/08/15(土) 14:01:08.16ID:TQSPkWiN
>>127
ほい
https://paiza.io/projects/FT1LVWXCazREqX01yD4ZIw
131デフォルトの名無しさん
垢版 |
2026/08/15(土) 14:02:49.82ID:TQSPkWiN
メソッド名などは変えた
豆蔵さんに著作権侵害だと怒られたくなかった
132デフォルトの名無しさん
垢版 |
2026/08/15(土) 14:13:37.01ID:hZdK+yJb
変えるなよ
わけわからなくなってるぞ
2026/08/15(土) 14:23:37.18ID:Z3IQ+P4P
>>130
super使ってるから密結合だよ
疎結合にしなさい
2026/08/15(土) 14:26:02.01ID:+nxHL2x0
>>122
やっと気がついたか
原因を知ってればインターフェースのデフォルト実装でも発生することは自明なのにな
2026/08/15(土) 14:29:33.88ID:nx8TJyDG
>>134
起きないよ
デフォルト実装を完全に書き換えても実装継承にならないため疎結合になる
元のデフォルト実装を利用しつつデフォルトを書き換えられる言語が存在すればそれは実装継承なので密結合になるがそんな本末転倒な仕様にするのは愚かすぎる
2026/08/15(土) 14:36:56.36ID:+nxHL2x0
にしても最近は豆蔵のエンジニアでもQiitaレベルなんだな
OOで存在感があったころを知ってるなんかがっかり
2026/08/15(土) 14:41:55.11ID:+nxHL2x0
>>135
具体例を見てもまだ気づけないのかぁ
愚かだなぁ

30年も前から原因も対策も一般常識化してる問題なのになぁ
138デフォルトの名無しさん
垢版 |
2026/08/15(土) 14:43:57.08ID:TQSPkWiN
>>136
昔からこんなもんじゃね?
昔デザインパターンの本読んだけど
雑に書いてベテランっぽさを演出してるだけで中身はあまりなかったよ
139デフォルトの名無しさん
垢版 |
2026/08/15(土) 14:46:41.95ID:TQSPkWiN
>>134
だよねー
90年代には継承の問題は実装の上書きにあるから純粋仮想関数なら問題ないと言われてた
2026/08/15(土) 15:04:03.59ID:Yv1XFEHU
90年代からクラス継承が嫌いでたまらなかったオレ様が通りますよっと
2026/08/15(土) 15:10:53.23ID:/ef9Thsi
>>139
あるっれぇ〜?
別スレで複おじとともに問題は起きないと主張してなかったっけ〜?


637 デフォルトの名無しさん[sage] 2026/07/10(金) 00:03:13.15 ID:bAT5n0dl

>>635
保証できるが……
デフォルト実装は内部構造に触れないから定義できるもので、触れるなら定義できんのだわ

638 デフォルトの名無しさん[sage] 2026/07/11(土) 14:38:59.33 ID:EKW8EhdF

>>635
どうやって決まってもいない内部構造に依存するんだよ
その時点で矛盾しとる
2026/08/15(土) 15:12:14.49ID:Yv1XFEHU
( *´艸`)クスクス
2026/08/15(土) 15:15:42.64ID:cilU02p9
状況がわかったのでまとめてみる

【インターフェース継承】
(インターフェースに変数を持たないものなら抽象クラスやトレイトなども含む。)
①デフォルト実装を持たない言語 →疎結合
②デフォルト実装を持つ言語
②-A デフォルト実装を書き換えられない言語 →疎結合
②-B デフォルト実装を書き換えられる言語
②-B-α その場合にはデフォルト実装を継承できない言語 →疎結合
②-B-β その場合でもデフォルト実装を継承できる言語 →密結合❌

Javaは「②-B-β」だからアウト
C#やRustなどは「②-B-α」だからセーフ

ということでJavaはcクラスと同じノリで実装継承できてしまう変な言語仕様みたい
疎結合のインターフェース継承を台無しにしてしまう誤仕様
2026/08/15(土) 15:22:31.14ID:VAdMHfIa
またJavaが変な言語仕様で問題を引き起こしたパターンかよ
いつもJavaが戦犯だよな
2026/08/15(土) 15:31:32.75ID:SrZtcHJ3
インターフェース継承は密結合を起こさないための機能
昔のJavaは>>143の①だから疎結合で問題は起きなかった
Javaが仕様を拡張した時にミスをして密結合を招く道を作り出してしまった
2026/08/15(土) 15:44:25.52ID:fSG6hCiZ
>>133
super を使わないなら、default メソッドではなく static メソッドで良いのでは?

密結合か疎結合かは、そういう絶対的な条件で決まるものではなく相対的な評価でしかない。
一般には、あるプログラム要素の変更による他のプログラム要素への影響の多寡に対して評価される。
2026/08/15(土) 15:45:53.34ID:silBGnFG
>>143
Rustでも同じ問題起こるぞ
どこまで節穴なんだよ
2026/08/15(土) 15:46:28.97ID:Py4EuqFd
なるほどな
一般的にはデフォルト継承を用いてもインターフェース継承は疎結合
ただしデフォルト実装を継承しつつ書き換えられる間違った抜け道のあるJavaは注意ってことか
2026/08/15(土) 15:48:45.83ID:0Bu7lId9
>>147
AIに聞いたらRustのデフォルト実装は継承か書き換えどちらかしか選べないから問題は起きないってさ
2026/08/15(土) 15:52:33.11ID:PxTLs4UK
>>146
superをoverrideで使えるのはclassの仕様
それをinterfaceでも使えてしまうという言語仕様の拡張に失敗したJavaで起きている問題
2026/08/15(土) 15:54:18.43ID:silBGnFG
>>149
もう少しまともなAI使うか
もう少し基礎を勉強しろ
2026/08/15(土) 16:01:21.42ID:oBPlyySV
>>147
RustでこのJava問題は生じない
superメソッド呼び出しに相当するものがRustに存在しないため
2026/08/15(土) 16:10:40.42ID:fSG6hCiZ
C++ だと通常メンバ変数と仮想メンバ変数でどちらのケースもあるから、C++を知っていればすぐに分かる話だけれど、
どちらかしかない言語を習得した人だと、どちらかのケースを元に考えるから分かりにくいんだろうな。

C++の通常メンバ変数=GoやRustのメソッド
現在の型によって決まるメソッド。キャストされたら呼ばれるメソッドが変わる。
ソースコード上、使用時の型は静的に決定できるので、コンパイル時に呼ばれるメソッドも固定される。

C++の仮想メンバ関数=Javaのメソッド
インスタンス生成時の型によって決まるメソッド。キャストされても呼ばれるメソッドは変わらない。
ソースコード上、インスタンス生成時の本当の型を決定できないので、コンパイル時に呼ばれるメソッドを特定できない。
2026/08/15(土) 16:16:03.46ID:silBGnFG
>>151
まともなAIを使っても使う側がまともじゃなければ意味なかったな
2026/08/15(土) 16:16:45.06ID:fSG6hCiZ
>>153
> C++ だと通常メンバ変数と仮想メンバ変数でどちらのケースもあるから、C++を知っていればすぐに分かる話だけれど、

> C++の通常メンバ変数=GoやRustのメソッド

あ、しまった、関数を変数と間違えて書いてしまった。
通常メンバ関数と仮想メンバ関数、に訂正。
2026/08/15(土) 16:18:44.23ID:silBGnFG
>>153
すぐ分かる話といいつつあんま分かってなくないか?
インターフェースのデフォルト実装の話だぞ?
2026/08/15(土) 16:25:53.62ID:+6/lj6CD
>>151
俺もいくつかのAIに聞いてみた
いずれもRustはこの問題を起こさない結論
2026/08/15(土) 16:31:59.68ID:r7+Cc7Q7
C#でもデフォルト実装を書き換えるなら元のデフォルト実装を呼び出せないってさ
再帰定義になるため不可能とのこと
問題を引き起こすのはJavaだけの問題みたいね
2026/08/15(土) 16:41:03.86ID:0WCtanUv
>>157
はい、やり直し〜w
ヒントをやるとRustは問題起こすけどGoは起こさない
2026/08/15(土) 16:42:09.41ID:r7+Cc7Q7
Rustでもデフォルト実装を書き換えるなら元のデフォルト実装を呼び出せないってさ
再帰定義になるため不可能とのこと
2026/08/15(土) 16:42:48.33ID:S4+pqC1p
>>155
仮想メンバ変数でかなり悩んでしまったぞ笑。いつのまにC++の仕様が...と思って悩んだ。
C++と違うjavaのメンバ変数の上書きは、コードの難読化に使うのだ。
>>122の例は親クラスにおける継承可能なメソッドを使用した改変ですね。
親と子が別会社で作成されているとたいへんですね。
仕様に明記してあれば子を作った側のバグ、明記してなければ親を作った側のバグ。
javaのライブラリでもよくあるのでunittestは重要。
明記してあっても、親側の改修は、継承可能なメソッドを呼び出さないように変更すべき。
2026/08/15(土) 16:43:49.96ID:0WCtanUv
>>141
そのレスはID:Yv1XFEHU(二代目複おじ)のほうでID:TQSPkWiNはまた別のやつだろう
2026/08/15(土) 16:44:51.38ID:0WCtanUv
>>160
問題のフレーミングが間違ってるからAIから間違った答えしか引き出せないんだよ
2026/08/15(土) 16:51:14.97ID:Fg8L11Lx
>>159
Rustでこの手の問題は起きんよ
親のメソッドを呼び出す機構を敢えて設けていない
2026/08/15(土) 17:05:20.37ID:g+lgHL/9
Rustはクラス継承に相当するものがないからスーパーメソッド呼び出しがそもそもなくて問題が起きないわけだけど
C#はクラス継承もスーパーメソッド呼び出しもあるにも関わらずインターフェースでは使えない言語仕様だから問題が起きない
Javaはインターフェースでもスーパーメソッド呼び出しを使える間違った言語仕様にしたので問題が起きてる
166デフォルトの名無しさん
垢版 |
2026/08/15(土) 17:17:01.46ID:TQSPkWiN
>>161
なるほど、勉強になります、あなた只者じゃないですね
2026/08/15(土) 17:32:13.56ID:2vg9s13q
>>126
Javaだけ問題が生じるんだな
Javaを完全に捨てさるべきかもな
168デフォルトの名無しさん
垢版 |
2026/08/15(土) 17:36:22.11ID:TQSPkWiN
>>167
うーん、そうねー、Javaでこの問題が起こりやすいのは間違いない
他の言語では問題が起きにくくはあるけど起きないわけじゃないってところかな
>>161が言語化してくれてるけど、継承可能なメソッドに依存してるのが問題の本質だと思われる
2026/08/15(土) 17:40:54.70ID:ILo7VsC4
>>168
ちょっと違うな
メソッドを改変せずそのまま継承なら問題が起きない
メソッドを改変しても親からそれを継承しないなら問題が起きない
メソッドを改変するくせに親からそれを継承すると問題が起きる
2026/08/15(土) 17:46:09.20ID:nidKMiVb
>>168
他でも問題が起きると言うならC#やRustで実例コードを作ってみてよ
2026/08/15(土) 17:47:39.14ID:fSG6hCiZ
C# は使ったことがなかったんで知らなかったが、
C# でも virtual / override を付けるか付けないかでオーバーライドするしないを制御できるから、
C# を習得していても分かる話だな。

>>165
C# でも、<インタフェイス名>.<メソッド名> でメソッドの実装をすると、オーバーライドできるみたい。
あと、インターフェイス間ではクラスと同様に virtual / override でオーバーライドできるみたい。

Java と違って気付かずにオーバライドしていた、なんてことは起きないけど、
気づかずにそのメソッドを使用しているメソッドの挙動を変えていた、ということは発生する可能はあるね。
172デフォルトの名無しさん
垢版 |
2026/08/15(土) 17:52:19.39ID:nt5T4P0f
抽象クラスは基本的に使用禁止にしてるけどサービスロケータでは例外として今でも使ってるわ
中を隠蔽しないように用途を限れば便利なのは違いない
173デフォルトの名無しさん
垢版 |
2026/08/15(土) 17:53:45.32ID:TQSPkWiN
>>170
だからお前w ふつうは教えてくださいと言うところよ
かわいいからちょっと考えてみるよ
174デフォルトの名無しさん
垢版 |
2026/08/15(土) 18:05:32.04ID:nt5T4P0f
クラス委譲のある言語 いいなあ
便利なんだろうなあ
■ このスレッドは過去ログ倉庫に格納されています

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