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