|
リスコフの置換原則(りすこふのちかんげんそく、)とは、オブジェクト指向プログラミングにおける派生型の定義の一種であり、1993年、バーバラ・リスコフと が論文 で提唱した〔Liskov, and Wing (1993).〕。なお、これが派生型の唯一の定義ではない(データ型参照)。 この原則は、次のように簡潔に定式化されている〔Liskov, and Wing (1999).〕: : 型のオブジェクト に関して真となる属性を とする。このとき が の派生型であれば、 型のオブジェクト について が真となる。 すなわち、リスコフとウィングが定式化した派生型の定義は置換可能性 ( ) に基づいている。S が T の派生型であれば、プログラム内で T 型のオブジェクトが使われている箇所は全て S 型のオブジェクトで置換可能であり、それによってプログラムの妥当性が損なわれることは無い。 == 契約プログラミング == リスコフの置換原則は契約プログラミングの方法論と密接に関連しており、契約と継承の相互作用に次のような制約をもたらす: * 事前条件を派生型で強めることはできない。つまり、上位の型よりも強い事前条件を持つ派生型を作ることはできない。 * 事後条件を派生型で弱めることはできない。つまり、上位の型よりも弱い事後条件を持つ派生型を作ることはできない。 さらに、この原則によれば、派生型のメソッドが発生する例外は、上位の型のメソッドが発生する例外の派生型か、上位のメソッドの例外と同じものでなければならない。共変性と反変性も参照されたい。 この原則に違反しているクラス階層では、基底クラスへの参照を使い、派生クラスに関する知識を持たなければならなくなる。このようなコードは開放/閉鎖原則にも違反し、新たな派生クラスを追加するたびに全体のコードを修正しなければならなくなる。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「リスコフの置換原則」の詳細全文を読む スポンサード リンク
|