探検
オブジェクト指向はオワコン
■ このスレッドは過去ログ倉庫に格納されています
2023/08/26(土) 22:00:53.85ID:H4l7y46b
最近の言語には採用されないことが増えている
610デフォルトの名無しさん
2024/01/18(木) 19:44:08.60ID:318qGf4h611デフォルトの名無しさん
2024/01/18(木) 20:07:42.87ID:p4+mv2Ay …🥺
とりあえずOOSCの超要約でも読むわ
https://seesaawiki.jp/supersummary/d/OOSC
第35章 SimulaからJavaへ、そしてその先へ:主なオブジェクト指向言語とその環境
https://seesaawiki.jp/supersummary/d/OOSC/35
とりあえずOOSCの超要約でも読むわ
https://seesaawiki.jp/supersummary/d/OOSC
第35章 SimulaからJavaへ、そしてその先へ:主なオブジェクト指向言語とその環境
https://seesaawiki.jp/supersummary/d/OOSC/35
612デフォルトの名無しさん
2024/01/18(木) 20:15:07.55ID:IdJKbIqV613デフォルトの名無しさん
2024/01/18(木) 20:30:12.28ID:hMwUZ6n+ 各種プログラミング言語の継承とかってコンパイル時には解決してるものなんだからコードの可読性が上がるのなら使っていくべきもの
安易に使うべきではないっていうのは、
・コンパイラ任せのプログラムを書くなってこと?
・コンパイル後でボイラーコードが増えてアホコードになるってこと?
・コンパイラに継承とかの解決をさせることが時間の無駄ってこと?
安易に使うべきではないっていうのは、
・コンパイラ任せのプログラムを書くなってこと?
・コンパイル後でボイラーコードが増えてアホコードになるってこと?
・コンパイラに継承とかの解決をさせることが時間の無駄ってこと?
614デフォルトの名無しさん
2024/01/18(木) 20:33:43.77ID:YnZ4cQvx 「装備品」ということなら集約かな?
>Cycは人間には電気の部品がないことは知っているが、
>Fredが電気カミソリを持っていたので、
<オブジェクト指向の集約について>
クラスが他のクラスの組み合わせで構成されている関係を集約(aggregation)と呼びます。
例えば、学校は生徒を含み注文商品は商品を持ちます。
集約では、含んでいる側が消滅しても、含まれている方はなくなりません。
例えば、生徒が変化しても学校は変わりませんし、注文商品が消滅しても商品は消滅しません。
http://wtar00.seesaa.net/article/438834930.html
>Cycは人間には電気の部品がないことは知っているが、
>Fredが電気カミソリを持っていたので、
<オブジェクト指向の集約について>
クラスが他のクラスの組み合わせで構成されている関係を集約(aggregation)と呼びます。
例えば、学校は生徒を含み注文商品は商品を持ちます。
集約では、含んでいる側が消滅しても、含まれている方はなくなりません。
例えば、生徒が変化しても学校は変わりませんし、注文商品が消滅しても商品は消滅しません。
http://wtar00.seesaa.net/article/438834930.html
615デフォルトの名無しさん
2024/01/18(木) 20:36:36.73ID:318qGf4h >>613
Vectorを継承してStackを作るようなヤツが現れないようにするためもあるぞ
Vectorを継承してStackを作るようなヤツが現れないようにするためもあるぞ
616デフォルトの名無しさん
2024/01/18(木) 20:39:00.79ID:YnZ4cQvx Pythonは多重継承だが?
>>612
>継承とか基本的にコンパイラの実装上の都合(性能とか)をプログラムの設計に押し付けているだけだから
オントロジーは、情報の親/子関係を表現できます。RDFドキュメントの例でも触れましたが、
オブジェクト指向の継承と同じ概念と理解いただいてもよいと思います。そして、
オントロジーの「継承」の特徴は、次のようにオブジェクト指向と近いものです。
子は親の情報(=設定値)を引き継ぐ
多重継承ができる。(継承した全てのクラスの定義を漏れなく引き継ぐ)
継承の関係は、「subClassOf」と表現します。「子 is a 親」という関係です。
https://qiita.com/mininobu/items/bce0e0ad97ed17e0aff2
>>612
>継承とか基本的にコンパイラの実装上の都合(性能とか)をプログラムの設計に押し付けているだけだから
オントロジーは、情報の親/子関係を表現できます。RDFドキュメントの例でも触れましたが、
オブジェクト指向の継承と同じ概念と理解いただいてもよいと思います。そして、
オントロジーの「継承」の特徴は、次のようにオブジェクト指向と近いものです。
子は親の情報(=設定値)を引き継ぐ
多重継承ができる。(継承した全てのクラスの定義を漏れなく引き継ぐ)
継承の関係は、「subClassOf」と表現します。「子 is a 親」という関係です。
https://qiita.com/mininobu/items/bce0e0ad97ed17e0aff2
617デフォルトの名無しさん
2024/01/18(木) 20:53:38.83ID:IdJKbIqV >>613
設計の初期の段階でクラス継承関係みたいな変更しづらい仕様を固めなくてはならないのは「早すぎる最適化」だということ。
継承関係の変更はえてして根底からの設計変更が必要になるけど、設計が熟成する前にクラスの依存関係を確定するのは非常に難しい。
adaptorパターンとかで影響を減らすことはできるけど、それなら最初から継承関係用のadaptorを用意したほうがいい。
c++のコンセプトをそのまま変数の型に使用できればずいぶん楽になるんだけどな。
設計の初期の段階でクラス継承関係みたいな変更しづらい仕様を固めなくてはならないのは「早すぎる最適化」だということ。
継承関係の変更はえてして根底からの設計変更が必要になるけど、設計が熟成する前にクラスの依存関係を確定するのは非常に難しい。
adaptorパターンとかで影響を減らすことはできるけど、それなら最初から継承関係用のadaptorを用意したほうがいい。
c++のコンセプトをそのまま変数の型に使用できればずいぶん楽になるんだけどな。
618デフォルトの名無しさん
2024/01/18(木) 21:03:06.30ID:bwFEBIOM モダンなプログラミング言語
Go、Rust、Zig、Nim、Julia、Elixirは
クラスおよびその継承を言語仕様から排除している
クラス継承は悪手であるとプログラミング言語界では結論が出ている
Go、Rust、Zig、Nim、Julia、Elixirは
クラスおよびその継承を言語仕様から排除している
クラス継承は悪手であるとプログラミング言語界では結論が出ている
619デフォルトの名無しさん
2024/01/18(木) 21:07:29.23ID:YnZ4cQvx クラス継承が大事だつーなら、必ず多重継承も含めなければならなくなるからなw
随意筋 不随意筋
↖ ↗
チンポ
人工知能や自然言語処理なら、文脈によって語の意味が変化するから、多重継承必須ね!
618 デフォルトの名無しさん sage 2024/01/18(木) 21:03:06.30 ID:bwFEBIOM
モダンなプログラミング言語
Go、Rust、Zig、Nim、Julia、Elixirは
クラスおよびその継承を言語仕様から排除している
クラス継承は悪手であるとプログラミング言語界では結論が出ている
随意筋 不随意筋
↖ ↗
チンポ
人工知能や自然言語処理なら、文脈によって語の意味が変化するから、多重継承必須ね!
618 デフォルトの名無しさん sage 2024/01/18(木) 21:03:06.30 ID:bwFEBIOM
モダンなプログラミング言語
Go、Rust、Zig、Nim、Julia、Elixirは
クラスおよびその継承を言語仕様から排除している
クラス継承は悪手であるとプログラミング言語界では結論が出ている
620デフォルトの名無しさん
2024/01/18(木) 21:14:26.20ID:YnZ4cQvx Javaみたいな多重継承をサポートしていない言語なら、継承そのものを殆ど使わないほうがいいと思う
随意筋 不随意筋
↖ ↗
チンポ
継承を使う場合は、必ず多重継承をもサポートしなければならないのだから!
随意筋 不随意筋
↖ ↗
チンポ
継承を使う場合は、必ず多重継承をもサポートしなければならないのだから!
621デフォルトの名無しさん
2024/01/18(木) 21:26:58.92ID:XBwDmihy さまざまなユースケースの必要なUIまわりくらいでしか継承はもはや必須じゃないよね
システムまわりでは継承使うとかえって将来的に保守をしにくくなる
システムまわりでは継承使うとかえって将来的に保守をしにくくなる
622デフォルトの名無しさん
2024/01/18(木) 21:37:43.88ID:iZjcVJFY623デフォルトの名無しさん
2024/01/18(木) 21:47:34.26ID:/z/OLNb0 rustは継承に変わる実装としてトレイトがある。継承はレガシーなゴミ技術だよ。
'''
オブジェクト指向言語の問題は、暗黙の環境を常に持ち歩いていることだ。
欲しかったのはバナナだけなのに、あなたが得たのはバナナを持っていたゴリラと、ジャングル全体だった。
Joe Armstrong
https://medium.com/@cscalfani/goodbye-object-oriented-programming-a59cda4c0e53
https://qiita.com/baby-degu/items/ae5777dad23ee6624ce2
'''
'''
オブジェクト指向言語の問題は、暗黙の環境を常に持ち歩いていることだ。
欲しかったのはバナナだけなのに、あなたが得たのはバナナを持っていたゴリラと、ジャングル全体だった。
Joe Armstrong
https://medium.com/@cscalfani/goodbye-object-oriented-programming-a59cda4c0e53
https://qiita.com/baby-degu/items/ae5777dad23ee6624ce2
'''
624デフォルトの名無しさん
2024/01/18(木) 21:48:59.95ID:YnZ4cQvx 集約
独立して存在できる何かのコレクションがある場合
P.29
こちらは空港と飛行機で例えられています。
コンポジションのようなAとBの強い結びつきはありません。
https://qiita.com/gatapon/items/5e3292f897ab4f817001
ドラゴンクエストX
【主人公と職業】
・戦士
・僧侶
・魔法使い
・武闘家
・盗賊
・旅芸人
一般的に「オブジェクトの継承」が使われるが、この場合は「集約」でも代用可能だ
空港でどの飛行機を先に飛ばすかは、主人公がどの職業を選択するかに置き換えられる
プレイヤーの意思でコントロールできるからだ
>Cycは人間には電気の部品がないことは知っているが、
>Fredが電気カミソリを持っていたので、
装備品もプレイヤーが自分で選択可能だから、「集約」でも代用可能だ
class チンポ extends クリントン{
super.不適切な関係;
}
しかしながらクリントンが自分のチンポをコントロールすることは不可能
クリントンは同じクリントンでも、人格とチン格は違うからだ
独立して存在できる何かのコレクションがある場合
P.29
こちらは空港と飛行機で例えられています。
コンポジションのようなAとBの強い結びつきはありません。
https://qiita.com/gatapon/items/5e3292f897ab4f817001
ドラゴンクエストX
【主人公と職業】
・戦士
・僧侶
・魔法使い
・武闘家
・盗賊
・旅芸人
一般的に「オブジェクトの継承」が使われるが、この場合は「集約」でも代用可能だ
空港でどの飛行機を先に飛ばすかは、主人公がどの職業を選択するかに置き換えられる
プレイヤーの意思でコントロールできるからだ
>Cycは人間には電気の部品がないことは知っているが、
>Fredが電気カミソリを持っていたので、
装備品もプレイヤーが自分で選択可能だから、「集約」でも代用可能だ
class チンポ extends クリントン{
super.不適切な関係;
}
しかしながらクリントンが自分のチンポをコントロールすることは不可能
クリントンは同じクリントンでも、人格とチン格は違うからだ
625デフォルトの名無しさん
2024/01/18(木) 21:50:12.81ID:p4+mv2Ay 継承は開発者の手腕によって神にも悪魔にもなる
きっちりとした仕様書とノウハウがあれば保守性に長けたプログラムがちゃんと出来上がるよ
きっちりとした仕様書とノウハウがあれば保守性に長けたプログラムがちゃんと出来上がるよ
626デフォルトの名無しさん
2024/01/18(木) 21:52:27.18ID:bwFEBIOM627デフォルトの名無しさん
2024/01/18(木) 21:59:50.46ID:YnZ4cQvx >>611
継承が必須だということなら、多重継承をサポートしていないJavaは欠陥言語となる
多重継承をサポートしていないということは即ち、他のやり方で代用できると考えていい
継承を使いこなしたいのであれば、Pythonのような多重継承をサポートしている言語をマスターすべき
継承が必須だということなら、多重継承をサポートしていないJavaは欠陥言語となる
多重継承をサポートしていないということは即ち、他のやり方で代用できると考えていい
継承を使いこなしたいのであれば、Pythonのような多重継承をサポートしている言語をマスターすべき
628デフォルトの名無しさん
2024/01/18(木) 22:22:16.51ID:k9qVbfct629デフォルトの名無しさん
2024/01/18(木) 22:31:39.02ID:p4+mv2Ay630デフォルトの名無しさん
2024/01/18(木) 22:45:13.36ID:OdzmVMko javaのやってる継承は継承もどき
本物の継承はpythonにしかできない
本物の継承はpythonにしかできない
631デフォルトの名無しさん
2024/01/18(木) 23:16:36.55ID:BMLfw7Fm ほんとはみんな継承をやりたいんじゃなくて、ポリモーフィズムと情報の隠蔽をやりたいだけなんだよね
632デフォルトの名無しさん
2024/01/18(木) 23:31:00.54ID:jl137W3w633デフォルトの名無しさん
2024/01/18(木) 23:51:38.17ID:6/8H82z6 情報隠蔽は情報不足と見分けがつかない
スクリプトに不足している情報を明示したいだけなのがGo、Rust
スクリプトに不足している情報を明示したいだけなのがGo、Rust
634デフォルトの名無しさん
2024/01/19(金) 01:05:45.75ID:Bxqp/mLl >>633
まずはこの議論における基礎知識としてRustのトレイト(trait)を学習することをおすすめする
まずはこの議論における基礎知識としてRustのトレイト(trait)を学習することをおすすめする
635デフォルトの名無しさん
2024/01/19(金) 01:09:24.73ID:dQ/RTsAV636デフォルトの名無しさん
2024/01/19(金) 01:19:07.65ID:5qNxVIXw 「本来のオブジェクト志向」、体験するのが無理という難点がある
まさか令和の時代にSmalltalk触れってわけにもいかないし
まさか令和の時代にSmalltalk触れってわけにもいかないし
637デフォルトの名無しさん
2024/01/19(金) 01:24:17.77ID:dQ/RTsAV smalltalkのスレッドまわりはjavaとだいたい同じだった記憶があるし「本来のオブジェクト指向」とはきっと違うはず
638デフォルトの名無しさん
2024/01/19(金) 08:10:41.28ID:iTaoyDeQ >>636
Smalltalkは多重継承をサポートしていないぞ?
Smalltalkは多重継承をサポートしていないぞ?
639デフォルトの名無しさん
2024/01/19(金) 08:49:00.44ID:MC8t1NGB クラス継承ですらデメリットが大きいためモダンなプログラミング言語では採用されていないのに
クラス多重継承なんてあまりにもダメすぎるため採用しているメジャーな言語はPython Perl C++のダメ言語御三家のみ
クラス多重継承を採用していない言語が正しい
クラス多重継承なんてあまりにもダメすぎるため採用しているメジャーな言語はPython Perl C++のダメ言語御三家のみ
クラス多重継承を採用していない言語が正しい
640デフォルトの名無しさん
2024/01/19(金) 09:04:50.86ID:oSBLpXih 継承は凡人には使いこなせなかった
なので、機能として存在する意味がないし、下手に使うと有害なので廃止された
なので、機能として存在する意味がないし、下手に使うと有害なので廃止された
641デフォルトの名無しさん
2024/01/19(金) 09:30:06.32ID:iTaoyDeQ 多重継承は曖昧だというが、自然言語処理はその曖昧さが大切になる。チンポは随意筋であり不随意筋である。
>>639
>クラス多重継承なんてあまりにもダメすぎるため
最終的に,クラス階層は最上位クラスを含めた
最大8 階層から構成され,「伝統的な日本の絵画」
に属する用語に対応する 55 クラスと解説文中か
ら抽出した139 クラスが配置された。ただし,そ
のうち 32 クラスが複数の上位クラスをもつとい
う多重継承が示された。例えば,「ngyc:絵巻物」
は「ngyc:伝統的な日本の絵画」と,「ngyc:表具の
形式」の下位クラスである「ngyc:巻子」の 2 つの
クラスを継承する(図 2)。こうした多重継承は,
本質属性をもつ基本概念と機能を表すロール概念
を分離することで,基本概念による属性継承に限
った階層関係に変更するという考え方もあり 10),
「ngyc:伝統的な日本の絵画」がロール概念で,
「ngyc:表具の形式」が基本概念と捉えることもで
きる。しかし,本研究ではテキストからの情報抽
出に即して配置し,多重継承を許容した階層を導
き出した。
http://www.mslis.jp/am2019yoko/05_kobayashi.pdf
随意筋 不随意筋
↖ ↗
チンポ
>>639
>クラス多重継承なんてあまりにもダメすぎるため
最終的に,クラス階層は最上位クラスを含めた
最大8 階層から構成され,「伝統的な日本の絵画」
に属する用語に対応する 55 クラスと解説文中か
ら抽出した139 クラスが配置された。ただし,そ
のうち 32 クラスが複数の上位クラスをもつとい
う多重継承が示された。例えば,「ngyc:絵巻物」
は「ngyc:伝統的な日本の絵画」と,「ngyc:表具の
形式」の下位クラスである「ngyc:巻子」の 2 つの
クラスを継承する(図 2)。こうした多重継承は,
本質属性をもつ基本概念と機能を表すロール概念
を分離することで,基本概念による属性継承に限
った階層関係に変更するという考え方もあり 10),
「ngyc:伝統的な日本の絵画」がロール概念で,
「ngyc:表具の形式」が基本概念と捉えることもで
きる。しかし,本研究ではテキストからの情報抽
出に即して配置し,多重継承を許容した階層を導
き出した。
http://www.mslis.jp/am2019yoko/05_kobayashi.pdf
随意筋 不随意筋
↖ ↗
チンポ
642デフォルトの名無しさん
2024/01/19(金) 09:43:00.08ID:sTJV5iPD もう下品な比喩はいいからw
643デフォルトの名無しさん
2024/01/19(金) 10:56:52.36ID:HG/MrdYG ガンダムで例えてくれ
644デフォルトの名無しさん
2024/01/19(金) 11:09:31.72ID:NQtmyzQy 継承無くてもポリモーフィズムはできる
それでいい
それでいい
645デフォルトの名無しさん
2024/01/19(金) 11:30:43.26ID:HG/MrdYG テンプレートおよびジェネリクスは禁止で
それでいい
それでいい
646デフォルトの名無しさん
2024/01/19(金) 11:37:19.74ID:iTaoyDeQ 「なぜPythonが人気なのか」を機能性・転職市場・将来性の3視点で調査
Python入門
2023年11月24日
https://www.sejuku.net/blog/108069
>>639
>クラス多重継承なんてあまりにもダメすぎるため採用しているメジャーな言語はPython Perl C++のダメ言語御三家のみ
流行とかパラダイムが全てでは無いにせよ、オブジェクト指向=人工知能ということなら、
自然言語処理における意味解釈は語のルーツを掘り下げるための「多重継承」がメインになる
随意筋 不随意筋
↖ ↗
チンポ
文脈によって同一オブジェクトが真逆の振る舞いをするということね!
Python入門
2023年11月24日
https://www.sejuku.net/blog/108069
>>639
>クラス多重継承なんてあまりにもダメすぎるため採用しているメジャーな言語はPython Perl C++のダメ言語御三家のみ
流行とかパラダイムが全てでは無いにせよ、オブジェクト指向=人工知能ということなら、
自然言語処理における意味解釈は語のルーツを掘り下げるための「多重継承」がメインになる
随意筋 不随意筋
↖ ↗
チンポ
文脈によって同一オブジェクトが真逆の振る舞いをするということね!
647デフォルトの名無しさん
2024/01/19(金) 11:40:54.55ID:arzVgFZ3 もう継承はゴミってことで結論出てるのになんでそんなに無くてはならないって拘るの?
648デフォルトの名無しさん
2024/01/19(金) 11:50:05.51ID:iTaoyDeQ >>647
最新調査でPythonが人気なのと、Pythonが多重継承をサポートしているのは、どう説明するのかな?
最新調査でPythonが人気なのと、Pythonが多重継承をサポートしているのは、どう説明するのかな?
649デフォルトの名無しさん
2024/01/19(金) 12:04:44.60ID:iTaoyDeQ 集約と継承を使い分けることが大切ね!
>>623
>欲しかったのはバナナだけなのに、あなたが得たのはバナナを持っていたゴリラと、ジャングル全体だった。
ジャングルーーーーーーーーーー
┃ ゴリラーーーー ┃ ┃ ┃ バナナ ┃ ┃
┃ ーーーーーーー ┃
┃ ┃
ーーーーーーーーーーーーーーー
クリントンーーーーーーーーーー
┃ ┃
┃ ┃
┃ ┃
┃ ┃
┃ ┃
ーーーーーーーーーーーーーーー
┃チンポ┃
 ̄ ̄ ̄ ̄
>>623
>欲しかったのはバナナだけなのに、あなたが得たのはバナナを持っていたゴリラと、ジャングル全体だった。
ジャングルーーーーーーーーーー
┃ ゴリラーーーー ┃ ┃ ┃ バナナ ┃ ┃
┃ ーーーーーーー ┃
┃ ┃
ーーーーーーーーーーーーーーー
クリントンーーーーーーーーーー
┃ ┃
┃ ┃
┃ ┃
┃ ┃
┃ ┃
ーーーーーーーーーーーーーーー
┃チンポ┃
 ̄ ̄ ̄ ̄
650デフォルトの名無しさん
2024/01/19(金) 12:26:06.50ID:SK8TlxrV >>631
多態性・情報隠蔽ですら無くて、単にインスタンス間でやり取りするときのインターフェイスとプロトコルを確定しておきたいだけだよ。
継承みたいなコンパイラ都合のお作法はうざったいだけだし、インターフェイスとプロトコルを守っているなら多態かどうかもどうでもいい。結果的に多態になるけど、あくまで結果論。
多態性・情報隠蔽ですら無くて、単にインスタンス間でやり取りするときのインターフェイスとプロトコルを確定しておきたいだけだよ。
継承みたいなコンパイラ都合のお作法はうざったいだけだし、インターフェイスとプロトコルを守っているなら多態かどうかもどうでもいい。結果的に多態になるけど、あくまで結果論。
651デフォルトの名無しさん
2024/01/19(金) 12:31:42.38ID:arzVgFZ3652デフォルトの名無しさん
2024/01/19(金) 12:38:25.66ID:SK8TlxrV オブジェクト指向がオワコンというのは正しくて、よりインスタンス間のルール管理に注力した契約プログラムとかに発展的解消してんじゃないのかね。
653デフォルトの名無しさん
2024/01/19(金) 12:44:39.23ID:arzVgFZ3 >>650
インスタンス間でやり取りするときのインターフェイスとプロトコルを確定(カプセル化)することがまさしく不要な情報の隠蔽なのでは?
それでカプセル化したらポリモーフィズムに基づいてアクセスさせるか~みたいな感じでしょ?
インスタンス間でやり取りするときのインターフェイスとプロトコルを確定(カプセル化)することがまさしく不要な情報の隠蔽なのでは?
それでカプセル化したらポリモーフィズムに基づいてアクセスさせるか~みたいな感じでしょ?
654デフォルトの名無しさん
2024/01/19(金) 12:45:36.30ID:arzVgFZ3 そんでカプセル化したものを継承させるのはプログラムが煩雑になるからやめましょうよ、継承の実装を省くならクラスもいらないねってそういう話じゃん
655デフォルトの名無しさん
2024/01/19(金) 12:52:25.37ID:rg+QtK0B656デフォルトの名無しさん
2024/01/19(金) 12:54:01.11ID:SK8TlxrV657デフォルトの名無しさん
2024/01/19(金) 12:54:57.24ID:iTaoyDeQ オンラインゲームのアップデートは「カプセル化したものを継承」では?
>>654
>そんでカプセル化したものを継承させるのはプログラムが煩雑になるからやめましょうよ、
大型アップデート情報 バージョン6.5[後期] (2023/11/21 更新)
https://hiroba.dqx.jp/sc/topics/detail/0e4f5cc9f4f3f7f1651a6b9f9214e5b1/
システムのアップデートは一般的に「継承」と自分は思うが、丸ごと作り直したほうが良いのかな?
>>654
>そんでカプセル化したものを継承させるのはプログラムが煩雑になるからやめましょうよ、
大型アップデート情報 バージョン6.5[後期] (2023/11/21 更新)
https://hiroba.dqx.jp/sc/topics/detail/0e4f5cc9f4f3f7f1651a6b9f9214e5b1/
システムのアップデートは一般的に「継承」と自分は思うが、丸ごと作り直したほうが良いのかな?
658デフォルトの名無しさん
2024/01/19(金) 13:07:12.61ID:iTaoyDeQ 私見としてはオンラインゲームと言えども、大型バージョンアップ時は丸ごと作り直したほうがいいと思う
ドラクエ10のバージョン7ということなら、すべてを再インストール化でもいい
ドラクエ10のバージョン7ということなら、すべてを再インストール化でもいい
659デフォルトの名無しさん
2024/01/19(金) 13:15:20.79ID:arzVgFZ3 >>657
オンラインゲームのアップデートってなに?もっと具体的に頼む
バグ修正?新機能の追加?新キャラの追加?
バグ修正や新機能はカプセル化の対応部分の丸ごと書き換え等いろいろあるだろうね
新キャラ追加はカプセル化したクラスモデルを継承して作り上げて、それをロードしてやれば、ポリモーフィズムに基づいて動いてくれるだろうね
オンラインゲームのアップデートってなに?もっと具体的に頼む
バグ修正?新機能の追加?新キャラの追加?
バグ修正や新機能はカプセル化の対応部分の丸ごと書き換え等いろいろあるだろうね
新キャラ追加はカプセル化したクラスモデルを継承して作り上げて、それをロードしてやれば、ポリモーフィズムに基づいて動いてくれるだろうね
660デフォルトの名無しさん
2024/01/19(金) 13:17:20.00ID:2+AapLKd さすがにアプデを継承と考えるのはややこしくなるからやめたほうがいい
661デフォルトの名無しさん
2024/01/19(金) 13:25:42.10ID:iTaoyDeQ >>659
>オンラインゲームのアップデートってなに?もっと具体的に頼む
オンラインゲームというのは、リリース後も次々とアップデートを繰り返し、機能が増えていきます。
よって、一番最初の設計で、どれだけ未来の変化を予測して、準備しておけるかが大事になってきます。
後になって苦しまないために、最初は多少面倒でも、柔軟でわかりやすい、変化に耐えうる設計を心がけたいものです。
https://developer.aiming-inc.com/programming/design-battle-program/
オブジェクト指向を初めて勉強していたころ、クラスの継承は(個人的には)理解しやすかったですが、
インターフェースはいまいち利点が分かりづらい印象がありました。
そこで、デザインパターンのひとつ「Observerパターン」を取り上げて、
継承とインターフェースの使用法を見ていきます。Observerパターンは先ほどの一斉攻撃にも近いパターンになります。
https://qiita.com/kcpoipoi/items/e6c495e7a481e02847d8
>オンラインゲームのアップデートってなに?もっと具体的に頼む
オンラインゲームというのは、リリース後も次々とアップデートを繰り返し、機能が増えていきます。
よって、一番最初の設計で、どれだけ未来の変化を予測して、準備しておけるかが大事になってきます。
後になって苦しまないために、最初は多少面倒でも、柔軟でわかりやすい、変化に耐えうる設計を心がけたいものです。
https://developer.aiming-inc.com/programming/design-battle-program/
オブジェクト指向を初めて勉強していたころ、クラスの継承は(個人的には)理解しやすかったですが、
インターフェースはいまいち利点が分かりづらい印象がありました。
そこで、デザインパターンのひとつ「Observerパターン」を取り上げて、
継承とインターフェースの使用法を見ていきます。Observerパターンは先ほどの一斉攻撃にも近いパターンになります。
https://qiita.com/kcpoipoi/items/e6c495e7a481e02847d8
662デフォルトの名無しさん
2024/01/19(金) 14:00:28.63ID:arzVgFZ3663デフォルトの名無しさん
2024/01/19(金) 14:14:12.14ID:arzVgFZ3 あ、継承をゴミと言ってるのであって、インターフェースやトレイトは存分に使うべきものだから
勘違いしてもらったら困るぞ
勘違いしてもらったら困るぞ
664デフォルトの名無しさん
2024/01/19(金) 14:21:52.28ID:arzVgFZ3 新キャラ新技くらいならカプセル化の継承でもなくてインターフェースをただ実装するだけで済ませてるか>>661
自分の作品見てたら画面追加は継承を使ってたわ
自分の作品見てたら画面追加は継承を使ってたわ
665デフォルトの名無しさん
2024/01/19(金) 14:23:53.15ID:2Txscu7W666デフォルトの名無しさん
2024/01/19(金) 14:33:48.49ID:arzVgFZ3667デフォルトの名無しさん
2024/01/19(金) 14:51:07.26ID:2+AapLKd お勉強発表会はたのちいね
668デフォルトの名無しさん
2024/01/19(金) 14:54:55.85ID:arzVgFZ3 >>667
むちゃくちゃ楽しい
むちゃくちゃ楽しい
669デフォルトの名無しさん
2024/01/19(金) 14:59:58.61ID:2Txscu7W >>667
と暇人が申しております
と暇人が申しております
670デフォルトの名無しさん
2024/01/19(金) 17:41:08.81ID:wxu2zgr7671デフォルトの名無しさん
2024/01/19(金) 18:11:39.79ID:Hi84WC+x672デフォルトの名無しさん
2024/01/19(金) 18:21:46.43ID:9QtN1Vnk >>670
つまりinterfaceで十分ってことだな
つまりinterfaceで十分ってことだな
673デフォルトの名無しさん
2024/01/19(金) 19:20:32.13ID:iTaoyDeQ _w 、... ョ ┌┐ ィ ′
 ̄+ ヘe、 j「. .¬气¬''..~''~ ,.ルw、.ーu、す
^^"~~l|~~^''' ォ′ .,. l| ┐ .√ j| _~+,.、.
. .,/. ょ_/ 、j「 { `¬.. 〃 .、l| 、
.. ~^. ~ ` ~^
. ;. ョ __
. j| ~ラ¬¬+ |.  ̄.  ̄..
. オ |.. ォ ,、
k、 ,j〃. L_. _ェ ~'――'~. ^^^^^^ ̄´
 ̄′  ̄ ̄
 ̄+ ヘe、 j「. .¬气¬''..~''~ ,.ルw、.ーu、す
^^"~~l|~~^''' ォ′ .,. l| ┐ .√ j| _~+,.、.
. .,/. ょ_/ 、j「 { `¬.. 〃 .、l| 、
.. ~^. ~ ` ~^
. ;. ョ __
. j| ~ラ¬¬+ |.  ̄.  ̄..
. オ |.. ォ ,、
k、 ,j〃. L_. _ェ ~'――'~. ^^^^^^ ̄´
 ̄′  ̄ ̄
674デフォルトの名無しさん
2024/01/19(金) 19:28:18.36ID:r1TqRAYd 一人で書き込みお疲れ様。
675デフォルトの名無しさん
2024/01/19(金) 19:43:32.99ID:SK8TlxrV >>671
熟練の設計者が慣れた問題領域やるんでもなければ無理だろ。
熟練の設計者が慣れた問題領域やるんでもなければ無理だろ。
676デフォルトの名無しさん
2024/01/19(金) 19:52:40.51ID:SK8TlxrV677デフォルトの名無しさん
2024/01/19(金) 20:09:04.02ID:XrKZZkrv >>675
超大型建築より普通の一軒家の方が数、つまりニーズが圧倒的に多い
アプリは常にスケールする可能性がある、というのは理論的な話で実際スケールするアプリなんかほんの一握り。結局作ってそのままなんていくらでもある。変更が無いケースで熟練どうたらとか全く無関係。
超大型建築より普通の一軒家の方が数、つまりニーズが圧倒的に多い
アプリは常にスケールする可能性がある、というのは理論的な話で実際スケールするアプリなんかほんの一握り。結局作ってそのままなんていくらでもある。変更が無いケースで熟練どうたらとか全く無関係。
678デフォルトの名無しさん
2024/01/19(金) 20:34:16.00ID:SK8TlxrV >>677
普通の一軒家とか、問題領域の知識が無くて失敗する事例の宝庫だろ。あとになって大抵の人間は「コンセントが足りない」と言うしな。
変更しないままなのは「変更しなくていい」じゃなくて「変更は不可能に近いから不便・危険でも諦める」だからな。
普通の一軒家とか、問題領域の知識が無くて失敗する事例の宝庫だろ。あとになって大抵の人間は「コンセントが足りない」と言うしな。
変更しないままなのは「変更しなくていい」じゃなくて「変更は不可能に近いから不便・危険でも諦める」だからな。
679デフォルトの名無しさん
2024/01/19(金) 20:49:36.09ID:XrKZZkrv 結局継承で都合が悪いケースなんて極一部というのが現実。
ヤグニの原則に反して嬉しいのは客の金でただで勉強・実験したいエンジニアだけ。
ヤグニの原則に反して嬉しいのは客の金でただで勉強・実験したいエンジニアだけ。
680デフォルトの名無しさん
2024/01/19(金) 21:05:02.67ID:SK8TlxrV681デフォルトの名無しさん
2024/01/19(金) 21:27:25.19ID:K5SD+kWD >>672
インターフェースだけだとコピペ継承が乱立するんだよ
そこでインターフェースのデフォルト実装等クラス継承と同じ実装継承を使うことになる
でもクラス継承はとにかく悪だと思ってる人は実装継承のメリットとデメリットを正しく理解できてないから結局同じ問題を引き起こすだけ
インターフェースだけだとコピペ継承が乱立するんだよ
そこでインターフェースのデフォルト実装等クラス継承と同じ実装継承を使うことになる
でもクラス継承はとにかく悪だと思ってる人は実装継承のメリットとデメリットを正しく理解できてないから結局同じ問題を引き起こすだけ
682デフォルトの名無しさん
2024/01/19(金) 22:05:02.77ID:yy9dhl7c683デフォルトの名無しさん
2024/01/19(金) 22:20:13.70ID:XrKZZkrv >>680
5chで勝手にクソ仕様認定してるクソレスを気にする人はいないw
5chで勝手にクソ仕様認定してるクソレスを気にする人はいないw
684デフォルトの名無しさん
2024/01/19(金) 22:21:58.98ID:sTJV5iPD 顧客に設計なんか分からないから突き進むだろ
685デフォルトの名無しさん
2024/01/19(金) 22:22:17.78ID:EWU8L+d2 >>681
その点ではRustのtraitが最も良いね
Rustのtraitでのデフォルト実装は各型のメンバーや固有メソッドを呼び出せないので実装継承の問題が起きない
そのtrait(とそのtrait制約)のメソッドしか呼び出せないから移譲と合成の形になる
その点ではRustのtraitが最も良いね
Rustのtraitでのデフォルト実装は各型のメンバーや固有メソッドを呼び出せないので実装継承の問題が起きない
そのtrait(とそのtrait制約)のメソッドしか呼び出せないから移譲と合成の形になる
686デフォルトの名無しさん
2024/01/19(金) 22:54:39.62ID:2Txscu7W >>685
こういう感じで言語によって前提が違う場合があるから抽象的な議論の有効性はかなり微妙
こういう感じで言語によって前提が違う場合があるから抽象的な議論の有効性はかなり微妙
687デフォルトの名無しさん
2024/01/19(金) 23:13:57.01ID:k/iqMx14 >>685
はい残念
Traitのデフォルト実装も実装継承だからクラス継承のデメリットの大半を”継承”してる
メリットとデメリットを理解して使い分けられるようにならないうちは結局のところ何使っても同じ
はい残念
Traitのデフォルト実装も実装継承だからクラス継承のデメリットの大半を”継承”してる
メリットとデメリットを理解して使い分けられるようにならないうちは結局のところ何使っても同じ
688デフォルトの名無しさん
2024/01/19(金) 23:19:40.83ID:EWU8L+d2689デフォルトの名無しさん
2024/01/19(金) 23:28:42.74ID:2Txscu7W 何で堂々と嘘つく?
嘘言った人謝ってください
嘘言った人謝ってください
690デフォルトの名無しさん
2024/01/19(金) 23:32:10.71ID:EWU8L+d2 >>687はコードを書いたことがないのか
あるいは意図的に嘘ついているのか
あるいは意図的に嘘ついているのか
691デフォルトの名無しさん
2024/01/19(金) 23:44:00.48ID:jOoBVxG+ インターフェースは継承と違ってインターフェースもとのプロパティをオーバーロードして定義し直すから、継承のわけわからん隠蔽されてないプロパティでごっちゃごちゃにならないのがいい(java民)
692デフォルトの名無しさん
2024/01/20(土) 02:15:01.44ID:pJVjc8l1 オブシコくんどこいったん?
インターフェイスは人間が理解しやすくするためのものだと力説しなよ
インターフェイスは人間が理解しやすくするためのものだと力説しなよ
693デフォルトの名無しさん
2024/01/20(土) 02:28:42.63ID:9SMgv4xr 疑似マルチスレッド君も反応ないんやけど、こないならQiita更新してくれよー
694デフォルトの名無しさん
2024/01/20(土) 03:07:14.53ID:ppE6WkEJ695デフォルトの名無しさん
2024/01/20(土) 03:09:43.76ID:ppE6WkEJ696デフォルトの名無しさん
2024/01/20(土) 05:41:23.80ID:OqC8H1ED >>694
そもそもはある具体型A(もしくはクラスA以下同様)の実装が別の具体型Bの実装として継承されることを指すよね
一方でRustのトレイトのデフォルト実装では具体型の実装は全く出て来なくて具体型とは切り離されているよね
したがってある具体型の実装が別の具体型の実装として継承されることは起きないため明確かな
そもそもはある具体型A(もしくはクラスA以下同様)の実装が別の具体型Bの実装として継承されることを指すよね
一方でRustのトレイトのデフォルト実装では具体型の実装は全く出て来なくて具体型とは切り離されているよね
したがってある具体型の実装が別の具体型の実装として継承されることは起きないため明確かな
697デフォルトの名無しさん
2024/01/20(土) 09:43:00.30ID:tKcafxZR 継承用の基底クラスを提供するのはライブラリやフレームワークで、フロント屋はその提供された基底クラスを継承して使う
フロント屋は用意された基底クラスを使う以外はインターフェースやシールドクラスで継承もどきをやるだけで事足りてる
フロント屋は用意された基底クラスを使う以外はインターフェースやシールドクラスで継承もどきをやるだけで事足りてる
698デフォルトの名無しさん
2024/01/20(土) 10:27:27.05ID:mMSNo4e1 staticおじさんが結局正しかったね。
699デフォルトの名無しさん
2024/01/20(土) 10:38:22.56ID:WbtYcj4O うん、知らんけど
700デフォルトの名無しさん
2024/01/20(土) 11:13:01.53ID:ppE6WkEJ >>696
いま思い出したことなんだけど。具体型の継承はできないと思うけど、traitをtraitに実装するということが出来る
traitAにデフォルト実装を書いて、traitBに実装すると、traitBを実装した型はtraitAのデフォルト実装を引き継ぐ
いま思い出したことなんだけど。具体型の継承はできないと思うけど、traitをtraitに実装するということが出来る
traitAにデフォルト実装を書いて、traitBに実装すると、traitBを実装した型はtraitAのデフォルト実装を引き継ぐ
701デフォルトの名無しさん
2024/01/20(土) 11:29:56.55ID:ppE6WkEJ trait TraitA {
fn method_a(&self);
}
trait TraitB {
fn method_b(&self) {
println!("Method B called");
}
}
// TraitBをTraitAを実装するすべての型に対して実装する
impl<T: TraitA> TraitB for T {}
struct MyStruct;
// MyStructにTraitAを実装する
impl TraitA for MyStruct {
fn method_a(&self) {
println!("Method A called");
}
}
fn main() {
let my_struct = MyStruct;
my_struct.method_a(); // TraitAのメソッド
my_struct.method_b(); // TraitBのメソッド(TraitAを実装するため自動的に利用可能)
}
fn method_a(&self);
}
trait TraitB {
fn method_b(&self) {
println!("Method B called");
}
}
// TraitBをTraitAを実装するすべての型に対して実装する
impl<T: TraitA> TraitB for T {}
struct MyStruct;
// MyStructにTraitAを実装する
impl TraitA for MyStruct {
fn method_a(&self) {
println!("Method A called");
}
}
fn main() {
let my_struct = MyStruct;
my_struct.method_a(); // TraitAのメソッド
my_struct.method_b(); // TraitBのメソッド(TraitAを実装するため自動的に利用可能)
}
702デフォルトの名無しさん
2024/01/20(土) 11:37:18.66ID:ppE6WkEJ Rustに多重継承は存在しないという場合、意味的にはフィールドを継承しないことと、
スーパートレイトを使用すれば、トレイトのデフォルト実装を別のトレイトに暗黙では引き継がないことを指すんじゃないかな
かな、というのは、まあここら辺は人によって受け取り方が違うから議論しても仕方のないことなんだけど
スーパートレイトを使用すれば、トレイトのデフォルト実装を別のトレイトに暗黙では引き継がないことを指すんじゃないかな
かな、というのは、まあここら辺は人によって受け取り方が違うから議論しても仕方のないことなんだけど
703デフォルトの名無しさん
2024/01/20(土) 12:00:42.41ID:+uoYRouQ704デフォルトの名無しさん
2024/01/20(土) 12:26:39.60ID:pJVjc8l1 実装継承ではないのか、実装継承における問題が発生しないだけなのか、どっちなんだい?
705デフォルトの名無しさん
2024/01/20(土) 12:38:21.50ID:+uoYRouQ706デフォルトの名無しさん
2024/01/20(土) 12:39:32.26ID:BTn7foKi 実装継承ができないと不便じゃない?
リソース管理を一元化したくなったりとかしないの?
リソース管理を一元化したくなったりとかしないの?
707デフォルトの名無しさん
2024/01/20(土) 12:40:39.50ID:BTn7foKi Rustにも実装継承はあるんじゃないかな
708デフォルトの名無しさん
2024/01/20(土) 12:53:48.29ID:UT8XEnd7709デフォルトの名無しさん
2024/01/20(土) 12:58:32.97ID:S3QqAIL4 ジェネリックで書いてコンパイラに整合性を取らせる
うむ、完璧だ
うむ、完璧だ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本の立場説明へ…外務省局長が北京到着 “台湾有事”首相答弁に中国反発 ★3 [煮卵★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★2 [蚤の市★]
- NHK、受信料の未払い世帯に督促強化へ 民事手続きの新組織を設置 差し押さえなどの強制執行も [1ゲットロボ★]
- 橋下徹氏「この喧嘩は日本の完敗」 台湾有事答弁めぐる外務省局長訪中で指摘「中国に怒られてご説明に伺った日本と見られる」 [muffin★]
- 【日本大使館】中国在留邦人は安全確保を [ぐれ★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- やす子「ここまで総理大臣が自らズバッと言ったのは初めて。日本の防衛力も大きく変わっていく」 [485187932]
- 韓国、泥船から爆速で逃げ出す 「高市…さん…でしたっけ?」 [878970802]
- 高市早苗の中国問題、「オーバーツーリズムが解消されてウザい中国人が消えるから日本の勝ち」という風潮になってしまう [562983582]
- 【忖度】野村総研、痛恨のミス!中国人の訪日自粛で2兆2000億円の経済損失!と、はじいたが誤りだった。4000億減って1.8兆円。高市 [219241683]
- 【悲報】有名ウヨ論客、「現実的に考えて中国と仲直りするしかなくね?」と言ったら野良ウヨから総叩きにあう [856698234]
- 愛国者ナザレンコ「左翼は自己中な差別主義者で偽善者。日本人ファーストを叩いておいて台湾人が死んでも知らな〜いでしょ。中露の犬」 [856698234]
