Grundprinzipien der objektorientierten Programmierung
Loose Coupling – Schwache Kopplung
Definiert, wie sehr Systembesstandteile voneinander abhängen
Klassen sollten so strukturiert sein, dass sie auf möglichst wenige andere Klassen angewiesen sind, um funktionieren zu können
Erhöht Wiederverwendbarkeit der Klassen enorm!
sinnvolle Abhängigkeiten
Stark zusammengehörende Code-Teile sollten zusammengefasst werden
Nicht zusammenhängende Code-Teile sollten ausgelagert werden (don’t do too much!)
Veränderungen einer Klasse sollten im Optimalfall keine Änderung an weiteren Klassen hervorrufen
Information Hiding – Geheimnisprinzip
Jede Klasse gibt nur das nötigste nach außen und „weiß“ selbst auch nur das, was sie zum funktionieren wissen muss
Keine Interna werden nach außen getragen. Ich muss nicht wissen, dass intern ein Stack als Datenstruktur verwendet wird, um die Klasse zu benutzen
Änderungen innerhalb der Klasse selbst sollten nach außen nicht sichtbar sein, da andere Klassen nur das nötigste von ihr kennen
Spielt auf sinnvolle Verwendung von public / private / protected an
Homogenität
Vergleichbare Probleme sollten mit vergleichbarer Komplexität gelöst werden
Wiederverwendung von bereits bestehenden Lösungen soweit wie möglich
Leitlinie: „Erwartungshaltung“ anderer Teammitglieder sollte erfüllt werden, was den Umfang der Realisierung einer Klasse angeht
Don’t repeat yourself – Redundanzfreiheit
Jede Funktionalität ist an genau einer Stelle vorhanden und wird – bei Bedarf – von anderen Systembestandteilen verwendet (Don’t reinvent the wheel)
Sollte Code mehrfach verwendet worden sein (Copy & Paste aus Faulheit), wird eine neue Funktion daraus erschaffen, die dann von allen Teilen aus aufgerufen wird
Vorteil: Bei einem Fehler muss nur an einer Stelle korrigiert werden und alle anderen, davon abhängigen Teile sind automatisch „gefixt“