Integritätsbedingung

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Version vom 21. Februar 2011, 18:51 Uhr von Kowa (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „{{In Bearbeitung}} =Definition= Integritätsbedingungen ('''Zusicherungen''', '''Assertions'''') sind Bedingungen, die ein Objekt oder eine Entität z…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Dieser Artikel wird derzeit von einem Autor gründlich bearbeitet. Die Inhalte sind daher evtl. noch inkonsistent.

Definition

Integritätsbedingungen (Zusicherungen, Assertions') sind Bedingungen, die ein Objekt oder eine Entität zu bestimmten Zeitpunkten oder dauerhaft erfüllen muss. Derartigen Bedingungen können durch boolesche Terme formal dargestellt werden.

Man unterscheidet verschiedene Arten von Integritätsbedingungen:

  • Invarianten: Diese Bedingungen müssen vom zugehörigen Objekt/von der zugehörigen Entität dauerhaft erfüllt sein.
  • Vorbedingungen: Diese Bedingungen müssen erfüllt sein, bevor eine zugehörige Modifikations-Methode aufgerufen werden kann.
  • Nachbedingungen: Diese Bedingungen müssen erfüllt sein, nachdem eine zugehörige Modifikations-Methode aufgerufen wurde.

Bemerkung

Integritätsbedingungen können vom System selbstständig überwacht werden (wie dies z.B. bei SQL der Fall ist) oder vom Programmierer zu bestimmten Zeitpunkten überprüft werden. Dazu gibt es häufig spezielle Befehle (wie z.B. assert) oder sogar ganze Testumgebungen wie z.B. Modultests (Unit-Tests).

Beispiele

Für ein Dreiecksobjekt mit den drei Seiten a, b und c gelten folgende Invarianten:

  • a>0, b>0, c>0
  • a+b>c, b+c>a, a+c>b

Für die Methode pop eines Kellerobjekts (Stack) k gilt die Vorbedingung !k.empty(), d.h., das oberste Kellerelement kann nur entfernt werden, wenn der Keller nicht leer ist.

Nachbedingungen haben häufig einen zeitlichen Bezug, d.h. ein Wert, der sich geändert hat, muss in einer bestimmten Beziehung zu dem ursprünglichen Wert stehen. Zu Beispiel gelten für die Methode scale(f: double): void, die auf ein Dreieck mit den drei Seiten a, b und c angewendet werden, folgende Nachbedingungen:

  • newvalue(a)=f*oldvalue(a), newvalue(b)=f*oldvalue(b), newvalue(c)=f*oldvalue(c)

Quellen

Siehe auch


Dieser Artikel ist GlossarWiki-konform.