- 1 Section
- 10 Lessons
- unbegrenzt
- Objektorientierte Programmierung (OOP)10
SOLID-Prinzipien
SOLID ist ein Akronym für fünf Design-Prinzipien, die in den frühen 2000ern von Robert C. Martin („Uncle Bob") zusammengefasst wurden. Sie beantworten die Frage: wie schreibe ich OOP-Code, der sauber, wartbar und erweiterbar bleibt? Wer sie kennt und anwendet, hebt sich von Junior-Entwicklern deutlich ab.
Diese Lektion ist klausurkritisch. SOLID kommt in IHK-Abschlussprüfungen, in Software-Engineering-Modulen und in jedem Vorstellungsgespräch. Wir gehen jedes Prinzip einzeln durch, zeigen den klassischen Verstoß und die saubere Lösung. Am Ende eine Checkliste für eigenen Code.
1) Was SOLID bedeutet
Jeder Buchstabe steht für ein Prinzip. Klick die Buchstaben an für eine Kurzdefinition:
2) S – Single Responsibility Principle (SRP)
3) O – Open/Closed Principle (OCP)
4) L – Liskov Substitution Principle (LSP)
Form erwartet, sollte er mit jedem Subtyp (Kreis, Rechteck, …) funktionieren – ohne Spezialbehandlung.setBreite() und setHoehe() hast, geht's schief – beim Quadrat müsste beides gleichzeitig gesetzt werden. Vererbung lügt.5) I – Interface Segregation Principle (ISP)
AlleMaschinen-Interface mit 50 Methoden lieber mehrere kleine: Druckbar, Scannbar, Faxbar. Klassen implementieren nur was sie wirklich können.Comparable, Serializable, Cloneable, Iterable – alles fokussierte Interfaces statt einer Mega-Schnittstelle. Klassen kombinieren sie nach Bedarf.6) D – Dependency Inversion Principle (DIP)
DatenbankInterface und arbeite damit. So kannst du später MySQL gegen PostgreSQL austauschen, ohne den Business-Code anzufassen.7) Praktisches Beispiel: alle 5 Prinzipien
Nehmen wir ein realistisches Szenario: ein Reporting-System. Hier verstößt der naive Code gegen mehrere SOLID-Prinzipien gleichzeitig:
Die saubere Variante mit allen SOLID-Prinzipien angewandt:
Vorteile: neuer Formatter? Klasse JsonFormatter dazu, ReportGenerator bleibt unverändert. DB tauschen? Andere Storage-Klasse reinreichen. Tests? Mock-Klassen statt MySQL nutzen.
8) Wann SOLID übertrieben ist
Wichtig zu wissen: SOLID kann auch übertrieben werden. Wenn du für ein 50-Zeilen-Skript fünf Interfaces und Dependency Injection einbaust, hast du Over-Engineering. Gute Faustregeln:
- Kleine Skripte und Prototypen: SOLID meist Overhead. Direkt und einfach reicht.
- Mittlere Apps: SRP und OCP konsequent anwenden, andere nach Bedarf.
- Große, langlebige Systeme: alle 5 Prinzipien wichtig. Lieber etwas mehr Code zu Beginn als später unwartbar.
Auch das Gegenteil ist wahr: wenn dein Code sich nicht ändert, brauchst du keine Erweiterbarkeit. You aren't gonna need it (YAGNI) ist ein Gegenprinzip. Die Kunst: das richtige Maß finden.
9) Self-Check: ist mein Code SOLID?
new ConcreteClass() in meiner Business-Logik? → Eventuell injizieren.10) Häufige Klausurfragen
SOLID kommt in IHK-Prüfungen, Hochschulklausuren und Bewerbungsgesprächen. Die wichtigsten Fragen:
- „Wofür steht SOLID?" → Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion
- „Was bedeutet S in SOLID?" → eine Klasse, eine Verantwortung, ein Grund zur Änderung
- „Was bedeutet OCP?" → offen für Erweiterung (neue Klassen), geschlossen für Modifikation (kein Anfassen bestehenden Codes)
- „Wer war Liskov?" → Barbara Liskov, Turing-Award-Gewinnerin, hat das Prinzip formuliert
- „Beispiel für LSP-Verstoß?" → Pinguin erbt von Vogel, kann aber nicht fliegen; Quadrat erbt von Rechteck
- „Was sagt ISP?" → kleine Interfaces statt großer; Klienten nicht zwingen unbenötigte Methoden zu implementieren
- „Wie hängt DIP mit Dependency Injection zusammen?" → DIP ist das Prinzip („auf Abstraktionen verlassen"), DI ist die Technik (Abhängigkeiten von außen reinreichen)
- „Wer hat SOLID populär gemacht?" → Robert C. Martin („Uncle Bob"), frühe 2000er, fasste bestehende Ideen zusammen
Zusammenfassung
SOLID = 5 Designprinzipien für wartbaren OOP-Code von Robert C. Martin. S Single Responsibility: eine Klasse, eine Verantwortung. O Open/Closed: offen für Erweiterung (neue Klassen), geschlossen für Modifikation (kein Anfassen). L Liskov Substitution: Unterklassen müssen ohne Bruch für Oberklassen einsetzbar sein. I Interface Segregation: kleine fokussierte Interfaces statt großer. D Dependency Inversion: Code soll von Abstraktionen abhängen, nicht von konkreten Implementierungen → führt zu Dependency Injection. SOLID-Konformität führt zu testbarem, erweiterbarem Code. Aber: nicht überall sinnvoll – für Skripte Overhead, für große Systeme essentiell. Klausurthema in IHK, Hochschule und Bewerbungsgesprächen.
