Java Reference
In-Depth Information
wurf unabhängig von der jeweiligen objektorientierten Programmiersprache eingesetzt
werden kann.
Eine Klasse besteht nicht nur aus Methoden und Attributen - eine Klasse wird von an-
deren Klassen - hier Kunden genannt - benutzt und hat damit Beziehungen zu all
ihren Kunden.
Das Prinzip "Entwurf durch Verträge" fordert für diese Bezie-
hungen eine formale Übereinkunft zwischen den beteiligten Part-
nern, in der präzise definiert wird, unter welchen Umständen ein
korrekter Ablauf des Programms erfolgt.
Um was es hier vor allem geht, ist, dass beim Aufruf einer Methode Aufrufer und auf-
gerufene Methode sich gegenseitig aufeinander verlassen können. Die Beziehung zwi-
schen Aufrufer und aufgerufener Methode kann man formal als einen
Vertrag
bezeichnen, der nicht gebrochen werden darf, da ansonsten eine Fehlersituation ent-
steht. Bei einem Vertrag haben in der Regel beide Seiten Rechte und Pflichten.
In der Technik "Entwurf durch Verträge" von Bertrand Meyer werden Verträge mit Hilfe
von
Zusicherungen
spezifiziert. Eine Zusicherung ist ein boolescher Ausdruck an ei-
ner bestimmten Programmstelle, der niemals falsch werden darf.
1.7.1 Zusicherungen
Ein Vertrag enthält drei verschiedene Arten von Zusicherungen:
x
Vorbedingungen
,
x
Nachbedingungen
und
x
Invarianten
.
So wie im Alltag ein Vertrag die Beziehungen zwischen Parteien (Personen, Organisa-
tionen) regelt, beschreibt ein Vorbedingungs-Nachbedingungs-Paar den Vertrag einer
Methode mit ihrem Kunden, dem Aufrufer.
Der
Vertrag einer Methode
umfasst die
Vor- und Nachbedin-
gungen einer Methode
.
Invarianten beziehen sich nicht auf eine einzelne Methode.
Invarianten
beziehen sich
immer auf eine
Klasse
. Eine Invariante muss also für jedes einzelne Objekt einer Klas-
se erfüllt sein, damit ein System korrekt arbeitet oder in einem korrekten Zustand ist.
Da die Invarianten von allen Methoden einer Klasse, die von einem Kunden aufgerufen
werden können, eingehalten werden müssen, um die Korrektheit zu gewährleisten,
spricht man auch von
Klasseninvarianten
.
Search WWH ::
Custom Search