Java Reference
In-Depth Information
1.1.1 Weiterentwickelbarkeit
Weiterentwickelbarkeit bedeutet nicht nur die Erweiterbarkeit im Rahmen einer
bestimmten Architektur, sondern auch die Wiederverwendbarkeit vorhandener Kom-
ponenten im Rahmen einer anderen Architektur. Die
Weiterentwickelbarkeit
wird
gefördert durch die Einhaltung
x
des Interface Segregation-Prinzips,
x
von Loose Coupling,
x
des liskovschen Substitutionsprinzips,
x
des Open-Closed-Prinzips und
x
des Dependency Inversion-Prinzips.
Des Weiteren dienen Inversion of Control und verschiedene Techniken bei der Erzeu-
gung von Objekten wie z. B. Dependency Injection der Reduktion der schädlichen
Abhängigkeiten in erheblichem Maße, auch wenn sie nicht den Status eines Prinzips
haben.
Das
Interface Segregation-Prinzip
will unnötige Abhängigkeiten eines Moduls wie ei-
ner Klasse oder Komponente von nicht benötigten Schnittstellen vermeiden.
Kapselung und Abstraktion ermöglichen nicht nur eine schmale Schnittstelle, sondern
auch das Verstecken der Daten und der Methodenrümpfe eines Objekts im nicht zu-
gänglichen Inneren einer Kapsel (
Information Hiding
). Bei Einhalten des Information
Hiding sind die verschiedenen Objekte über schmale Schnittstellen als
Abstraktion
nur schwach gekoppelt (
Loose Coupling
).
Bei Einhaltung des
liskovschen Substitutionsprinzips
können Programme, die Re-
ferenzen auf Objekte von Basisklassen verwenden, auch für Referenzen auf Objekte
von abgeleiteten Klassen verwendet werden. Dies stellt eine Erweiterung und damit
auch eine Weiterentwicklung dar.
Das
Open-Closed-Prinzip
fordert, dass vorhandene lauffähige Software nicht verän-
dert werden darf, die vorhandene Software aber erweiterbar sein soll.
Das
Dependency Inversion-Prinzip
dient zur Vermeidung bzw. Reduzierung von Ab-
hängigkeiten unter Modulen, die in einer hierarchischen Beziehung zueinander stehen.
1.1.2 Korrektheit
Das
liskovsche Substitutionsprinzip
postuliert, dass eine Referenz auf ein Objekt
einer Basisklasse jederzeit auch auf ein Objekt einer abgeleiteten Klasse zeigen kann.
Damit eine solche Ersetzung korrekt funktioniert, ist die Einhaltung des Prinzips
Design by Contract
absolut erforderlich. Beide Prinzipien tragen zur
Korrektheit
polymorpher Programme
8
wesentlich bei.
8
Korrektheit von Software umfasst viele Aspekte, siehe etwa [Gol12]. An dieser Stelle hier ist nur aus-
geführt, welche der behandelten objektorientierten Entwurfsprinzipien für den Entwurf einen Beitrag
zur Korrektheit liefern können.
Search WWH ::
Custom Search