Java Reference
In-Depth Information
Der Vertrag einer Klasse umfasst die Verträge der Methoden
sowie die Invarianten der Klasse . Verschiedenen Kunden einer
Klasse können verschiedene Verträge zur Verfügung gestellt wer-
den.
Eine Vorbedingung (engl. precondition ) stellt die Einschränkungen dar, unter denen
eine Methode korrekt aufgerufen wird. Eine Vorbedingung stellt eine Verpflichtung für
einen Aufrufer dar, sei es, dass der Aufruf innerhalb der eigenen Klasse erfolgt oder
von einer Kundenklasse kommt. Ein korrekt arbeitendes System führt nie einen Aufruf
durch, der nicht die Vorbedingung der gerufenen Methode erfüllen kann. Eine Vorbe-
dingung bindet also einen Aufrufer. Eine Vorbedingung definiert die Bedingung, unter
der ein Aufruf zulässig ist. Sie stellt eine Verpflichtung für den Aufrufer dar und
einen Nutzen für den Aufgerufenen .
Der Aufrufer hat die Pflicht, die Vorbedingungen des Aufzurufen-
den zu erfüllen. Er muss prüfen, ob eine Vorbedingung erfüllt ist.
Den Nutzen hat der Aufgerufene.
Eine Nachbedingung (engl. postcondition ) stellt den Zustand nach dem Aufruf einer
Methode dar. Eine Nachbedingung bindet eine Methode einer Klasse. Sie stellt die Be-
dingung dar, die von der Methode eingehalten werden muss. Eine Nachbedingung ist
eine Verpflichtung für den Aufgerufenen und ein Nutzen für den Aufrufer . Mit der
Nachbedingung wird garantiert, dass der Aufrufer nach Ausführung einer Methode
einen Zustand mit gewissen Eigenschaften vorfindet, natürlich immer unter der Vor-
aussetzung, dass beim Aufruf der Methode die Vorbedingung erfüllt war.
Bei einer Nachbedingung hat der Aufgerufene die Pflicht, den
Nutzen hat der Aufrufer. Der Aufgerufene muss also die Nachbe-
dingung überprüfen.
Wie bei einem guten Vertrag im täglichen Leben haben also Auf-
rufer und Aufgerufener Pflichten und Vorteile. Der Aufgerufene
hat den Vorteil, dass er unter den gewünschten Bedingungen ab-
laufen kann. Der Aufrufer hat den Vorteil, dass gewisse Bedin-
gungen nach dem Aufruf einer Methode erfüllt sind.
Eine Invariante (engl. invariant ) ist eine Zusicherung bezüglich einer Klasse. Sie
muss also von allen Objekten dieser Klasse eingehalten werden. Die Eigenschaften
der Invariante gelten für alle Operationen einer Klasse und nicht individuell nur für eine
Methode. Sie sind damit Klasseneigenschaften im Gegensatz zu Vor- und Nachbedin-
gungen von Methoden, die den Aufruf und das Ergebnis einzelner Methoden charakte-
risieren.
Search WWH ::




Custom Search