How to verify the Liskov substitution principle in an inheritance hierarchy?
Posted
by
Songo
on Programmers
See other posts from Programmers
or by Songo
Published on 2012-10-17T10:45:13Z
Indexed on
2012/10/17
11:20 UTC
Read the original article
Hit count: 266
Inspired by this answer:
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.
I was hoping if someone would post a class hierarchy that violates these 4 points and how to solve them accordingly.
I'm looking for an elaborate explanation for educational purposes on how to identify each of the 4 points in the hierarchy and the best way to fix it.
Note:
I was hoping to post a code sample for people to work on, but the question itself is about how to identify the faulty hierarchies :)
© Programmers or respective owner