SOLID = steht für solide Grundprinzipien, an die man sich beim Schreiben von Code halten sollte
Single Responsibility Prinzip
Open Closed Prinzip
L. Substitutions
Interface Segregation Prinzip
Dependency Inversion Prinzip
# Single Responsibility Prinzip
Jedes Softwareelement implementiert nur einen Aspekt. Siehe SEW_Softwaremetriken
erhöht Wartbarkeit
vermeiden v. Merge-Conflict
Eine Klasse kümmert sich nur um eine Aufgabe bzw. alles was die Klasse machen soll sollte von der Aufgabe her sehr nahe beinander liegen.
Dieses Beispiel würde das Single Responsibility Prinzip brechen:
# Open Closed Prinzip
”Open for Extension but Closed for Modification”
Ziel: erweiterbarer Code, ohne dass vorher geschriebenes geändert wird.
Prinzip kann aufgelöst werden durch: Interfaces, Basisklassen.
Im Code-Bsp. in Skriptum>rechts: Es muss nur um eine Methode erweitert werden.
mit abstrakter Basisklasse:
mit Interface:
# Liskovsche Substitutionsprinzip
Alles was in Basisklasse definiert/da ist, sollte in den abgeleiteten Klassen Sinn machen.
Instanzen einer abgeleiteten Klasse müssen sich genauso verhalten wie Objekte der Basisklasse.
Verwender muss es egal sein, ob Basisklasse oder abgeleitete Klasse.
Wird oft bei falschen Vererbungshierarchien verletzt.
Bsp. von Verstoß gg. Liskovsches Substitutions-Prinzip:
je nachdem was Verwender benötigt, muss daher nicht alles implementiert werden
Anstatt einem Interface:
Unterteilen in mehrere Interfaces:
# Dependency Inversion Prinzip
”Higher Level components should not depend on lower Level components - both should depend on the interface”
Keine direkte Abhängigkeit zw. Data Access & Business Logic
SEW_SOLID 2024-11-19 09.09.20.excalidraw
⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠ You can decompress Drawing data with the command palette: ‘Decompress current Excalidraw file’. For more info check in plugin settings under ‘Saving’