Ein Programmier-Job für dich!
Giovanni ist der beste Gelaterist der Stadt. Besonders sein Meloneneis mit Maracuja-Topping ist Weltklasse! Und sein Pfefferminzeis mit Zartbitterschokoladenstreuseln hat gerade einen Stern bekommen.
Nun kommt er mit dem Schreiben seiner Speisekarte nicht mehr hinterher, weil er so viel Eis herstellen muss. Kannst du Giovanni helfen? Er hat gerade noch Zeit, diese Klassenkarte auf eine Serviette zu kritzeln, dann musste er schon wieder los, um neue Zutaten einzukaufen…
Wenn die Methode eisbecherHinzufügen(deinEisbecher)
aufgerufen wird, sollen erst das Attribut eis1
und dann das Attribut eis2
mit dem übergebenen Eisbecher belegt werden. Wenn beide schon belegt sind, soll »Leider ist die Speisekarte voll.« ausgegeben werden.
Die Methode speisekarteDrucken()
soll an jedem gespeicherten Eisbecher den speisekarteneintrag abfragen und diese ausgeben.
Gut, dann schnell los! Die Schlange vor Giovannis Edel-Eisdiele wird schon wieder länger!
Lege im gleichen Workspace, in dem auch die Klasse Eisbecher
sich befindet, eine Datei »SimpleSpeisekarte.java« an. Beginne mit der Klassendefinition:
public class SimpleSpeisekarte {
}
Kommst du nun alleine weiter?
Dafür kannst du mehr oder weniger die Zeilen aus der Klassenkarte abschreiben, du musst nur das -
durch das Java-Schlüsselwort private
ersetzen:
public class SimpleSpeisekarte {
private Eisbecher eis1;
private Eisbecher eis2;
}
Wie ist es mit der Methode eisbecherHinzufügen
? Bekommst du die hin?
Beginne mit dem Methodenkopf. Für das +
schreiben wir public
, damit die Methode von außen aufgerufen werden kann. Den Rest kannst du fast direkt übernehmen:
public void eisbecherHinzufügen(Eisbecher eis) {
}
Nun soll die Methode prüfen, ob eis1
schon eine Referenz auf einen Eisbecher hält, und falls nicht, den übergebenen Eisbecher dort abspeichern. Solange noch keine Referenz gehalten wird, wird der Vergleich (this.eis1 == null)
zu true
ausgewertet – das machen wir uns zu Nutze:
public void eisbecherHinzufügen(Eisbecher eis) {
if (this.eis1 == null) {
this.eis1 = eis;
}
}
Dann wiederholen wir das Spiel mit eis2
– dort könnte ja noch Platz sein!
public void eisbecherHinzufügen(Eisbecher eis) {
if (this.eis1 == null) {
this.eis1 = eis;
} else if (this.eis2 == null) {
this.eis2 = eis;
}
}
Dann geben wir eine entsprechende Meldung aus, und sind fertig:
public void eisbecherHinzufügen(Eisbecher eis) {
if (this.eis1 == null) {
this.eis1 = eis;
} else if (this.eis2 == null) {
this.eis2 = eis;
} else{
println("Leider ist die Speisekarte voll.");
}
}
Genau!
Wie sieht es denn mit der Methode speisekarteDrucken()
aus. Bekommst du die hin?
println()
wirst du brauchen, das ist richtig! Zunächst einmal musst du allerdings den Methodenkopf aufschreiben:
public void speisekarteDrucken() {
}
Dann holen wir uns mit der Methode speisekarteneintrag()
, die wir an unseren Eisbecher-Objekten aufrufen, die Infos die wir brauchen, und geben sie aus. Das geht sogar in jeweils einer Zeile!
public void speisekarteDrucken() {
println(eis1.speisekarteneintrag());
println(eis2.speisekarteneintrag());
}
Sehr schön, dann bist du mit der Klasse fertig. Lass uns gleich probieren, ob sie funktioniert, denn die Leute warten schon ungeduldig!
Erzeuge in einer Datei Start.java
im gleichen Workspace die passenden Eisbecher-Objekte, füge sie der Speisekarte hinzu, und lass sie ausgeben!
Eisbecher e = new Eisbecher("Melone");
e.setTopping("Maracuja");
Eisbecher f = new Eisbecher("Pfefferminze");
f.setTopping("Zartbitterschokoladenstreusel");
SimpleSpeisekarte karte = new SimpleSpeisekarte();
karte.eisbecherHinzufügen(e);
karte.eisbecherHinzufügen(f);
karte.speisekarteDrucken();
Gut gemacht! Hier noch der Code unserer Klasse SimpleSpeisekarte
im Überblick:
public class SimpleSpeisekarte {
private Eisbecher eis1;
private Eisbecher eis2;
public void eisbecherHinzufügen(Eisbecher eis) {
if (this.eis1 == null) {
this.eis1 = eis;
} else if (this.eis2 == null) {
this.eis2 = eis;
} else{
println("Leider ist die Speisekarte voll.");
}
}
public void speisekarteDrucken() {
println(eis1.speisekarteneintrag());
println(eis2.speisekarteneintrag());
}
}