オブジェクト指向とDIを分かりやすく例えて教えてくれ 3

レス数が1000を超えています。これ以上書き込みはできません。
1仕様書無しさん2018/05/19(土) 21:44:19.89
■ オブジェクト指向・デザインパターン(有用)
 
 わかり易い例
 class Dog extends Animal
 class Cat extends Animal

■ DI(ゴミ)

 DIとは?・・・オブジェクト指向の依存関係を"ひとまとめに"定義する部分と、それを利用するために
        オブジェクトを直接newするのではなく、DIコンテナにnewしてもらうパターン

 https://web.archive.org/web/20170707082300/http://kakutani.com/trans/fowler/injection.html

 > Dependency Injection の形式
 > Dependency Injection の基本的な考え方は、独立したオブジェクトを
 > Assembler(組み立て係)として用意し、 MovieFinder インタフェースの実装を
 > MovieLister クラスのフィールドへ適切に設定させるというものだ。
 > 依存関係は図2のようになる。


前スレ

オブジェクト指向とは 分かりやすく教えてくれ
https://medaka.5ch.net/test/read.cgi/prog/1521869966/

オブジェクト指向を分かりやすく例えて教えてくれ 2
https://medaka.5ch.net/test/read.cgi/prog/1525660302/

952仕様書無しさん2018/07/06(金) 21:09:27.16
>>948
なーんもわかってないね
ミスしないようになんてのは精神論だよ
部下に怒鳴り散らすバカと同じ
ミスはどうやってもある程度の確率で紛れこむという事実から目をそらすな
テストをサボるな
テストにためにインターフェースを使え

953仕様書無しさん2018/07/06(金) 21:10:48.35
>>950
前にも言っただろ理解してくれ
ラッパーだから今程度で済んでいたがこれがユーティリティだったらとっくにゲームオーバーだったんだよ
九死に一生を得るって奴だぜ

954仕様書無しさん2018/07/06(金) 21:12:42.08
>>951
隠蔽してるから柔軟に変えられるんだ
これさ
オブジェクト指向の基本中の基本な
基礎をおろそかにしちゃいかんぞキミ

955仕様書無しさん2018/07/06(金) 21:19:32.54
ラッパーが役に立つのは自分がつかうときだけだな
他人が作ったラッパーほど鬱陶しいものはない

956仕様書無しさん2018/07/06(金) 21:22:53.77
うっとおしくないけど
仮にうっとおしくてもいいんだよ

バカなやつに好き放題、生ライブラリでコード汚染されるより遥かにマシなんだな

957仕様書無しさん2018/07/06(金) 21:25:39.88
別にうっとおしくないけど
仮にうっとおしくてもそれでいいんだよ

バカなやつに好き放題、生ライブラリでコード汚染されるより遥かにマシなんだな

958仕様書無しさん2018/07/06(金) 21:29:32.80
対して文意がかわってないのに内容が気に食わなくて2重投稿してしまうメンタル
他人のコードを汚染呼ばわりする態度

きさまリファクタやろうだな鬱陶しい

959仕様書無しさん2018/07/06(金) 21:39:33.77
二重投稿は電波が弱いところ入ったからミスっただけだ
汚染コードは事実だろ
外部ライブラリをあっちこっちにばら撒く行為を汚染と言わずになんというのか

960仕様書無しさん2018/07/06(金) 22:37:18.97
じゃあなにか
jre.jar以外にはかたっぱしからラッパーつくってんのか?

そこまでして何がうれしいんだ

961仕様書無しさん2018/07/06(金) 22:38:36.92
こりゃだめだ通じん

962仕様書無しさん2018/07/06(金) 22:40:49.15
お前がいったことといったら
馬鹿なやつと汚染呼ばわりだけじゃねーか!!

通じてたまるか

963仕様書無しさん2018/07/07(土) 01:01:25.97
jre.jar(笑)

知ったかぶりはレスすんなよ

964仕様書無しさん2018/07/07(土) 01:02:15.45
なんかへんか?

965仕様書無しさん2018/07/07(土) 09:53:44.44

966仕様書無しさん2018/07/07(土) 10:07:05.45
> このViewModelが仕様通りに動くかどうかテストしたい場合、どうしますか?
> わざわざその時間になるまで待って動かしますか?
>
> それはさすがにありえないので、
> 任意の値を返せるTimeProviderのモックアップを作ってテストします。

一方俺は、コンストラクタで任意の時間を指定できるようにした
コードは短くなり、インターフェースなど不要になった

class GreetingViewModel {

 var now: Int

 init(now: Int) {
  self.now = now
 }

 func greet() -> String {
  switch self.now() {
  case (let hour) where (6 <= hour && hour <= 11):
   return "Good Morning"
  case (let hour) where (12 <= hour && hour <= 17):
   return "Good Afernoon"
  case (let hour) where (18 <= hour && hour <= 23) || (0 <= hour && hour <= 5):
   return "Good Evening"
  default:
   return "Hello"
  }
 }
}
var viewModel = GreetingViewModel(now: Calendar.current.component(.hour, from: Date()))
print(viewModel.greet())

967仕様書無しさん2018/07/07(土) 10:08:35.45
>>965
やっぱりDIを勘違いしてるなぁ

 DIとは?・・・オブジェクト指向の依存関係を"ひとまとめに"定義する部分と、それを利用するために
        オブジェクトを直接newするのではなく、DIコンテナにnewしてもらうパターン

 https://web.archive.org/web/20170707082300/http://kakutani.com/trans/fowler/injection.html

 > Dependency Injection の形式
 > Dependency Injection の基本的な考え方は、独立したオブジェクトを
 > Assembler(組み立て係)として用意し、 MovieFinder インタフェースの実装を
 > MovieLister クラスのフィールドへ適切に設定させるというものだ。
 > 依存関係は図2のようになる。


この依存関係の図2をみなよ

968仕様書無しさん2018/07/07(土) 10:12:28.71
Dependency Injection の基本的な考え方は、独立したオブジェクトを
Assembler(組み立て係)として用意するってところなんだが、
そのことについて全く触れていない

そしてそのAssembler(組み立て係)が、MovieFinder インタフェースの実装を
MovieLister クラスのフィールドへ適切に設定させるというものなんだが、
それについても全く触れていない

969仕様書無しさん2018/07/07(土) 10:48:01.81
そう思うなら指摘してあげなよ
これがDIだって広まってる

970仕様書無しさん2018/07/07(土) 10:48:58.23
次スレ

オブジェクト指向、DIとService Locatorの違いを教えて4
https://medaka.5ch.net/test/read.cgi/prog/1530928077/

971仕様書無しさん2018/07/07(土) 13:29:05.26
>>966
5時を引数にインスタンス化して1時間後にgreetしたらテストエラーになるだろ
ほらなDIを使わないからバグが量産されるんだよ

972仕様書無しさん2018/07/07(土) 13:41:57.60
>>971
それとDIになんの関係が?
DIって 独立したオブジェクトを
Assembler(組み立て係)として用意するって
ことわかってるよね?

973仕様書無しさん2018/07/07(土) 14:15:10.08
>>972
ならそれを数学的に証明してみて

974仕様書無しさん2018/07/07(土) 14:43:32.46
>>973
http://kakutani.com/trans/fowler/injection.html

ここにかいてある図2が数学的な証明だよ
https://kakutani.com/trans/fowler/injector.gif

いいか?これが"数学的"な証明だからな
最近数学的証明の意味をわからないやつが多すぎる

975仕様書無しさん2018/07/07(土) 14:45:57.38
>>974
それが数学的証明であることを数学的に証明してみて

976仕様書無しさん2018/07/07(土) 14:46:05.38
ネタにマジレスっていおうとしたら回答がさらにネタだった

977仕様書無しさん2018/07/07(土) 15:01:57.46
>>975
え?どうやって??
お前数学的証明を数学的に証明することなんてできるの?
そんなもんできないから数学的証明っていうんだけど?

978仕様書無しさん2018/07/07(土) 15:03:52.20
>>977
あーあ
できないんだ
じゃあ最初の証明も嘘なんだね
本当に正しいことなら数学的に証明できるはずだもの

979仕様書無しさん2018/07/07(土) 15:05:51.54
>>974
とりあえず公理系を書き出してみて

え?できない?それ数学的証明じゃないよ

980仕様書無しさん2018/07/07(土) 15:08:42.12
>>978
フェルマーの定理とか実際は長すぎて誰もついてけない
プログラムだってすぐバグるのにどっか間違ってないはずがない
数学だから正しいなんてことがあるか

経験的に実証されたものこそ真実

981仕様書無しさん2018/07/07(土) 15:19:59.41
>>978
お前馬鹿か。
数学的証明をわかってないじゃないか。
何かを数学的に証明することはできるが
数学的証明だけは数学的に証明できないと決まってる

982仕様書無しさん2018/07/07(土) 15:20:35.59
>>979
え? 普通に数学的証明なんだが?

983仕様書無しさん2018/07/07(土) 15:24:23.06
>>979
> とりあえず公理系を書き出してみて

公理系もしらんのか?
常識だからぐぐれ

984仕様書無しさん2018/07/07(土) 15:25:42.15
そもそも数学的証明って何か知ってるのかな?

例えばお前が山田だっていうのは
数学的に証明できる

自分が山田だと名乗ればいいのだから
これが数学的証明

基本だからこれが理解できない人は
話に参加しないでほしい

985仕様書無しさん2018/07/07(土) 15:26:37.64
また別の例ではジョブズは死んだという命題があるとする

さてここでジョブズとは誰か?
それは数学的証明によってスティーブ・ジョブズのことであることが
証明されている

ここまではいいな?

986仕様書無しさん2018/07/07(土) 15:27:18.42
ではスティーブ・ジョブズとは誰かだ?

これも元Apple CEOのスティーブ・ジョブズであることが
数学的帰納法によって証明できる

987仕様書無しさん2018/07/07(土) 15:28:25.84
だが、ここでAppleとはなにか?という
命題が出てくる。

AppleといってもいろんなAppleがあるだろう。
例えばApple自動車保険だ

988仕様書無しさん2018/07/07(土) 15:29:17.78
だがここでアップル保険でないことは
数学的証明で証明できる

989仕様書無しさん2018/07/07(土) 15:29:50.95
>>981
じゃあできないことを数学的に証明してみて

990仕様書無しさん2018/07/07(土) 15:30:08.25
それは公理系を書き出してみればわかる

991仕様書無しさん2018/07/07(土) 15:30:43.63
この世にはアップル自動車保険などない
Appleといえば、Appleしかないのだという
公理系に置いてAppleはAppleなのだ

992仕様書無しさん2018/07/07(土) 15:31:25.35
故にジョブズは死んだにおける
ジョブズはスティーブ・ジョブズのことであり
スティーブ・ジョブズは元AppleのCEOであることが証明できる

993仕様書無しさん2018/07/07(土) 15:31:37.17
ドカタが無理に数学的って言葉を使ってるの痛々しいなw

994仕様書無しさん2018/07/07(土) 15:32:11.06
ではジョブズは本当に死んだのか?
それは、写真を見ればわかる。
あれはどう見てもガンだ

995仕様書無しさん2018/07/07(土) 15:32:50.92
もうここまで言えばわかるだろう?
数学的証明ができない問題などない

996仕様書無しさん2018/07/07(土) 15:33:12.21
悔しかったら反論してみろ

997仕様書無しさん2018/07/07(土) 15:33:32.97
ジョブスは三丁目の山田んとこの倅だよ
はいこれでこの数学的マンの証明が嘘と証明されました
同じように考えて>>974も嘘とわかりますね

998仕様書無しさん2018/07/07(土) 15:34:50.16
盛り上がってる所済まないが、
これはDIという言葉を作った人が作った
定義なんだから、数学的証明の範疇じゃないよ

http://kakutani.com/trans/fowler/injection.html

DIの定義
https://kakutani.com/trans/fowler/injector.gif

999仕様書無しさん2018/07/07(土) 15:35:31.52
つまりはガンで死んだことに異論はないわけだ

1000仕様書無しさん2018/07/07(土) 15:36:35.40
>>998
はい、わかってます

10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 48日 17時間 52分 17秒

10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。