Nacheinander werden eintritt(1), eintritt(3), eintritt(4) und eintritt(5) aufgerufen. Fasse den Ablauf in der Tabelle zusammen: Trage ein, wie viele Gäste danach gezählt sind und was der Aufruf zurückgibt. Die erste Zeile ist vorgegeben.
Fülle alle Felder aus und prüfe dann. Dezimalzahlen mit Komma oder Punkt; Enter prüft ebenfalls.
Aufruf
gaeste danach
Rückgabe in €
eintritt(1)
3
9
eintritt(3)
eintritt(4)
eintritt(5)
Das Attribut gaeste wächst bei jedem Aufruf um die Gruppe: 3, 6, 10, 15. summe ist lokal und entsteht neu; der Rückgabewert ist immer das Dreifache der neuen Gästezahl.
Gehe die Aufrufe der Reihe nach durch. Welche Zahl gilt jeweils vor dem Aufruf für gaeste?
Die neue Gästezahl ist die alte plus die Gruppe. Der Rückgabewert ist das Dreifache davon.
A2
Preis nach Maß
AFB II
Eine Kantine berechnet Preise für Menüs. Es gibt zwei Fassungen der Operation preis.
Fassung 1:
Java
double grund = 12; // Attributdouble preis(int n) {
double grund = 5 + 2 * n;
return grund * 3;
}
Fassung 2:
Java
double grund = 12; // Attributdouble preis(int n) {
double grund = 5 + 2 * n;
return grund * 3 + this.grund;
}
Ermittle mit dem Regler jeweils die kleinste Zahl n, für die der Preis mindestens 60 € beträgt.
Verschiebe den Regler (ziehen oder auf die Skala tippen) bzw. nutze die Knöpfe − und +; die Werte darüber laufen live mit. Tastatur: Tab zum Regler, ←/→ ein Schritt, Bild↑/Bild↓ zehn Schritte, Pos1/Ende Anfang/Ende, Enter prüft.
Fassung 1: grund ist 5 + 2 · n und verdeckt das Attribut 12. Der Preis ist 3 · (5 + 2 · n); n = 7 ergibt 57 €, n = 8 ergibt 63 €. Fassung 2: this.grund greift auf das Attribut 12 zu, der Preis ist 3 · (5 + 2 · n) + 12; n = 5 ergibt 57 €, n = 6 ergibt 63 €.
Frage dich in beiden Fassungen, welches grund an welcher Stelle gemeint ist: die lokale Variable oder das Attribut.
In Fassung 1 geht nur die lokale Variable in den Preis ein. In Fassung 2 kommt mit this.grund das Attribut 12 hinzu, deshalb genügt ein kleineres n.
A3
Die Operation setzeLimit
AFB II
Ein Navigationsgerät besitzt das Attribut limit (die erlaubte Höchstgeschwindigkeit). Erstelle die Operation setzeLimit: Sie soll den übergebenen Wert im Attribut speichern und den bisherigen Wert des Attributs zurückgeben. Drei Bausteine gehören nicht dazu.
Setze den Bauplan von links nach rechts zusammen. Ein Klick legt den Baustein auf den nächsten freien Platz, ein Klick im Bauplan legt ihn zurück. Enter funktioniert genauso.
Der Parameter limit verdeckt das Attribut. Der alte Wert muss mit this.limit gelesen werden, bevor er überschrieben wird (this.limit = limit). limit = limit weist dem Parameter sich selbst zu und ändert das Attribut nicht; int alt = limit würde den neuen Wert merken.
Der Parameter und das Attribut heißen gleich. Überlege, wie du in der Operation an das Attribut herankommst.
Zuerst den alten Wert des Attributs in einer lokalen Variable sichern, dann das Attribut überschreiben, am Ende die gesicherte Variable zurückgeben.