Zu dieser Karteikarte gibt es einen kompletten Satz an Karteikarten. Kostenlos!
79
77. Was sind Vor- und Nachbedingung und wie hängen sie voneinander ab (Definition!)? Wie kann man die Vorbedingung (am Besten) prüfen?
* Definition:
o Die Vorbedingung ist ein Prädikat auf den Eingabedaten und dem Vorzustand, das feststellt, wann die Methode ausführbar ist. Die Vorbedingung beschreibt die Menge möglicher Eingabedaten.
o Die Nachbedingung ist ein Prädikat auf den Eingabedaten, dem Vorzustand, den Ausgabedaten und dem Nachzustand, das die Semantik einer Methode beschreibt. Die Nachbedingung beschreibt eine Relation zwischen Eingabe und Ausgabe.
Ohne Bezug zur Vorbedingung sagt eine Nachbedingung nichts aus.
Beispiel:
Die Nachbedingung = 9 ist aussagelos, aber nicht die Nachbedingung = Wurzel aus der Vorbedingung 81. [27]
Ein optimistisches Vorgehen ist es, dem Aufrufer die Verantwortung zu überlassen die Vorbedingung sicherzustellen. Besser ist die pessimistische Vorgehensweise, bei der eine Methode ihre Vorbedingung selbst prüft und in dem Fall, dass die Vorbedingung nicht erfüllt ist, beispielsweise nichts zu tun oder eine Ausnahme zu werfen.
o Die Vorbedingung ist ein Prädikat auf den Eingabedaten und dem Vorzustand, das feststellt, wann die Methode ausführbar ist. Die Vorbedingung beschreibt die Menge möglicher Eingabedaten.
o Die Nachbedingung ist ein Prädikat auf den Eingabedaten, dem Vorzustand, den Ausgabedaten und dem Nachzustand, das die Semantik einer Methode beschreibt. Die Nachbedingung beschreibt eine Relation zwischen Eingabe und Ausgabe.
Ohne Bezug zur Vorbedingung sagt eine Nachbedingung nichts aus.
Beispiel:
Die Nachbedingung = 9 ist aussagelos, aber nicht die Nachbedingung = Wurzel aus der Vorbedingung 81. [27]
Ein optimistisches Vorgehen ist es, dem Aufrufer die Verantwortung zu überlassen die Vorbedingung sicherzustellen. Besser ist die pessimistische Vorgehensweise, bei der eine Methode ihre Vorbedingung selbst prüft und in dem Fall, dass die Vorbedingung nicht erfüllt ist, beispielsweise nichts zu tun oder eine Ausnahme zu werfen.