探検


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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2026/08/13(木) 14:38:03.02ID:pdAcKRXu
前スレ
オブジェクト指向はオワコン?
https://mevius.5ch.io/test/read.cgi/tech/1721393540/
51デフォルトの名無しさん
垢版 |
2026/08/14(金) 18:45:52.36ID:eEi1c8Nt
どこから動くのか動かすまでわからない
オブジェクト指向すぎるプログラム
2026/08/14(金) 19:46:52.72ID:LThgHuK6
>>50
なぜ英語なのか謎だがそういうことだよな
その後半部分
結局サブタイプやクラスの祖先型も含めて抽象型を指定してコーディングしている場合
そのメソッド呼び出しは各々の具象型のメソッドへの動的ディスパッチが基本で遅くなってしまう
だからRustのように指定がなければ常に単相化で高速化しつつ
必要な場合のため動的ディスパッチ利用の指定もできる形が現実解なんだろうな
53デフォルトの名無しさん
垢版 |
2026/08/14(金) 20:31:09.86ID:85jyUaLi
理想のオブジェクト指向だとメンバー見なくてもメソッド名でどんな動きするかわかるって世界なんだわな。
だからメンバーも継承されても問題ないでしょ?って態度になるわけ。
まあ現実的ではないわな。
2026/08/14(金) 20:36:41.17ID:b0Pen2Wt
>>53
抽象型から具象型への継承は全く問題を起こさない
具象型から具象型への継承のみ問題が起き得る
55デフォルトの名無しさん
垢版 |
2026/08/14(金) 20:43:47.27ID:85jyUaLi
>>54
抽象とか具体とかを粒度の問題だと認識するわけだ。
特に多段継承する場合はね。
だからそんな理屈付けは現実には無意味なの。
56デフォルトの名無しさん
垢版 |
2026/08/14(金) 20:56:17.75ID:422O34Cd
抽象型は内部構造を持たないよ
つまりメモリを伴わないから明確に具体型と区別できるね
抽象型の継承は多段になっても大丈夫
2026/08/14(金) 21:35:50.11ID:kBqLUOsM
抽象型をわざわざ設けなくちゃならないってコンセプトにそもそも無理があるというか
親子関係ってできれば少ない方が良いんじゃね
58デフォルトの名無しさん
垢版 |
2026/08/14(金) 21:50:52.77ID:422O34Cd
抽象型を用いてコーディングすると

メリット1
特定の型に依存しないコードになる
つまり抽象的な良いコードにすることが出来る

メリット2
その抽象型を継承する任意の型で同じそのコードが使える
つまりコードの共通化を実現できる

メリット3
テストやデバッグの時にモックやダミーな型に入れ替えても動作する
その抽象型を継承していれば動くため
2026/08/14(金) 22:46:11.79ID:Ezt31ZDh
>>54
君、前スレで抽象型からの継承使って問題引き起こしてたやんww
もう忘れたの?
2026/08/14(金) 23:26:22.37ID:L7BBT3dp
クラスの継承は抽象型からの継承ではないね
変数を持たない抽象クラスなら抽象型になりえるけど
2026/08/15(土) 00:51:56.36ID:sm2DXHtx
抽象型のメリットは多重継承できることもあるよ
クラスは抽象型じゃないのでNG
2026/08/15(土) 10:58:59.93ID:Yv1XFEHU
継承やその類似の仕組みになぜそんなにこだわるのかな
これまで刷り込まれた既成概念で思考停止してない?
63デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:00:51.36ID:TQSPkWiN
>>62
どうしてだと思う?
2026/08/15(土) 11:02:24.07ID:Yv1XFEHU
ずーっと下(元)の階層にある機能を何階層も牽き回して
上位階層にまで見せて使わせなければならないってことは、
機能の抽象化レベルを階層に応じて上げられていない
即ち抽象化できてないってことにもなるんよ
適度に界面で切りなよ
65デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:04:12.75ID:TQSPkWiN
抽象型は型理論の概念で
クラスだから抽象型ではないとかそういうことではないのよ
2026/08/15(土) 11:04:29.04ID:Yv1XFEHU
>>63
他人のおツムの中で起きているこは(´・ω・`)知らんがな
2026/08/15(土) 11:05:32.81ID:Yv1XFEHU
>>65
いやそういう話じゃなくて、階層に応じて抽象度あげて界面で区切るべきって話なんだが
68デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:07:56.83ID:TQSPkWiN
>>66
知らないの? 知らないのに批判してるの?
わかろうとはした? それでもわからなかった?
2026/08/15(土) 11:09:01.77ID:Yv1XFEHU
オブジェクト指向の弱点の一つは過剰に紐付けして引き回して依存を張り巡らしたところ
即ちモジュラ利ティーを欠くところにああったと思うけど
その呪縛から逃れられないのかと
2026/08/15(土) 11:10:24.03ID:Yv1XFEHU
>>68
お前の好みやオツムの中など知るわけないだろ
71デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:10:34.43ID:TQSPkWiN
>>67
> クラスは抽象型じゃないのでNG

と言ってる人がいたので抽象型とクラスの関係はそういうものではないよって話だよ
2026/08/15(土) 11:12:21.76ID:Yv1XFEHU
そりゃそうだ、そう端的に書けばいいだけの話だ
73デフォルトの名無しさん
垢版 |
2026/08/15(土) 11:12:32.98ID:TQSPkWiN
>>70
俺の頭の中の話ではなくて一般的な物事の話だよ
俺が何を言ってるかも君はわからずに返信してるね
思考停止と言って批判してる君の思考は止まってるように見えるよ
もうすこし考えてから発言したがいんじゃないかな
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使うか
もう少し基礎を勉強しろ
■ このスレッドは過去ログ倉庫に格納されています

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