Siehe unten.
Getters und Setters wären einfach, wenn wir Fehler ignorieren könnten. Aber das können wir nicht. Es gibt verschiedene Möglichkeiten mit fehlerhaften Parametern umzugehen.
In dem Code unten gibt getTemp() 999 zurück.
wenn tagImMonat außerhalb des gültigen Bereichs ist oder
der angegebene Tag keine gültigen Daten hat.
Es ist schlechte Programmpraxis eine spezielle Zahl wie diese überall verstreut im Code zu haben.
Richtige Programme können Hundertausende Codezeilen haben und solche "magischen Zahlen"
laden zu Fehler ein und verursachen Verwirrung.
Siehe dazu die nächste Seite
setTemp() gibt true zurück, wenn die Operation erfolgreich war,
andernfalls gibt sie false zurück.
Das ist eine feine Technik, aber diese kann nicht für get-Methoden verwendet werden.
public class Monat
{
// Instanzvariablen
private int monat; // 1 == Januar
private int jahr; // Jahr als int, z.B. 2017
private int tageImMonat; // Anzahl der Tage in diesem Monat
// Temperatur Daten
private int[] temp; //Temperatur Tag 1 in temp[1]
private boolean[] valide;
// Konstruktor
public Monat( int monat, int jahr)
. . .
// Getters und Setters
public int getTemp( int tag )
{
if ( tag > 0 && tag <= tageImMonat && valide[tag] )
return temp[ tag ];
else
return 999; // "Magische" Zahl, wird in Kürze verbessert
}
public boolean setTemp( int tag, int grad )
{
if ( tag > 0 && tag <= tageImMonat )
{
temp[tag] = grad;
valide[tag] = true;
return true;
}
else
return false;
}
}
(Rückblick: ) Was bedeutet final in Java?