Thread Liskovsches Sommerloch
(19 answers)
Opened by rosti at 2025-06-25 09:13
Auf Wikipedia findet sich ein aufschlußreicher Artikel
https://de.wikipedia.org/wiki/Liskovsches_Substitu... dem nach eine Klasse Kreis als Unterklasse von Ellipse unzulässig ist weil Klasse Ellipse eine Methode hat welche beide Halbachsen verändert, weil dann der Kreis kein Kreis mehr ist. Die im Artikel beschriebene Lösung ist dann noch verwirrender. Also, ich würde mal sagen, daß der Kreis durchaus eine Subklasse von Ellipse sein darf, ggf. auch umgekehrt (je nach Aufgabenstellung) und daß man die Methoden die nicht in das Liskovsche Substitionsprinzip passen, einfach überschreibt. Darüber hinaus wäre auch noch das Prinzip der Polymorphie, d.h., daß die Ellipse 2 Eigenschaften hat in denen die Länge der Halbachsen (x,y) stehen, der Kreis jedoch nur eine(r). So kann die Methode scale($x, $y) prüfen, ob eine Ellipse vorliegt oder ein Kreis und muß nicht einmal überschrieben werden. Oder es wird für die 2. Halbachse ein Default festgelegt: Ganz analog wäre meine Vorgehensweise bei einer Methode draw(); ohne gegen irgendwelche OOP-Prinzipien zu verstoßen. Und sicher gibts noch weitere Möglichkeiten Liskov gerecht zu werden? Last edited: 2025-06-25 10:43:42 +0200 (CEST) |