オブジェクト指向を教えてくれ!

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2021/03/16(火) 17:06:02.41ID:VhqTt897
オブジェクト指向について、調べれば調べるほど疑問が募ります。低レベルで粗末な疑問かも知れませんが、ご教授願いたいです。

・データと振る舞いをまとめる?
まとめると何か良いことあるの?
ファイルあるいはモジュールにはまとまってるよね?
丁度いい単位があるのに、何故わざわざオブジェクトという概念を導入するの?
(Javaには1ファイル1クラスという文化あるらしいけど)

・カプセル化?
モジュールのimport, exportでも実現出来るよね?
(構造体などへのアクセスを制限できれば)

・ポリモーフィズム?
別にデータと振る舞いをまとめなくても実現出来るよね?

・モノのように扱いたい?
モノとして扱いたいときに扱えば良くない? なんでわざわざ全てをオブジェクトにするの?
2021/03/21(日) 16:35:55.51ID:7CdIp7EP
カモノハシはどうするの?
哺乳類クラスを修正したら、
そのままでは犬も卵を産むことに。
生成時に決めるように修正しても、
結局既存の犬生成コード部分を書き換える必要が発生w
254デフォルトの名無しさん
垢版 |
2021/03/21(日) 16:54:19.91ID:r4JsJNzA
>>250
デザインパターンの一つにステートパターンがあるから
ケースバイケースだと思う

モノはオブジェクトの日本語訳だと思うよ
255デフォルトの名無しさん
垢版 |
2021/03/21(日) 16:55:36.73ID:r4JsJNzA
>>253
胎生は哺乳類の定義に含まれないから哺乳類クラスを修正するわけがないでしょう
字の通りおっぱいで子どもを育てるから哺乳類
2021/03/21(日) 17:00:01.27ID:EFuwFCQc
生物に例える事自体プログラムから離れるんだよなゲームキャラクラスから色々派生させるなら実感湧くけどな

クソみたいな喩え嫌いだわ
2021/03/21(日) 17:05:59.14ID:NzzrjUyG
そもそも共通項でないものを親クラスに書くなっていう、そんな基礎から説明しなきゃいけないやつがいることに頭が痛い
2021/03/21(日) 17:22:19.47ID:ut0JDDIv
オブジェクト指向がどうというより、その辺はDDDの話なわけでそっちでやれや
2021/03/21(日) 18:19:03.28ID:94KU488c
>>258
その辺てどの辺のこと?
2021/03/21(日) 19:02:44.42ID:7CdIp7EP
>>257
哺乳類とカモノハシはたとえだろ。
設計時犬、猫、馬のみがあって、
胎生は共通だからクラスに書く、
その後カモノハシ追加という流れ。
こんなことすら分からんとはw
2021/03/21(日) 19:05:07.50ID:mcdxekq2
>>256
現実のモノ(オブジェクト)に例える事自体プログラムから離れるんだよなオブジェクト指向の喩え嫌いだわ
262デフォルトの名無しさん
垢版 |
2021/03/21(日) 19:42:33.12ID:13RrOcps
>>261
チンポ【を】しこしこするのではなくて、チンポ【が】しこしこする。これがオブジェクト指向。
263デフォルトの名無しさん
垢版 |
2021/03/21(日) 19:45:36.17ID:13RrOcps
(不適切な関係,クリントン,ルインスキー) -> {return フェラチオ}

クリントン元大統領が真実を告白「モニカと口淫行為を…」
https://www.nikkan-gendai.com/articles/view/geinox/277220
264デフォルトの名無しさん
垢版 |
2021/03/21(日) 19:56:22.57ID:13RrOcps
オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンポ)が別々になっている場合とが考えられるが、

>>99
>たしかObjective-Cのドキュメントで「継承じゃなくてコンポジット大事。」な例で扱われてたかな。

チンポはそれ自体が独立した主体生物とは考えられないのか???

自我ーーーーーーーーーーーーー
┃             ┃
┃             ┃
┃             ┃
┃             ┃
┃             ┃
ーーーーーーーーーーーーーーー
     ┃チンポ┃
      ̄ ̄ ̄ ̄
チンポは自我の拡張クラスね!
265デフォルトの名無しさん
垢版 |
2021/03/21(日) 20:00:11.81ID:3jvKXp5s
哺乳類クラスを継承した犬クラスと猫クラスがあるんですよ。

これが理解できなくてオブジェクト指向に躓く人が多いんですね。
266デフォルトの名無しさん
垢版 |
2021/03/21(日) 20:05:38.68ID:13RrOcps
241 伝説の名無しさん sage 2020/10/13(火) 15:00:15.08
「胸がドキドキする」というのはいわば生理現象であり、抑えることはほぼ不可能だ。
月末のクレジットカードの支払額に、想像以上に可愛かったデリヘル嬢のおマンコにと胸を
突かれるのは悪いことではない。

翻って「チンポがシコシコする」というのは能動的な衝動であり、極めて不埒な責任転嫁である。
シコシコはチンポが勝手にやったことであり、決してチンポの持ち主の意向ではないという、どこぞの
政治家の「秘書が勝手にやったこと」のような言い逃れがしばしば聞かれ、あまつさえそれがまかり
通ってきたことは周知の事実である。

チンポからシコシコを奪取し、各人の掌に戻る日は果たしてやってくるのだろうか……。
267デフォルトの名無しさん
垢版 |
2021/03/21(日) 20:16:23.90ID:AAyNc4g+
いつものように理解できないから荒らし始めたなー
この板の「オブジェクト指向」ってついたクソスレすべてに共通する流れだ。
10年以上それやってるだろうにまだオブジェクト指向わかんないってのがすげぇよ。
2021/03/21(日) 20:17:24.52ID:NzzrjUyG
>>260
お前、本当に頭悪いな
カモノハシだけ例外なら、カモノハシの胎生メソッドをオーバーライドすれば済む話だろ
なんで共通項でもないものを親クラスにぶち込んだり、問題なく動いている兄弟クラスにテコ入れするんだよ
269デフォルトの名無しさん
垢版 |
2021/03/21(日) 20:32:21.80ID:13RrOcps
中学の時、女子のブルマ姿に欲情しながら、子供が欲しい訳でも無いのに、
何でチンポが勝手にしこしこするのかと、これは何と非合理なのかと思ってた。
270デフォルトの名無しさん
垢版 |
2021/03/21(日) 20:43:42.20ID:13RrOcps
自然言語では、どんどん新しい単語が生まれるし、単語の定義は変わることがある。
それはもちろん流行り言葉もそうだが、より基幹的な単語についてもそれは当てはまる。
例えばWikipediaを見ると、ペニスはオスの持つ生殖器とされている。
しかし近年、ペニスを持つメスが発見された。
https://qiita.com/dorarep/items/803b874858a961ce2a5a
2021/03/21(日) 20:54:32.52ID:mqfsmAhv
実際は哺乳類ってなんだと考えるのがオブジェクト指向
いい哺乳類を定義するプログラミングが肝心
272デフォルトの名無しさん
垢版 |
2021/03/21(日) 20:56:03.06ID:3jvKXp5s
クラス継承権第一位、アワシロ王子ですぞ。
273デフォルトの名無しさん
垢版 |
2021/03/21(日) 21:05:30.85ID:13RrOcps
ここでは、筋肉の構造力学から得られる情報を基に、全身のモデルとその制御システムを作製し、
実際の人体の動きを再現することを目的とします。人体の動きを再現するために、深層強化学習を用いて
人体の特徴やその制御方法について再現可能かつ確かなシミュレーションを入念に行いました。
このモデルを用いて、弱まった筋肉や、補装具をつけた部位など、身体的に負担のある人体の動きの予測も
可能です。加えて、モデルの活用例として、外科手術の3 Dモデリングによるシュミレーションも行っています。
https://ai-scholar.tech/articles/treatise/deep-3d-ai-118

>>261
>現実のモノ(オブジェクト)に例える事自体プログラムから離れるんだよな

人工知能とはオブジェクト指向への果て無き追求のことだ!
2021/03/21(日) 23:20:16.28ID:ZMzh4Q+Z
クリスマスって日本の文化で例えると正月みたいなもんだ。っていう説明を聞いて、
正月に例えるとクリスマスから離れるだよな
とかいう感想を言うやつってアホだと思うわ

例えというのは、相手が知ってるであろう”別のモノ"を
使って説明するから、離れるのは当たり前だろ

知らない人に説明するという目的を果たそうとしてる所に現れて
その説明は正確じゃないから完璧な説明を「知らない人」に言って
相手が理解できいないのを見て自己満足したいだけだろ
275デフォルトの名無しさん
垢版 |
2021/03/21(日) 23:41:32.74ID:13RrOcps
>>274
チンポは古今東西共通で、チンポはチンポで何も変わらないぞ?
2021/03/22(月) 00:05:42.50ID:I5Qr/ufQ
どうせチンポはお前自身のことであるっていったら
俺はチンポじゃねーぞっていうんだろ?
2021/03/22(月) 00:38:56.07ID:TakJ5P2I
コンピューターで例を出すと
入力装置: キーボード、マイク、カメラ
出力装置: ディスプレイ、スピーカー
でもタッチパネルはどうする?
2021/03/22(月) 00:50:03.86ID:WeOWS/ni
>>277
入力 -> 何らかのアクション -> 出力
と繋がるのであって、入力と出力が同一である必要はない
入力装置のタッチパネルと出力装置のタッチパネルで済む
その為の名前空間
2021/03/22(月) 00:58:10.24ID:tF80uLah
unityでは全てをゲームオブジェクトとして扱います。
2021/03/22(月) 01:12:55.25ID:yb8Fz4ep
泥ではタッチパネルは触ると現れる複数のマウスみたいに取得できる既存のHIDとは別物よね
281デフォルトの名無しさん
垢版 |
2021/03/22(月) 06:26:21.92ID:x5QOR3yt
>>232
無駄待ちしない非同期プログラミングは特定の言語に依存しない一般的なプログラミング手法。
どの言語でもそれが直接見えるか否かに関わらず一番下では当然コールバックになっている。
例えばそれを遅延してコールバック指定できるタイプのfutureやpromiseを返り値としてもらうのはデザインパターンの問題。
こうすることでターゲットのオブジェクトに直接コールバックを渡すのではなくfutureやpromiseを介することで自分側で制御できる。
更にそれを表記上はコールバックをしているように見せないためにco-routineやgeneratorを使って見た目だけ同期っぽく書くことも可能。
つまり表記上は無駄待ちでブロックされる同期呼び出しとほぼ同じ形でコーディングが出来る。
そしてそれら上記を全て意識せずに簡潔に書けるようにしたものがいわゆるasync/awaitとなる。
この正しいawaitを用いれば見た目は同期呼び出しなコードなのに実態は非同期呼び出しかつ無駄待ちせずそのスレッド自体がその間も他のコードを実行可能となる。
これにより例えばシングルスレッドのみ使用であっても多数の通信やファイルアクセスなどを一切無駄待ちせずに非同期に並行して効率よく処理することが可能となる。

具体的に複数の最終的にコールバックされるペンディング状態を管理するのは多くの場合にメインのイベントループオブジェクトである。
これは言語によっては言語に内在するケースもあれば標準モジュール/ライブラリとして提供される場合もあれば自作する場合もある。
抽象化された上位のものを用いていてもその内部では結局select()やpoll()などのシステムコールが中核に位置することになる。
このオブジェクトで多数のファイルディスクリプタ(通信も結局ソケットなのでこれになる)管理とタイマー管理などを集中管理する。
全てのコールバックはここから直接もしくはfutureやpromiseなどを介して行われることになる。
これらの機構が直接見えるかどうかは各言語およびどこまで抽象化されたライブラリを用いるのかに依存する。
例えば貴方が言及しているJavaScriptではブラウザとNode.jsどちらも実行環境に内在されているため利用者は自分で準備や構築をする必要はない。
2021/03/22(月) 09:17:51.06ID:x00cBpIW
>>281
僕は彼の人が非同期のプログラムを書いたことがあるのか知りたかったのですが、あなたは仕組みを教えてくれてるんですね、ありがとうございます、物知りですね
2021/03/22(月) 09:30:31.18ID:x00cBpIW
>>281
IOが関わらない非同期はJavaScriptではどのように実現されてるのですか?
2021/03/22(月) 09:34:57.61ID:x00cBpIW
ググって見たんですけどselectやpollは効率が悪いからepollを使うのがいいらしいです、ファイルIOはどれもまともに動かないのでスレッドで処理するのが良いらしいですけど、JavaScriptは実際どうやってるんですか? node.jsで良いです、教えて下さい
2021/03/22(月) 09:36:25.58ID:x00cBpIW
僕は教えてもらうことで成長し、君は僕に教えることで認識を深めるwinwinの関係ですね
2021/03/22(月) 09:44:25.50ID:Fu8SVDJA
うわ、気持ち悪い
2021/03/22(月) 10:10:17.71ID:x00cBpIW
>>286
一緒に学んで心も技術も一回り大きな自分になりましょう、挫けそうになったら助け合ってともに頑張りましょう、仲間がいるから僕たちはもっと成長できる!!
2021/03/22(月) 10:25:03.99ID:x00cBpIW
前向きな言葉が弱点の皆さん
2021/03/22(月) 11:17:08.32ID:x00cBpIW
c10kが問題になったのは20年前

asyncで何でも非同期にすれば効率良いと思われたのが10年前

基本同期で処理して局所的に非同期にしたが効率良いことが実証されたのが今

だと僕は思ってます
2021/03/22(月) 11:18:32.73ID:x00cBpIW
ゴルチンのような軽量スレッドが僕は好き
2021/03/22(月) 11:39:21.71ID:I5Qr/ufQ
ゴルビー「呼んだかね?」
292デフォルトの名無しさん
垢版 |
2021/03/22(月) 11:55:37.37ID:RwMeMA9S
ソースコードの表現論の問題だ

逐次実行の数学的な表現方法が今のテキストベースのコードだ
時間を無視して一瞬で終わることを念頭に作られている

今は時間や状態の関与が著しい
だから50〜60年代に確立された学術的・数学的なコード表現と乖離している
2021/03/22(月) 11:59:23.25ID:I5Qr/ufQ
50〜60年代に確立されたと思われていた技術は
現代の需要の前にはやくたたずという話
294デフォルトの名無しさん
垢版 |
2021/03/22(月) 12:05:10.19ID:x00cBpIW
>>292
テキストベースでないコードがあるんですかね
CPUは進化してるので時間を気にしなくてよくなってると思うんですがね
2021/03/22(月) 12:08:15.10ID:Fu8SVDJA
>>285
>>287
そういうのは教える側が言うなら分かるが、一方的に教わるだけの側が言っても身勝手で虫がいいと思われるだけだぞ
2021/03/22(月) 12:25:30.91ID:6HRP8SH5
Unixのパクリのlinuxが未だにサーバー側では使われているのに古い技術は役立たずとか
時間を無視してうんぬんは言っている事が無茶苦茶w
今の方が早くなっているからちょっとした処理の時間なんか無視出来るのになw
297デフォルトの名無しさん
垢版 |
2021/03/22(月) 12:26:42.96ID:x00cBpIW
>>295
身勝手に仕組みを説明される身にもなってくださいよ
それこそ都合の良いときだけ身勝手な説明して
聞き手である僕に何の配慮もないじゃないですか
だから僕は教えて欲しいことを提示したんです
知ってるなら教えてください、知らないなら調べて教えてください
それが義務です
298デフォルトの名無しさん
垢版 |
2021/03/22(月) 12:55:46.85ID:9X3JwgJU
>>276
>チンポはお前自身のことであるっていったら

寝ている間にも勃起して射精するんだが?
299デフォルトの名無しさん
垢版 |
2021/03/22(月) 12:58:29.22ID:9X3JwgJU
>>276
>チンポはお前自身のことであるっていったら

自分の体内にあっても、独立して自らの意思で勃起する不思議な生き物なんだが?
2021/03/22(月) 13:00:12.05ID:SUSoLlGT
>>281
パッションを感じた
2021/03/22(月) 15:40:32.92ID:39Z4o49p
動物に例える 初心者を煙に巻くクソ講釈
チンコ 論外
通信処理実装の良し悪し 専用スレでやれ

んなとこですかね
302デフォルトの名無しさん
垢版 |
2021/03/22(月) 18:37:44.96ID:PRTGZJOD
あわしろ氏もそう言ってたね。
303デフォルトの名無しさん
垢版 |
2021/03/22(月) 18:38:57.90ID:PRTGZJOD
犬 is a 哺乳類。
犬 has a チンポ。

と、あわしろ氏に教わったけどな。
304デフォルトの名無しさん
垢版 |
2021/03/22(月) 19:39:45.22ID:GLNo6tkc
クラスの中にメソッドとプロパティを用意してなんとなく動きそうなコードを入れたらオブジェクト指向の完成
2021/03/22(月) 19:47:22.48ID:OrqUDDB9
アランケイ「グラス…? 知らない子ですね…」
306デフォルトの名無しさん
垢版 |
2021/03/23(火) 12:50:24.24ID:Nt0Nwanu
オブジェクト指向には、カメラがやっとついたころのガラケーのイメージがある
https://itnews.org/news_resources/269441?ref=index
307デフォルトの名無しさん
垢版 |
2021/03/23(火) 13:08:40.44ID:zJhbkGQn
オブジェクト指向が理解できなくて挫折した恨みで
これまたよくわかってない関数型とか持ち上げて
掲示板で“こっちが最新だから俺が偉い”なんて朝鮮人みたいなことやるのは勝手だが
オブジェクト指向はリアルタイム同期とれない処理の分離のための手法だから
プロセス同士の通信はオブジェクト指向で中身関数型になるだけで
おまえは結局永久にどこにも属さない頭わるいクズのままやぞ。
2021/03/23(火) 13:21:30.70ID:x1lK70UU
>>306
ガラケーのメリット・デメリットを理解した上で状況に応じて技術を選択できるようになることが一番重要

特にオブジェクト指向に対する理解は古いから必要がないと言って捨てられるような段階にはまだ至ってない

オブジェクト指向は不要と考えるのはオブジェクト指向が全てと考えるのと同程度に危険
2021/03/23(火) 13:28:19.50ID:71b8io/J
正直、不要かなと思ってる。
アーキテクチャやテストの文脈でオブジェクト指向を語るのは意味あるが
設計に持ち込んだ話はロクでもない比喩表現で現場を混乱させるだけで何のメリットもなかったというところ。
バカがこれはオブジェクト指向だ、いや違うみたいなクソ議論で時間が際限なく減っていくという
生産性のかけらもない状況になる。
310デフォルトの名無しさん
垢版 |
2021/03/23(火) 13:34:24.00ID:9/alufVN
DDDは今一番うさんくさい
2021/03/23(火) 13:36:21.43ID:4WeCuDYM
TDDも頭がおかしい
2021/03/23(火) 14:22:33.56ID:cAavqfqg
オブジェクト指向もDDDもTDDも同じ
二元思考や教条主義的思考をしてるうちは技術者としては未熟
2021/03/23(火) 14:31:56.40ID:71b8io/J
TDDに対してはそこまで嫌悪感薄いかな。
確かにやりすぎだとは思うが、あれくらいやらないと全くテスト書かなかったってのが
この業界の状態だったし。
2021/03/23(火) 14:37:23.06ID:F+u4e0wQ
>>307
>オブジェクト指向はリアルタイム同期とれない処理の分離のための手法だから

だからこれがお前だけの勝手な定義だっていい加減気づけよ
釣りなのか?
赤の他人相手にマイ言語喋ってんじゃねーよ
一般的な意味をググってこいカス
315デフォルトの名無しさん
垢版 |
2021/03/23(火) 14:48:08.81ID:4vKYP3ji
>>314
>だからこれがお前だけの勝手な定義だっていい加減気づけよ

ならば「チンポがシコシコする」という日本語表現は、学術的に正しいと言えるのか?

チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。

オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンポ)が別々になっている場合とが考えられる。けれども「チンポ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、自ら勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。

違うか?

「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!
316デフォルトの名無しさん
垢版 |
2021/03/23(火) 14:53:44.18ID:4vKYP3ji
24 名無しさん@ゴーゴーゴーゴー! (JP 0H82-LX7o [153.145.207.163]) 2019/11/23(土) 16:54:55.03 ID:l9637O/lH
https://i.imgur.com/1VuRIrP.jpg
317デフォルトの名無しさん
垢版 |
2021/03/23(火) 15:07:03.89ID:4vKYP3ji
    _w           、...   ョ  ┌┐     ィ     ′  
    ̄+     ヘe、   j「.  .¬气¬''..~''~    ,.ルw、.ーu、す     
  ^^"~~l|~~^'''       ォ′   .,. l| ┐      .√ j|  _~+,.、. 
 .   .,/.      ょ_/    、j「 {  `¬..   〃 .、l|    、  
 ..  ~^.               ~  `          ~^      
 .  ;.                 ョ         __      
 .  j|       ~ラ¬¬+     |.        ̄.   ̄..    
 .  オ                 |..   ォ        ,、  
    k、 ,j〃.   L_.  _ェ    ~'――'~.   ^^^^^^ ̄´    
      ̄′       ̄ ̄                        
318デフォルトの名無しさん
垢版 |
2021/03/23(火) 16:00:22.31ID:17Lvs7QY
Smalltalkなんてカーネルまでリアルタイム環境でしょ
2021/03/23(火) 17:09:14.78ID:l0wWKLHT
胸がドキドキはI have Heart.の関係
my->heart->dokidoki();で表現できる

しかしチンポがシコシコは私のチンポ、私の手が並列な存在として登場している
my->hand->shikoshiko(my->chimpo())
320デフォルトの名無しさん
垢版 |
2021/03/23(火) 19:54:44.75ID:Q41JWK4n
あわしろ氏によると、チンポの多態性って事らしいぞ。
2021/03/23(火) 21:38:00.19ID:uZ0mdglR
あわしろ氏によると、発生学的には男性のペニスと女性のクリトリスは相同器官ってことらしい。
322デフォルトの名無しさん
垢版 |
2021/03/23(火) 22:26:49.52ID:+b4VhZl/
>>320
オシッコの時のチンポと射精の時のチンポは、全く別なんだが?
323デフォルトの名無しさん
垢版 |
2021/03/23(火) 22:34:24.83ID:7qA8sx7r
オシッコは公開型(自我で制御可能)、射精は非公開型(自我で制御不能)、非カプセル型とカプセル型の使い分け。
2021/03/23(火) 22:51:56.12ID:R5hci06k
ttps://banners-cdn77.trafficfactory.biz/banners/97/86/44/9c6bd11708de8f89770062384253e134.gif
325デフォルトの名無しさん
垢版 |
2021/03/24(水) 01:07:59.19ID:9BAge54+
Laravel使ってるんだけどDIとか言うのがわからん
interfaceを使って疎結合って何?

今のコードの書き方は依存しすぎててダメだと言うことは気づいたけど
それを治すための理屈が頭に入ってこない
interfaceとやらを使う利点がよくわからん

抽象的に依存するとか、もう意味のわからない単語が並んでる
誰か教えてくれ!
2021/03/24(水) 02:28:09.49ID:HEdEJwPg
>>325
Laravelのサービスコンテナのドキュメント
https://readouble.com/laravel/6.x/ja/container.html
とりあえずここ読んで分からなければPHPのスレで聞いてくれ
327デフォルトの名無しさん
垢版 |
2021/03/24(水) 10:01:36.85ID:th6pGE+F
>>325
たとえば、こういうクラスがあったとして
https://paiza.io/projects/EmYovJbLF2HVGHjC0SMeRA

ペットを犬から猫に変えたいときはCatクラスを作って
Personクラスを修正しないといけないっしょ

あるオブジェクトを変えるときにそれを使うオブジェクトにまで
変更を波及させないのがインターフェイスのメリット
328デフォルトの名無しさん
垢版 |
2021/03/24(水) 10:16:15.80ID:th6pGE+F
こういうふうに、動物インターフェイスを作って
犬や猫のオブジェクトがそのインターフェイスを実装する
ようにすれば犬を猫に差し替えてもPersonクラスを修正する必要はないってこと
https://dotup.org/uploda/dotup.org2424520.png

あるオブジェクトを使うとき、そのオブジェクトを直接参照すると、使う方が使われる方に依存してしまう
電球取り替えようとしたら本体まで取り替えないといけないみたいな状況になるんよ

インターフェイスを使うと使われる方が使うほうに依存するようにできる
図を見るとインターフェイスを使うことで人から犬の矢印が、逆向きになってるのがわかるっしょ
インターフェイスを使うと依存性を逆転させることができます
2021/03/24(水) 11:20:23.01ID:wI7ZP5Wk
>>325
たぶんあんたの場合DI以前の問題
DIを導入した所で何も解決しない

そもそもDIは依存をなくしましょうパターンじゃない
(実装に依存するのではなくて)インターフェースの方に依存しましょうというパターン
インターフェースがわからないなら、それは実装とインターフェースが一体化してるということ
一体化してるということは、実装が一つに対してインターフェースも一つあるということ
そういう設計が駄目と言ってるわけじゃないし、実際実装が一つしかいらないならそうなる。

そういう状態で「依存しすぎて駄目だ」って気づいたんでしょ?
現在はコードが分類分けされてないどっかのコードに意味不明に
依存しまくっていてごちゃごちゃしてるだけだろう
それならDIで解決する問題じゃない。あんたがやらないといけないのは
コードを責務に合わせてちゃんとファイルに分離すること

そうやって分離して依存関係がスッキリしてきて、なおかつ単体テストをする時に
外部の依存をモックなどに入れ替えてテストしたいって時にDIがでてくる
モック以外でも設定ファイルで使用するモジュールを切り替える仕組みとかでDIは使えるんだが
そういう仕組にしたいときはDIを使わないでもDIに近い仕組みを自分で作るので
DIはほぼ単体テストをしやすくするためのものだと思っていい
2021/03/24(水) 17:53:22.36ID:+/vOTBzF
>>297
役に立たない単発質問スレ立てといてこんなこと書くとかどこまでもクズ
自分で調べて自分で解決してクソスレ立てんな
331デフォルトの名無しさん
垢版 |
2021/03/24(水) 18:01:32.91ID:c7MwgsNP
タイヤ が パンク  してしまつまた!

チンポ が シコシコ してしまった!
332デフォルトの名無しさん
垢版 |
2021/03/24(水) 18:35:13.96ID:lJe+FbJF
>>331
あわしろ氏による分類では、どちらもオブジェクトになってるね。
333デフォルトの名無しさん
垢版 |
2021/03/24(水) 18:37:26.68ID:th6pGE+F
>>330
役に立つかどうかは君が決めることじゃない(大正論)
僕はスレを立ててない(大事実)
君が調べて教えて欲しい、それが君の勉強です、君のためです(大説教)
334デフォルトの名無しさん
垢版 |
2021/03/24(水) 18:38:23.66ID:lJe+FbJF
オブジェクトアートでは?
335デフォルトの名無しさん
垢版 |
2021/03/24(水) 18:39:05.63ID:th6pGE+F
僕のことは大先生と呼んでくれ
336デフォルトの名無しさん
垢版 |
2021/03/24(水) 18:43:15.56ID:lJe+FbJF
大先生って、もしかして、あわしろ氏ですか?
337デフォルトの名無しさん
垢版 |
2021/03/24(水) 18:49:59.05ID:th6pGE+F
あわしろ氏って、いくやくんのこと? かわいいよねいくやくん
338デフォルトの名無しさん
垢版 |
2021/03/24(水) 19:09:55.68ID:lJe+FbJF
もしかして、イクヤきゅんのチンポ、舐めたいですか?
339デフォルトの名無しさん
垢版 |
2021/03/24(水) 22:38:11.41ID:9BAge54+
>>326
読んでみる
わからなかったらPHPスレいくわ!

>>327
インターフェイス使えば、Personクラスを修正しなくていいっていうのが利点か
依存性を逆転させて、使うクラスの方は一生変えなくていいから楽ってことか
とりあえず、インターフェイスを注入しとけばいいって事だな
完全に理解した!

>>329
ちょっと何を言ってるのか理解できなかった・・・
実装が一つじゃなくて、増えてきたらインターフェイスを使わないといけないという事で
とりあえずインターフェイス注入しとけばいいという話ではない?
2021/03/24(水) 22:41:46.03ID:wSlX1FDA
インターフェイス注入(笑)
2021/03/24(水) 23:03:51.20ID:QbxZqHqJ
依存注入ってあれしか思い浮かばない
2021/03/24(水) 23:06:18.94ID:iJEHwRKX
ttps://banners-cdn77.trafficfactory.biz/banners/ca/19/4d/9b26c92ef6ee4caeaf2ff48736b7feea.gif
2021/03/24(水) 23:08:00.70ID:wI7ZP5Wk
>>339
同じインターフェースを持つクラスが複数あるか?ほとんどないだろ?
そうすると、クラスファイルのメソッド定義部分を取り出した
インターフェースファイルが出来上がるだけなんだよ

そしてどうせ後からクラスのメソッドが増えたり消したりだろ?
そうするとインターフェースもメソッド増やしたり消したりすることになるんだよ
つまりこれは単なる二度手間というわけだ

最低限、ここまではわかってないといけない

その上でやっと、それなのになぜDIを使うんだ?
DIのメリットはなんなんだ?という話ができる。

そしてこの話↑ができるレベルに達していれば

> 今のコードの書き方は依存しすぎててダメだと言うことは気づいたけど
「依存しすぎててダメ」という発言はしないんだよ
なぜなら、そんなに依存してないコードを書ける力があるから

力がない人が、とりあえずインターフェースを使ってれば〜いいってことだな!
みたいに言うと、本当に単なる二度手間で終わる。お前やるべきことだけ理解していて
やるべき理由を理解してないだろ。使うクラスを一生変えなくていいなんてことはないんだよ。

DIを使う理由は
1. (コードでやろうと思えば出来るけど)設定ファイルで使うクラスを変えられるようにしたい
2. 依存してるクラスをテストクラスに置き換えて、単体テストをしたい
この2つなんで、その話が出てないのに「依存しすぎててダメ」という話をしたのであれば
DIを使ったとしても「依存しすぎててダメ」+「二度手間」にしかならない

DIうんぬんの前に「依存しすぎててダメ」と言う状態を
「頑張ったけどどうやってもここの依存を解消できない」と言うところまで持っていけ
2021/03/24(水) 23:09:50.24ID:wI7ZP5Wk
○ 2. 依存してるクラスをテスト用の(ダミーの)クラスに置き換えて、単体テストをしたい
2021/03/24(水) 23:12:29.72ID:arIdz1C1
>>339
理解力といい考え方といい、君センスあるわ
2021/03/24(水) 23:14:47.57ID:wI7ZP5Wk
>>345
なんでそんなレスしちゃったの?
友達とかでない限り、そんな褒める必要ないよねw
347デフォルトの名無しさん
垢版 |
2021/03/25(木) 01:19:44.19ID:BkWpfMCR
>>346
君がそんなに嫉妬する必要もないよw
2021/03/25(木) 02:29:43.43ID:iHGDxaVT
嫉妬の意味がわからん。>>339のどのを読んで理解力やセンスがあると思ったのか?
下線だけでいいから引いてみて
2021/03/25(木) 06:57:57.74ID:JJ2JPIgE
誉めてるんじゃなく皮肉かもよ
2021/03/25(木) 08:42:52.36ID:BkWpfMCR
なんで自分がほめられないんだと思ってるんでしょはいはい
2021/03/25(木) 08:44:33.23ID:BkWpfMCR
僕で良ければよしよししてあげても良いけどどうする?
2021/03/25(木) 08:45:37.25ID:/qqBioCD
よく伸びるネタスレになったな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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