リシアン置換原則 (LSP)

目次

導入:

効果:

プロセス:

要約:


導入:

リスコフ置換原理 (略して LSP) の提案者は、アメリカのコンピューター科学者バーバラ・リスコフです。バーバラ・リスコフはコンピューター科学者、マサチューセッツ工科大学の教授であり、米国初のコンピューターサイエンスの女性博士号であり、チューリング賞を受賞し、人工知能の概念の提唱者であるジョン・マッカーシー教授に師事しました。彼女は 1986 年の論文で初めてこの原理を提案し、その後の研究でさらに詳しく説明し推進しました。

効果:

1. 保守性:
サブクラスは親クラスを完全に置き換えることができるため、コードの保守が容易になります。サブクラスが親クラスを置き換えることができない場合、親クラスが変更されると、それに応じてサブクラスも変更する必要があり、コードのメンテナンスが難しくなるからです。
2. 拡張性:
サブクラスは親クラスのプロパティとメソッドを継承し、独自のプロパティとメソッドを追加して、親クラスの機能を拡張できます。このように、新しい関数を追加する必要がある場合、親クラスを変更することなく、対応する属性とメソッドをサブクラスに追加するだけで済み、コードの拡張性が向上し
ます
。したがって、コードの正確性が保証されます。サブクラスが親クラスを完全に置き換えることができない場合、親クラスの動作が変更され、コードの動作が一貫性を失う可能性があるため、サブクラス オブジェクトの使用時にエラーが発生します。
4. 再利用性:
サブクラスは親クラスを完全に置き換えることができるため、コードの再利用性が向上します。サブクラスで親クラスを置き換えることができる場合、同じコードのセットを異なるコンテキストで使用できるため、コードの再利用性が向上します。

プロセス:

要約:

上記の例では、AnimalクラスとDogクラスが定義されており、DogクラスはAnimalクラスを継承しています。Animal クラスには Eat メソッドがあり、Dog クラスにも Eat メソッドがあります。このメソッドは new キーワードを使用して、Animal クラスの Eat メソッドを非表示にします。
Main メソッドでは、最初に Animal オブジェクトが作成され、次に Dog オブジェクトが作成されます。すると、動物オブジェクトのEatメソッドが呼び出され、「食べています。」と出力され、AnimalクラスのEatメソッドが呼び出されます。次に、犬オブジェクトの Eat メソッドを呼び出し、「私は犬で、食事をしています。」と出力します。このメソッドは、Dog クラスの Eat メソッドを呼び出します。
最後に、犬オブジェクトが動物オブジェクトに割り当てられ、動物オブジェクトの Eat メソッドが再度呼び出され、「私は犬で、食事をしています。」と出力されます。このメソッドは、Dog クラスの Eat メソッドを呼び出します。時刻 動物オブジェクトの種類は犬型です。
この例は、リスコフ置換原則の適用を示しています。つまり、プログラムの実行中に、サブクラス オブジェクトを使用して親クラス オブジェクトを置換する必要がある場合、プログラムは追加の処理を行わずにこの置換を正しく処理できる必要があります。

おすすめ

転載: blog.csdn.net/weixin_59272777/article/details/132468906