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

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

Ratings: 4.64 / 5.00




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_プログラマーの自問

What You Will Learn!

  • リスコフの置換原則を理解する
  • 継承のガイドラインを理解する
  • 似てるから継承するという誤りを理解する
  • 継承以外の解決方法アイデア1~4を理解する
  • 似てるから共通化するという誤りを理解する

Who Should Attend!

  • リスコフの置換原則を理解したい方
  • 継承のガイドラインを理解したい方
  • 継承以外の解決方法を理解したい方
  • 正しいオブジェクトの設計を理解したい方