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