Java Reference
In-Depth Information
Eine Verschärfung einer Invariante führt zu keinen Problemen, da die Invariante nach
wie vor im erwarteten Bereich der Basisklasse liegt.
Abgeleitete Klassen dürfen Invarianten nur verschärfen.
1.8 Open-Closed-Prinzip
Das Open-Closed-Prinzip (OCP) stammt von Bertrand Meyer
[Mey97] und lautet:
"Module sollten offen sein und geschlossen".
Dieser scheinbare Widerspruch lässt sich folgendermaßen erklären:
x
Ein Modul sollte
offen
sein in dem Sinne, dass es erweiterbar ist. Zum Beispiel
sollten neue Methoden oder Datenfelder hinzugefügt werden können. Eine Klasse
sollte also angepasst und dabei abgeändert werden können, ohne den Code und
die Schnittstelle der ursprünglichen Klasse zu ändern. Erweiterungen können z. B.
- durch statische Vererbung oder
- dynamisch über die Verwendung einer aggregierten Abstraktion
11
(siehe bei-
spielsweise das Brückenmuster oder Bild 1-12)
erfolgen.
x
Ein Modul ist
geschlossen
, wenn es zur Benutzung in unveränderter Form durch
andere Module im Rahmen einer Bibliothek zur Verfügung steht. Dies bedeutet,
dass ein Modul stabil ist und wiederverwendet werden kann.
Auf der Implementierungsebene bedeutet Geschlossenheit, dass der Code geschlos-
sen für Veränderungen ist. Der bereits vorhandene Code eines Moduls kann übersetzt
und getestet werden, er ist lauffähig und kann in eine Bibliothek aufgenommen und be-
nutzt werden.
Durch die
Geschlossenheit des Quellcodes bzw. des lauffä-
higen Codes
gegenüber Veränderungen erreicht man Robustheit
und Wiederverwendbarkeit der vorhandenen Programme in einer
Bibliothek. Durch die
Offenheit des Quellcodes bzw. des lauf-
fähigen Codes
gewinnt man eine Wiederverwendbarkeit des vor-
handenen Quellcodes als Teil von neuen Modulen und damit eine
Erweiterbarkeit des Vorhandenen.
11
Eine aggregierte Abstraktion kann eine aggregierte Schnittstelle bzw. eine aggregierte abstrakte
Klasse sein.
Search WWH ::
Custom Search