2017-11-24 23 views
3

の事前条件/事後条件のためのルール、叔父ボブは言及:LSPについての彼の<a href="http://www.labri.fr/perso/clement/enseignements/ao/LSP.pdf" rel="nofollow noreferrer">paper</a>でデリバティブ

サブタイプのインスタンスオブジェクトのメソッドの事前条件/事後条件は、それぞれ、それらよりも強い/弱い場合、私は言うことができるどのように
Now the rule for the preconditions and postconditions for derivatives, as stated by Meyer, is: 
...when redefining a routine [in a derivative], you may only replace its 
precondition by a weaker one, and its postcondition by a stronger one. 

をスーパータイプのメソッドの?厳格な定義はなく、これを定式化するために

答えて

1

:あなたの親クラスが何かを必要とする場合

、子供が同じ機能を提供しなければならない - 少なくとも。 ルーチンが0より大きいすべての入力を処理することを約束している場合、派生ルーチンはすべての入力も受け入れる必要があります。 これは、前提条件が弱いことを意味します。

同様に、事後条件はより強くなければなりません。つまり、元のルーチンが常に正の数を返すと約束していれば、派生ルーチンで負の数を返すことは許されません。

親が必要とするものより多くを要求した場合(つまり、前提条件が厳しい場合)、そのルーチンをいつでも呼び出すことができるとは確信できません。 BとCがAのサブクラスであるとしましょう。A型のObjectを持つこともあります。実際にはBまたはCでもかまいません。Cよりも前提条件がAより強い場合、ルーチンを呼び出すときに問題に遭遇する可能性がありますそのオブジェクトについて。

私は通常の用語を使用しないと申し訳ありませんが、私は本当にそれを思い出すことができないので、私はちょうど私に合ったものに固執しようとしました。 (私がBertrand Meyerの講義に最後に参加してから2年経ちました)

関連する問題

 関連する問題