Inspiriert von dieser Antwort:
Liskov Substitutionsprinzip erfordert , dass
- Voraussetzungen können in einem Subtyp nicht gestärkt werden.
- Nachbedingungen können in einem Subtyp nicht abgeschwächt werden.
- Invarianten des Supertyps müssen in einem Subtyp erhalten bleiben.
- Verlaufsbeschränkung (die "Verlaufsregel"). Objekte gelten nur durch ihre Methoden als veränderbar (Kapselung). Da Subtypen Methoden einführen können, die im Supertyp nicht vorhanden sind, kann die Einführung dieser Methoden Zustandsänderungen im Subtyp ermöglichen, die im Supertyp nicht zulässig sind. Die Geschichtsbedingung verbietet dies.
Ich hatte gehofft, jemand würde eine Klassenhierarchie posten, die diese 4 Punkte verletzt, und wie man sie entsprechend löst.
Ich bin auf der Suche nach einer ausführlichen Erklärung für Bildungszwecke, wie jeder der vier Punkte in der Hierarchie identifiziert und am besten behoben werden kann.
Hinweis:
Ich hatte gehofft, ein Codebeispiel zu veröffentlichen, an dem die Leute arbeiten können, aber die Frage selbst ist, wie die fehlerhaften Hierarchien identifiziert werden können :)