オブジェクト指向の原則3:依存関係逆転の原則とインタフェース分離の原則

依存関係逆転の原則に基づいたデザインパターン「依存性の注入:Dependency Injection(DIパターン)」の解説及びDIツール「Unity」の実装方法も解説しています。サンプルコードはC#を使って解説しています。

4.56 (453 reviews)
Udemy
platform
日本語
language
Programming Languages
category
オブジェクト指向の原則3:依存関係逆転の原則とインタフェース分離の原則
2,756
students
3.5 hours
content
Sep 2023
last update
$19.99
regular price

What you will learn

依存関係逆転の原則の原則が理解できる

依存性の注入パターン(DIパターン)が理解できる

DIツールの使い方が理解できる

プロジェクト間参照の利点がわかる

インタフェース分離の原則が理解できる

Why take this course?

どうもこんにちは,ピーコックアンダーソンです。

今回は「オブジェクト指向の原則シリーズ」の第3弾として

「依存関係逆転の原則」と「インタフェース分離の原則」を解説しており,

オブジェクト指向の原則3部作の完結編となります。


今回もいろいろと書籍を読み直して,

2つの原則を掘り下げて解説しています。

「依存関係逆転の原則」の方が比重は多めです。

よりよいプログラミングを目指すプログラマーの方にとって,

楽しい内容になっていると思います。


依存関係逆転の原則では,独特な原則ネーミングである

「逆転」とは何を指すのか?という部分を詳しく解説しているので,

このあたりを理解することで,

オブジェクト指向プログラミングをしている実感と自信がつくと思います。


「依存関係が逆転していたらオブジェクト指向プログラミング」

「逆転していなかったら手続き型」と言われるくらい,

オブジェクト指向を理解する上で大事な知識ですので,

理解があいまいな方は,ぜひご覧になってみてください。


依存関係逆転の原則に基づいたデザインパターンである,

「依存性の注入:Dependency Injection」(DIパターン)に関しても説明しており,

外部から依存性を注入することで,「抽象に対してのプログラミング」や

「テスト容易性」を実現する方法を解説しています。


依存関係つながりということで,

プロジェクト間参照に関しても解説しており,

1層構造,2層構造,昔ながらの3層構造,ドメインパターン3層構造の,

それぞれの利点等も解説しています。


インタフェース分離の原則では,

クライアントの要求に合わせたインターフェース分離の方法ということで,

有名な「プリンターの例」と,私独自で考えた「ドラクエの例」を解説しており,

ドラクエの例を見てもらえれば,役割に応じたインタフェースの分離がどういったものかを

理解していただけると思います。


【依存関係逆転の原則】

#01_依存関係逆転の原則

#02_原則違反_上位が下位に依存している例

#03_下位モジュールに依存する事の問題点

#04_両方とも抽象に依存すべきである

#05_両方とも抽象に依存させる実装方法

#06_ファクトリーで下位モジュールを生成する

#07_抽象に依存することで問題が解決されていることを確認する

#08_依存関係逆転という言葉の意味

#09_下位モジュールが抽象に依存する事のメリットとは

#10_抽象と実装の分離_そもそもオブジェクト指向プログラミングというものは

#11_依存性の注入

#12_依存性の注入の実装

#13_自動テストにおける下位モジュールの問題点

#14_自動テストの問題を依存性注入で解決する_Mock手作り

#15_自動テストの問題を依存性注入で解決する

#16_テストケースごとにMockを作るのは大変

#17_Moqを使った自動テストをする方法

#18_メソッドで依存性を注入する方法

#19_ユーザーインタフェースの自動テストをする方法

#20_ViewとViewModelのデータバインド

#21_ViewModelからModuleまでの一連を自動テストする

#22_ViewModelのコンストラクタからファクトリーを呼ぶ実装

#23_DIコンテナツールの使い方

#24_複数の依存性がある場合のDIコンテナの動き

#25_DIコンテナを外部からアクセス可能にする実装方法

#26_プロジェクトの依存関係_1層の場合

#27_プロジェクトの依存関係_2層の場合

#28_プロジェクトの依存関係_昔ながらの3層の場合

#29_プロジェクトの依存関係_ドメインパターン3層構造

#30_依存関係逆転の原則違反の回避方法


【インタフェース分離の原則】

#01_インタフェース分離の原則

#02_プリンターの実装例

#03_ドラクエを題材にしたインタフェース分離の例

#04_キャラクターを操作できるようにする

#05_役割に応じてインタフェースを分離する

#06_ロールとしてのインタフェース

#07_インタフェース分離の原則まとめと5大原則の総括


Reviews

July 12, 2023
どの講座を聞いていても思いますが、とにかくピーコック アンダーソンさんの説明が論理的で順序立っていて、本当にわかりやすいです。 日本の開発者がオブジェクト思考開発する上で理解する際のスモールステップを作り、手を引いてくれている印象で毎回見ています。
Mitsutora
May 7, 2023
毎回思いますが、素晴らしい講義だと思います。 このままテスト駆動、ドメイン駆動の講義を受けていきたい と考えています。ただ、このオブジェクト指向の5大原則の 講義を受けていれば、前者2つのベース部分は学習できている のでは無いかとも感じました。 早く実践して、駄目コードを減産していきたいと思っています。 2点だけ、詰まった所と自己解決した所を御連絡しておきます。 1. 単体テスト 「テスト対象を修正⇒テスト側に修正の反映が無い」が発生。  1-1. Google検索の結果を色々と試行。(以下、効果なし)   1-1-1.構成マネージャー変更/戻す   1-1-2.参照 変更/戻す   1-1-3.Release/Debugの削除  1-2.単体テストを削除し、名前を変えて再作成。  ⇒★効果有り 2. Microsoft DIコンテナのインストール失敗  2-1. v.5.0.0をインストール。  ⇒★効果有り。インストール可能。  2-2. プロジェクトの保存フォルダの階層を浅くする。  ⇒★効果有り。インストール可能。(2023/05/08時点 最新のv.7.0.0) もし、同様なケースで困っている方がいたら、 参考にして頂ければと思いました。
Kazuo
November 27, 2022
SOLIDの原則を、豊富な経験を持つ先生から教われる、とてもとても貴重な講義。私のメイン言語はPythonとJavaScriptなので、C#は苦手なのですが、それでも役に立ちます。 先生、お忙しいとは思いますが、デザインパターンのつづきの講義、ぜひリリースをお願いします。
成田宏樹
August 23, 2022
説明が分かりやすく、オブジェクト指向に関する知識が深まりました。 ただ、講義の内容や要点をPowerPointの資料等で添付してダウンロードできるようにして頂ければ、復習の際に見返すことが出来て尚良いかと思います。
Tatsuya
November 30, 2021
以前にDIパターンを現場で使用したことがありましたが、なぜそれを使用しているのわかりませんでした。今回の講義を見て、同時にテストコードを使用していくのであれば、とても有用な手法と思いました。 インターフェース分離にてついては、具体例がとてもわかりやすかったです。今まで使用しないメソッドは、デフォルトのままにしていたこともあるので、分離できる部分は分離していこうと思いました。
ベッカム
November 27, 2021
ありがとうございました。期待を裏切らないすばらしい内容でした。 納得のいく説明+実装の具体例が全てあり、すっと頭の中に入ってきました。 もう一度SOLIDの原則を復習して、当たり前に使えるようにしていきたいと思います。 デザインパターンも楽しみにしています。

Charts

Price

オブジェクト指向の原則3:依存関係逆転の原則とインタフェース分離の原則 - Price chart

Rating

オブジェクト指向の原則3:依存関係逆転の原則とインタフェース分離の原則 - Ratings chart

Enrollment distribution

オブジェクト指向の原則3:依存関係逆転の原則とインタフェース分離の原則 - Distribution chart
4400960
udemy ID
11/17/2021
course created date
11/28/2021
course indexed date
Bot
course submited by