アジャイルソフトウェア開発の奥義
デザインパターン・メーリングリストで LSP(The Liskov Substitution Principle) が話題に出たのでこちらでも補足。
LSP(The Liskov Substitution Principle)とは、リスコフの置換原則のことで、ソフトウェア原則のうちのひとつ。LSP を一言で要約したものを、「アジャイルソフトウェア開発の奥義」から引用。
派生型はその基本型と置換可能でなければならない。
本文では、Rectangle(長方形)を継承してSquare(正方形)を作るのはダメよ、と例を挙げている。Rectangle を使う人が Rectangle だと思って、底辺と高さに異なる値を設定しようとしたとき、Square はそれを受け付けないので。使う人には Rectangle ではなくなっている。つまり、置換可能ではなくなってしまっている。
LSP を説明したところの最後に「結論」が書かれている。とても興味深いので、ここも引用しておく。
「IS-A」という用語は、派生型の定義として用いるには意味が広すぎる。派生型の本当の定義は基本型と「置換できる」ということなのだ。「置換できる」の内容は、明示的な契約、または、非明示的な契約によって定義される。
ちなみに、ソフトウェア原則には以下のものがある。(自分のためのメモ)
これらについては、アジャイルソフトウェア開発の奥義の中で詳しく説明されている。