1. ホーム
  2. oop

[解決済み] リスコフ置換原理の例として、どのようなものがありますか?

2022-03-16 10:31:01

質問

Liskov Substitution Principle (LSP) は、オブジェクト指向設計の基本原則であると聞きました。どのようなもので、どのような使用例があるのでしょうか?

どのように解決するのですか?

最近聞いたポッドキャストでボブおじさんが言っていた)LSPを説明する素晴らしい例は、自然言語では正しく聞こえることが、コードでは全くうまくいかないことがあるということです。

数学では SquareRectangle . 確かにこれは矩形の特殊化です。このquot;is a"を見ると、これを継承でモデル化したくなりますね。しかし、もしあなたがコードで Square から派生した Rectangle であれば Square を期待する場所であれば、どこでも使えるはずです。 Rectangle . そのため、奇妙な動作になることがあります。

があったとします。 SetWidthSetHeight メソッドを Rectangle これは完全に論理的です。しかし、もしあなたの Rectangle への参照は Square であれば SetWidthSetHeight というのは、一方を設定するともう一方もそれに合わせて変化してしまうからです。この場合 Square はリスコフ代入テストに失敗します。 Rectangle という抽象的なものであり Square を継承しています。 Rectangle はダメなやつです。

もう一つの貴重な作品をご覧ください。 SOLID Principles モチベーションポスター .