Axel Rogat
Objektorientiertes Programmieren mit C++ und JAVA
 
10.7: Konstante Funktionen Kapitel 10 11.1: Kon-/Destruktoren 
 
  10.8 Konsistenz  
 

Im Sinn der objektorientierten Programmierung sollten Objekte zu jedem Zeitpunkt in einem sinnvollen, definierten Zustand sein. Während eine Operation abläuft, dürfen sie intern natürlich kurzzeitig ungültige Daten enthalten.

Eine Operation inc für Daten könnte z.B. das Objekt auf das Datum des jeweils folgenden Tags setzen:

void date::inc() { if (++day>=29) if ( day > (month==2) ? (is_leapyear(year)?29:28) : mlen[month-1] ) { day=1; if (++month==13) { month=1; ++year; } } }
An mehreren Stellen ergeben sich Situationen, in denen das Tripel (day, month, year) nicht für ein gültiges Datum steht, z.B. wenn month nach dem ++ den Wert 13 hat.

Am Ende der Operation hat das Objekt aber wieder einen sinnvollen Wert. Solange das Objekt in dieser Weise undefiniert ist, sollten keine Elementfunktionen für dieses Objekt aufgerufen werden, die nicht explizit dazu gedacht sind, es zu "reparieren".

 
10.7: Konstante Funktionen Startseite 11.1: Kon-/Destruktoren 
 

© 1998 Axel Rogat