User Tools

Site Tools


principles:liskov_substitution_principle

This is an old revision of the document!


Liskov Substitution Principle

Variants and Alternative Names

Context

Principle Statement

Description

Rationale

Strategies

  • Only strengthen invariants in subclasses; never weaken them
  • Only waken preconditions when overriding methods
  • Only strengthen postconditions when overriding methods

Origin

Evidence

Relations to Other Principles

Generalizations

Specializations

Contrary Principles

Complementary Principles

  • Information Hiding/Encapsulation (IH/E): For the purpose of inheritance there can be a wider protected interface. This typically weakens encapsulation to some extend.
  • Model Principle (ML): MP demands inheritance relations to resemble an “is-a” relationship. This means that an object of the subclass is also an object of the superclass. This is always true in a technical sense as this is how object-oriented programming languages handle inheritance hierarchies. However MP demands that is shall be true in the model, too. This is slightly different from LSP which rather is about a “is-substitutable-for” relationship.
  • Principle of Separate Understandability (PSU): When building inheritance hierarchies, LSP constrains how subclasses are constructed. Namely they should comply with the superclass contract. PSU on the other hand demands that the superclass shall be separately understandable, which means that knowledge of concrete subclasses and their needs should not be necessary to understand the superclass. So a superclass should not have a specific functionality, etc. just because a particular subclass needs this. In contrast to that the superclass of course may provide protected features for subclasses in general. But it should be inherently clear that subclasses in general may need this functionality without looking at a particular one.

Principle Collections

OOD Principle Language
General Principles
ML KISS MIMC DRY GP RoE
Modularization Principles
MP HC ECV
Module Communication Principles
TdA/IE LC DIP
Interface Design Principles
EUHM PLS UP
Internal Module Design Principles
IH/E IAP LSP PSU

Example

Description Status

Further Reading

principles/liskov_substitution_principle.1630599986.txt.gz · Last modified: 2021-09-02 18:26 by 65.21.179.175