オブジェクト指向の原則2:リスコフの置換原則と継承以外の解決方法

オブジェクト指向の5大原則の中から「リスコフの置換原則」による継承のガイドラインの解説と継承以外の解決方法アイデア1~4を解説しています。サンプルコードはC#を使って解説しています。

4.51 (568 reviews)
Udemy
platform
日本語
language
Programming Languages
category
オブジェクト指向の原則2:リスコフの置換原則と継承以外の解決方法
2,883
students
3.5 hours
content
Sep 2023
last update
$19.99
regular price

What you will learn

リスコフの置換原則を理解する

継承のガイドラインを理解する

似てるから継承するという誤りを理解する

継承以外の解決方法アイデア1~4を理解する

似てるから共通化するという誤りを理解する

Description

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

今回はオブジェクト指向の5大原則の中から

「リスコフの置換原則」をテーマに解説しています。

「リスコフの置換原則」は継承のガイドラインになる原則ですが,

この原則に加えて,

継承をするべきではないケースの場合に,どのように解決するべきか

ということを,「継承以外の解決方法」と題して,

追加で解説しています。

なので,1原則にもかかわらず,結構なボリュームになったので

「リスコフの置換原則と継承以外の解決方法」ということで

リリースさせていただきます。


リスコフの置換原則はオープンクローズドの原則のガイドラインにもなり,

正しい抽象の使い方ができているかのガイドラインになります。

そして,原則に反してしまう場合に,どのように解決していくべきかということを,

C#の実例をつけて解説しているので,興味のある方は,ご覧になってみてください。


#01_リスコフの置換原則の概要

#02_原則に従っている例

#03_原則に従っている例_抽象クラス

#04_原則に従っている例_インタフェース

#05_原則に従っている例_具象クラス

#06_抽象クラスでの一部上書きの例

#07_原則違反の例

#08_置換可能でない場合の問題点

#09_原則違反の例実装

#10_継承とは

#11_抽象に対してコーディングする

#12_抽象に対してコーディングする実装例

#13_クライアントは抽象に対してコーディングするイメージ

#14_知識が漏れ出すということ

#15_データベースへの実装を遅らせる実装例

#16_知識が漏れ出すということの実装例

#17_知識が漏れないように修正

#18_抽象クラスにロジックを集めて知識が漏れるのを防ぐ

#19_知識を制限するという考え方

#20_アクセスレベルで知識の漏れを防ぐ実装方法

#21_抽象に対して実装を強制する実装方法

#22_原則に従っていることのチェックポイント

#23_似てるから継承するという誤り

#24_似てるから継承するという誤りの実装例

#25_似てるから継承の問題点まとめ

#26_継承させない実装

#27_継承させない実装方法の例

#28_継承以外の解決方法

#29_継承以外のアイデア1_別で作る

#30_別で作った場合の問題点_重複コードが出る

#31_アイデア1_別で作る実装例

#32_継承以外のアイデア2_持つという考え方

#33_継承以外のアイデア2_持つという考え方の実装

#34_持つということの問題点

#35_持つという考え方のガイドライン

#36_発注状況管理クラスで発注データを持つ実装例

#37_Entityを持つという考え方

#38_アイデア3_共通化という解決

#39_共通化の実装例

#40_共通化という解決の問題点

#41_共通化で解決できるガイドライン

#42_アイデア4_最小カプセル化という解決

#43_最小カプセル化の実装例

#44_似てるから共通化するという誤り

#45_発注リストと発注履歴リストのモデルを共用で使うBADな例

#46_実態に合わせたモデリング_1テーブルの場合

#47_実態に合わせたモデリング_2テーブルの場合

#48_共通要素をまとめる継承

#49_共通要素をまとめる継承の実装例

#50_リスコフの置換原則まとめ

#51_プログラマーの自問

Content

はじめに

はじめに

リスコフの置換原則

L01_リスコフの置換原則の概要
L02_原則に従っている例
L03_原則に従っている例_抽象クラス
L04_原則に従っている例_インタフェース
L05_原則に従っている例_具象クラス
L06_抽象クラスでの一部上書きの例
L07_原則違反の例
L08_置換可能でない場合の問題点
L09_原則違反の例実装
L10_継承とは
L11_抽象に対してコーディングする
L12_抽象に対してコーディングする実装例
L13_クライアントは抽象に対してコーディングするイメージ
L14_知識が漏れ出すということ
L15_データベースへの実装を遅らせる実装例
L16_知識が漏れ出すということの実装例
L17_知識が漏れないように修正
L18_抽象クラスにロジックを集めて知識が漏れるのを防ぐ
L19_知識を制限するという考え方
L20_アクセスレベルで知識の漏れを防ぐ実装方法
L21_抽象に対して実装を強制する実装方法
L22_原則に従っていることのチェックポイント

似てるから継承するという誤り

L23_似てるから継承するという誤り
L24_似てるから継承するという誤りの実装例
L25_似てるから継承の問題点まとめ
L26_継承させない実装
L27_継承させない実装方法の例

継承以外の解決方法

L28_継承以外の解決方法
L29_継承以外のアイデア1_別で作る
L30_別で作った場合の問題点_重複コードが出る
L31_アイデア1_別で作る実装例
L32_継承以外のアイデア2_持つという考え方
L33_継承以外のアイデア2_持つという考え方の実装
L34_持つということの問題点
L35_持つという考え方のガイドライン
L36_発注状況管理クラスで発注データを持つ実装例
L37_Entityを持つという考え方
L38_アイデア3_共通化という解決
L39_共通化の実装例
L40_共通化という解決の問題点
L41_共通化で解決できるガイドライン
L42_アイデア4_最小カプセル化という解決
L43_最小カプセル化の実装例

似てるから共通化するという誤り

L44_似てるから共通化するという誤り
L45_発注リストと発注履歴リストのモデルを共用で使うBADな例
L46_実態に合わせたモデリング_1テーブルの場合
L47_実態に合わせたモデリング_2テーブルの場合

補足とまとめ

L48_共通要素をまとめる継承
L49_共通要素をまとめる継承の実装例
L50_リスコフの置換原則まとめ
L51_プログラマーの自問

使用したプログラムソース

使用したプログラムソース

ボーナスレクチャー

ボーナスレクチャー

Reviews

Mitsutora
May 6, 2023
Dependency Injectionの理解を深めてキチンと実践したいと考え、 オブジェクト指向の原則を復習するつもりで学習しましたが、 私個人の勝手な思い込み等で駄目なコードを生産していたと自覚 し始めました。 毎回ですが、大変素晴らしい講座だと思いますので、 書籍で学習した方、オブジェクト指向が少し使える古い言語など からC#に移行した方など、是非受けて欲しい内容と思いました。 C#利用者側も共通化されていけば、駄目コードが減るので、 自分もその一助になればと思います。
雅志
September 10, 2022
オブジェクト指向については一通り勉強しいろいろ作ってきましたが、中々納得できるものにならず困っていました。 今回のメインテーマであるリスコフの置換原則が、多数の例も交えて丁寧に説明されていて自分の問題点が明らかになり、大変参考になりました。
Tatsuya
October 16, 2021
リスコフの置換原則をわかりやすく説明されていたので、容易に理解することができました。今までは、サブクラスに追加して使用していたので、次回からは基底クラスに入れるようにして、原則に違反しないようにしたいと思います。
ベッカム
August 27, 2021
リスコフの置換規則からクラス設計の大事な考えを学ぶことができました。 ・概念の説明 ・簡単なコードでの説明 ・具体的な業務事例でありそうなものを題材としたコードでの説明 と3ステップで説明があり私の中ではほぼ理解できたと感じることができました。 よくあるなんとなく概念は分かったけど、どうやって使うのかみたいな中途半端な使えない知識にはならないと思います。 DDDでこうしたら良いという考えは、なんとなく理解していた部分が このコースのBad例から解決方法の提案で、Whyそうしているのかがロジカルな説明で 今頃理解できました。 続きのコースも楽しみにしています。 (DDD、オブジェクト指向の原則からデザインパターンコースも是非お願いします。)

Charts

Price

オブジェクト指向の原則2:リスコフの置換原則と継承以外の解決方法 - Price chart

Rating

オブジェクト指向の原則2:リスコフの置換原則と継承以外の解決方法 - Ratings chart

Enrollment distribution

オブジェクト指向の原則2:リスコフの置換原則と継承以外の解決方法 - Distribution chart
4242354
udemy ID
8/15/2021
course created date
8/28/2021
course indexed date
Bot
course submited by