MINT üben

Primitive Typen und Referenzen

Stromzähler und Kalendertermine: Wer eine Referenz kopiert, bekommt kein neues Objekt – und == fragt nur, ob es dasselbe ist.

Dein Fortschritt:
0 / 0 Aufgaben
1

Stromzähler im Mehrfamilienhaus

AFB I–II

Eine Hausverwaltung erfasst die Stromzähler eines Mehrfamilienhauses mit einer Java-Anwendung. Jeder Zähler hat eine Zählernummer und einen Zählerstand in kWh. Mit erhoehen wird ein positiver Verbrauch aufaddiert. Ein Auszubildender testet die Klasse mit dem abgebildeten Programmausschnitt. In der Variablen alt möchte er sich den alten Zählerstand „merken“, in z2 den Zähler „zum Ausprobieren“.

Material 1: Klasse Zaehler und Testausschnitt
Zaehler
  • - nummer: Zeichenkette
  • - stand: Ganzzahl
  • c Zaehler(nummer: Zeichenkette, stand: Ganzzahl)
  • + getNummer(): Zeichenkette
  • + getStand(): Ganzzahl
  • + erhoehen(kwh: Ganzzahl)
int alt = 4200;
Zaehler z1 = new Zaehler("Z-01", 4200);
Zaehler z2 = z1;
Zaehler z3 = new Zaehler("Z-01", 4200);
int neu = alt;
neu = neu + 150;
z2.erhoehen(150);
z3.erhoehen(30);
Die Methode erhoehen addiert kwh zum Stand, falls kwh > 0 gilt.
  1. Geben Sie nach Ausführung des Ausschnitts die Werte von alt, neu, z1.getStand() und z3.getStand() sowie die Ergebnisse der Vergleiche z1 == z2 und z1 == z3 an.
  2. Stellen Sie den Speicherzustand nach Ausführung des Ausschnitts dar: alle fünf Variablen mit ihrem Inhalt und alle erzeugten Objekte als Objektkarten.
  3. Erklären Sie, warum das „Merken“ mit alt gelingt, das „Ausprobieren“ mit z2 aber den Zähler z1 verändert, obwohl in beiden Fällen nur eine Zuweisung mit = verwendet wird.

Hinweise

Hinweis zu Aufgabe a)
Zähle, wie oft im Ausschnitt new steht – so viele Zähler-Objekte gibt es. Verfolge dann, welche Variable auf welches Objekt verweist.Angeben heißt: nur die Werte, keine Begründung.
Hinweis zu Aufgabe b)
Trenne zwei Bereiche: die Variablen (Name und Inhalt) und die Objekte (Objektkarten). Bei Objektvariablen steht als Inhalt ein Verweis auf eine Karte, kein Zahlenwert.
Hinweis zu Aufgabe c)
Was genau steht in alt, was steht in z1? Die Zuweisung kopiert immer den Inhalt der Variablen – überlege, was dieser Inhalt jeweils ist.