Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:lehre:programmierkonzepte:ws2017:25:index

25. Liskov-Substitutionsprinzip

Themen
Das Liskov-Substitutionsprinzip
Beispiele für seinen Einsatz
Bedeutung im Gesamtkontext der Software-Architektur
Folien
PDF


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 Notices 23:17-34], eine etwas verständlichere Formulierung in [Liskov, 1994Liskov, Barbara H.; Wing, Jeannette M. (1994): A behavioral notion of subtyping, ACM Transactions on Programming Languages and Systems 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 Notices 23:17-34
  • Liskov, Barbara H.; Wing, Jeannette M. (1994): A behavioral notion of subtyping, ACM Transactions on Programming Languages and Systems 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
de/lehre/programmierkonzepte/ws2017/25/index.txt · Zuletzt geändert: 2020/09/30 21:35 von 127.0.0.1