Dein Fortschritt:
0 / 0 Aufgaben
1
Kasse für die Klassenfahrt nach Berlin
AFB I–IIFü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();
}
}
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.- Bestimmen Sie für Material 1 die Anzahl der erzeugten Teilnehmer-Objekte, den Wert von
gruppe[1].getBezahlt()und den Wert vonsummenach dem Durchlauf. - Erläutern Sie, was die Anweisung
new Teilnehmer[5]erzeugt und welche Folge es hätte, wenn in der Schleife aus Material 1 die Abfragegruppe[i] != nullfehlte. - Erweitern Sie die Klasse
Klassenfahrtum die MethodegetOffen(): Ganzzahl, die den insgesamt noch fehlenden Betrag aller Angemeldeten liefert (Überzahlungen werden nicht verrechnet), und um die Methodesuchen(name: Zeichenkette): Teilnehmer, die die erste Person mit diesem Namen liefert odernull, 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.