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