final
wird für Konstante verwendet.
In dem leicht verbesserten Code wird ERRORFLAG
als Rückgabewert verwendet, um einen Fehler zu markieren.
Vom Aufrufer wird erwartet, dass er den Rückgabewert überprüft, bevor er ihn verwendet.
In einem großen Projekt, könnte der gleiche Wert durchgängig im gesamten Code verwendet werden.
Das verbessert die Konsistenz und die Lesbarkeit.
Wenn der Wert geändert werden muss, muss die Änderung nur an einer Stelle vorgenommen werden.
public class Monat { // Konstante final int ERRORFLAG = 999; // Instanzvariablen private int monat; // 1 == Januar private int jahr; // Jahr als int, z.B. 2017 private int anzahlTageImMonat; // Anzahl der Tage in diesem Monat // Temperatur Daten private int[] temp; //Temperatur Tag 1 in temp[1] private boolean[] valide; ... // Getters und Setters public int getTemp( int tag ) { if ( tag > 0 && tag <= tageImMonat && valide[tag] ) return temp[ tag ]; else return ERRORFLAG; } public boolean setTemp( int tag, int grad ) { if ( tag > 0 && tag <= tageImMonat ) { temp[tag] = grad; valide[tag] = true; return true; } else return false; } public String toString() { String str = monat + "." + jahr + "\n"; for ( int tag = 1; ; tag++ ) { str += tag + ": "; if ( ) str += temp[tag] ; else str += "keine Daten"; str += "\n"; } return str; } } }
Amüsante Geschichte: Als das Jahr 2000 näher rückte mussten viele Programme überarbeitet werden, da sie zwei Ziffern für das Jahr verwendet haben. "65" wurde für "1965" usw. verwendet. Nicht initialisierte Jahre waren auf "99" gesetzt worden, was als die Programme geschrieben wurden in weiter Zukunft lag. Aber im Jahr "1999" funktioniert dieser Wert nicht mehr. Viele Videorekorder hörten im Jahr 1999 auf zu funktionieren.
Natürlich brauchen wir noch eine toString()
Methode. Wir vervollständigen sie.