Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
de:modul:ffit:3-jahr:java:learningunits:lu05:b [2025/09/15 12:53] – apeter | de:modul:ffit:3-jahr:java:learningunits:lu05:b [2025/09/16 06:46] (aktuell) – apeter | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== LU05b - Prinzipien 2 (LSP, ISP) ====== | ====== LU05b - Prinzipien 2 (LSP, ISP) ====== | ||
- | ==== Prinzipien ==== | + | ===== Prinzipien |
* //DRY (Don’t Repeat Yourself)// | * //DRY (Don’t Repeat Yourself)// | ||
Zeile 18: | Zeile 18: | ||
Wir fokussieren uns dieses Mal auf **LSP** und **ISP**. | Wir fokussieren uns dieses Mal auf **LSP** und **ISP**. | ||
- | === LSP === | + | ==== LSP ==== |
Das Liskov Substitution Principle besagt, dass ein Programm, das Objekte einer Basisklasse T verwendet, auch mit Objekten der davon abgeleiteten Klasse S korrekt funktionieren muss, ohne dabei das Programm zu verändern. | Das Liskov Substitution Principle besagt, dass ein Programm, das Objekte einer Basisklasse T verwendet, auch mit Objekten der davon abgeleiteten Klasse S korrekt funktionieren muss, ohne dabei das Programm zu verändern. | ||
Folgendes Beispiel verletzt das LSP, weil ein Kreis zwar eine Spezialform einer Ellipse ist, aber in diesem Fall nicht mit den Eigenschaften der Klasse '' | Folgendes Beispiel verletzt das LSP, weil ein Kreis zwar eine Spezialform einer Ellipse ist, aber in diesem Fall nicht mit den Eigenschaften der Klasse '' | ||
+ | |||
{{: | {{: | ||
Besser wäre es die Klasse '' | Besser wäre es die Klasse '' | ||
- | === ISP === | + | ==== ISP ==== |
- | Das Interface Segregation Principle besagt, dass Interfaces nur logisch untrennbare Methoden vorgeben sollten. Das heisst in diesem Beispiel, die Methoden '' | + | Das Interface Segregation Principle besagt, dass Interfaces nur logisch untrennbare Methoden vorgeben sollten. Das heisst in diesem Beispiel, die Methoden '' |
{{: | {{: | ||
- | Ist dies nicht der Fall, so sollte man die Interfaces aufteilen. Dadurch können zukünftige Klassen nur einzelne Interfaces implementieren und sind nicht gezwungen irgendwelche Dummy-Implementierungen zu erstellen. | + | Ist dies nicht der Fall, so sollte man die Interfaces aufteilen. Dadurch können zukünftige Klassen nur einzelne Interfaces implementieren und sind nicht gezwungen irgendwelche Dummy-Implementierungen zu erstellen. |
{{: | {{: | ||