25. Liskov-Substitutionsprinzip
- Themen
- Das Liskov-Substitutionsprinzip
- Beispiele für seinen Einsatz
- Bedeutung im Gesamtkontext der Software-Architektur
- Folien
Zentrale Aspekte
- Objekte einer abgeleiteten Klasse sollten sich
genauso verhalten wie Objekte der Basisklasse. - Verletzungen des Liskov-Substitutionsprinzips
lassen sich immer nur im konkreten Kontext feststellen. - Das Liskov-Substitutionsprinzip ist eine wesentliche Voraussetzung für das Open-Closed-Prinzip.
- „Entwurf gemäß Vereinbarung“ (design by contract)
formalisiert die Erwartungen an eine Klasse. - Allgemein sorgt das Prinzip für klar definierte Schnittstellen
und austauschbare Implementierungen auf allen Ebenen.
Weiterführende Literatur
Eine kommentierte und handverlesene Liste mit weiterführender Literatur zum Thema. Die Auswahl ist zwangsläufig subjektiv.
Die Originalformulierung des Liskov-Substitutionsprinzips findet sich in [Liskov, 1987Liskov, Barbara (1987): Data Abstraction and Hierarchy, ACM Sigplan Not. 23:17-34], eine etwas verständlichere Formulierung in [Liskov, 1994Liskov, Barbara H.; Wing, Jeannette M. (1994): A behavioral notion of subtyping, ACM Trans. Program. Lang. Syst. 16:1811-1841]. Im Rahmen der SOLID-Prinzipien diskutiert wird es von Robert C. Martin in Kapitel 10 in [Martin, 2003Martin, Robert C. (2003): Agile Software Development. Principles, Patterns, and Practices, Prentice Hall, Upper Saddle River, New Jersey] sowie in Kapitel 9 von [Martin, 2018Martin, Robert C. (2018): Clean Architecture. A Craftman's Guide to Software Structure and Design, Prentice Hall, Boston]. Sehr viele hilfreiche Hinweise für seine Anwendung sowie für das Konzept des „Entwurfs kraft Vereinbarung“ (design by contract) finden sich auch in [Meyer, 1997Meyer, Bertrand (1997): Object-Oriented Software Construction, Prentice Hall PTR, Upper Saddle River, New Jersey].
- Liskov, Barbara (1987): Data Abstraction and Hierarchy, ACM Sigplan Not. 23:17-34
- Liskov, Barbara H.; Wing, Jeannette M. (1994): A behavioral notion of subtyping, ACM Trans. Program. Lang. Syst. 16:1811-1841
- Martin, Robert C. (2003): Agile Software Development. Principles, Patterns, and Practices, Prentice Hall, Upper Saddle River, New Jersey
- Martin, Robert C. (2018): Clean Architecture. A Craftman's Guide to Software Structure and Design, Prentice Hall, Boston
- Meyer, Bertrand (1997): Object-Oriented Software Construction, Prentice Hall PTR, Upper Saddle River, New Jersey