Wenn wir vergessen die Datei zu schließen, könnten die Daten nicht in die Datei geschrieben werden. Das Schreiben der Daten in eine Datei ist die Aufgabe des Betriebssystems (Operating System, kurz OS). Unser Programm fragt das Betriebssystem nur die I/O zu übernehmen, aber andere Programme könnten ebenfalls I/O anfragen, so dass unsere Anfrage vielleicht warten müsste. Wenn unser Programm beendet wird bevor die I/O durchgeführt wurde, könnte das OS die Daten nicht in die Datei geschrieben haben.
Falls wir die täglichen Höchsttemperaturen für ein ganzes Jahr aufzeichnen wollten,
könnten wir ein Objekt Jahr
haben, dass aus 12 Monat
s-Objekten besteht.
Es ist zweckmäßig die Monate beginnend mit 1 zu nummerieren. Also wird das Array 13 Zellen haben, wovon die Zelle 0 nicht verwendet wird.
Und wenn wir die Temperaturen für ein Jahrhundert aufzeichnen wollten, hätten wir ein Jahrhundert
-Objekt, das aus 100 Jahr
-Objekten besteht.
Hier ist eine sehr grobe Skizze für ein Jahr
-Objekt:
class Jahr { // Instanzvariablen private int jahr; // jahr als int, z.B. 2024 private Monat[] monat; public Jahr ( int jahr ) { this.jahr = jahr; monat = new Monat[13;] } . . . . }
Beachtet, dass jede Zelle des Arrays monat
potentiell eine
Referenz auf ein Monat
-Objekt enthalten kann.
Dieses Array könnte als ein Array von Monat
en bezeichnet werden,
aber tatsächlich enthält es Objektreferenzen.
Das ist anders wie bei den Arrays in Monat
wo jede Zelle der Arrays von einem
primitiven Typ ist.
Rückblick: Wie werden Referenzvariablen, wenn sie Instanzvariablen sind, automatisch initialisiert?