Thread Liskovsches Sommerloch (19 answers)
Opened by rosti at 2025-06-25 09:13

haj
 2025-06-25 23:50
#197078 #197078
User since
2015-01-07
577 Artikel
BenutzerIn

user image
2025-06-25T15:12:03 rosti
Des Weiteren beschreibt Liskov, daß ein Programm mit der Instanz der Basisklasse genauso funktionieren muss wie mit einer Instanz der Subklasse. Hier habe ich ein echtes Verständnisproblem:

1) Was heißt genauso funktionieren?
Das hatten wir gerade: Wenn Ellipse eine Methode scale($x,$y) anbietet, dann muss auch etwas sinnvolles passieren, wenn man Kreis->new->scale($x,$y) betreibt. Auch die Rückgabewerte müssen kompatibel sein: Wenn scale in der Klasse Ellipse ein neues Objekt zurückgibt, dann muss das auch für Kreis so sein. Das gilt für alle Methoden der Klasse Ellipse.

2025-06-me25T15:12:03 rosti
2) Was ist, wenn die Basisklasse gar nicht instantiierbar ist? (die Basisklasse ist ein abstrakte Klasse wie z.B. UNIVERSAL oder Tie::Hash)
Das läßt sich sinngemäß einfach anwenden: Die Subklasse muss alle Methoden der Basisklasse sinnvoll bedienen, auch wenn's Objekte der Basisklasse gar nicht gibt. Im Beispiel Perldoc:UNIVERSAL heißt das, dass Perl-Klassen nicht frei sind, wie sie die Methoden isa, DOES, can und so weiter bedienen. Das ermöglicht immer noch, Methoden von UNIVERSAL zu überschreiben: Eine Klasse, die mit Perldoc:AUTOLOAD zur Laufzeit Methoden generiert, mag vielleicht can so anpassen, dass es zur sub AUTOLOAD konsistente Ergebnisse liefert.

View full thread Liskovsches Sommerloch