MINT üben

Reihungen von Objekten

Klassenfahrtkasse und Gewächshausbeete: Reihungen füllen, mit null-Prüfung durchlaufen und Summe, Minimum und Suche bilden.

Dein Fortschritt:
0 / 0 Aufgaben
1

Kasse für die Klassenfahrt nach Berlin

AFB I–II

Für die Klassenfahrt eines Jahrgangs verwaltet die Kassenwartin die Einzahlungen mit einem Java-Programm. Jede angemeldete Person wird durch ein Objekt der Klasse Teilnehmer dargestellt. Material 1 zeigt einen ersten Test, Material 2 die Klasse Klassenfahrt, die die Anmeldungen in einer Reihung verwaltet. Freie Plätze enthalten null.

Material 1: Klasse Teilnehmer und Testausschnitt
Teilnehmer
  • - name: Zeichenkette
  • - bezahlt: Ganzzahl
  • c Teilnehmer(name: Zeichenkette, bezahlt: Ganzzahl)
  • + getName(): Zeichenkette
  • + getBezahlt(): Ganzzahl
  • + einzahlen(betrag: Ganzzahl)
Teilnehmer[] gruppe = new Teilnehmer[5];
gruppe[0] = new Teilnehmer("Mia", 180);
gruppe[1] = new Teilnehmer("Ben", 120);
gruppe[3] = new Teilnehmer("Ayla", 180);
gruppe[4] = gruppe[1];
gruppe[4].einzahlen(60);
int summe = 0;
for (int i = 0; i < gruppe.length; i++) {
    if (gruppe[i] != null) {
        summe = summe + gruppe[i].getBezahlt();
    }
}
Beträge in Euro. einzahlen erhöht bezahlt um einen positiven Betrag.
Material 2: Klasse Klassenfahrt (Auszug)
public class Klassenfahrt {
    private Teilnehmer[] teilnehmer;
    private int preis;

    public Klassenfahrt(int plaetze, int preis) {
        teilnehmer = new Teilnehmer[plaetze];
        this.preis = preis;
    }

    public boolean anmelden(Teilnehmer t) {
        for (int i = 0; i < teilnehmer.length; i++) {
            if (teilnehmer[i] == null) {
                teilnehmer[i] = t;
                return true;
            }
        }
        return false;
    }
}
preis ist der Fahrtpreis pro Person in Euro.
  1. Bestimmen Sie für Material 1 die Anzahl der erzeugten Teilnehmer-Objekte, den Wert von gruppe[1].getBezahlt() und den Wert von summe nach dem Durchlauf.
  2. Erläutern Sie, was die Anweisung new Teilnehmer[5] erzeugt und welche Folge es hätte, wenn in der Schleife aus Material 1 die Abfrage gruppe[i] != null fehlte.
  3. Erweitern Sie die Klasse Klassenfahrt um die Methode getOffen(): Ganzzahl, die den insgesamt noch fehlenden Betrag aller Angemeldeten liefert (Überzahlungen werden nicht verrechnet), und um die Methode suchen(name: Zeichenkette): Teilnehmer, die die erste Person mit diesem Namen liefert oder null, falls es keine gibt.

Hinweise

Hinweis zu Aufgabe a)
Zähle die Konstruktoraufrufe mit runden Klammern, z. B. new Teilnehmer("Mia", 180) – nicht die mit eckigen. Was steht nach gruppe[4] = gruppe[1]; in Platz 4?
Hinweis zu Aufgabe b)
Welcher Platz der Reihung wurde nie belegt? Was passiert, wenn man über diesen Platz eine Methode aufruft?
Hinweis zu Aufgabe c)
Beide Methoden durchlaufen alle Plätze und prüfen zuerst auf null. Namen vergleichst du mit equals; sobald du fündig bist, kannst du mit return abbrechen.