Ispirato alla risposta :
Liskov Substitution Principle requires that
- Preconditions cannot be strengthened in a subtype.
- Postconditions cannot be weakened in a subtype.
- Invariants of the supertype must be preserved in a subtype.
- History constraint (the "history rule"). Objects are regarded as being modifiable only through their methods (encapsulation). Since subtypes may introduce methods that are not present in the supertype, the introduction of these methods may allow state changes in the subtype that are not permissible in the supertype. The history constraint prohibits this.
Speravo che qualcuno pubblicasse una gerarchia di classi che violasse questi 4 punti e come risolverli di conseguenza.
Sto cercando una spiegazione elaborata a fini didattici su come identificare ciascuno dei 4 punti nella gerarchia e il modo migliore per risolverlo.
Nota:
Speravo di pubblicare un esempio di codice per le persone su cui lavorare, ma la domanda in sé riguarda come identificare le gerarchie difettose:)