Übung: Eis für alle!
Bist du bereit für eine interessante Übung? Du wirst sehen, welche OOP-Konzepte du schon gut beherrscht, und welche vielleicht noch etwas Aufmerksamkeit brauchen.
Wenn das das kleinste Problem ist, ist heute dein Glückstag! OOP steht für objekt-orientierte Programmierung. Java ist eine Programmiersprache, die dieses Konzept recht konsequent umsetzt. Wir schreiben Klassen, von denen Objekte abgeleitet werden, und können so oft Teile der realen Welt nachbauen oder: modellieren. (Manchmal klappt das auch weniger gut…) Die OOP ist hilfreich, wenn man den Überblick über komplizierte Systeme behalten oder sich die Arbeit sinnvoll teilen möchte.
Folgendes sollst du gleich erledigen:
Sieh dir den unten stehenden Code so genau wie möglich für 3 Minuten an, versuche dir alles so genau wie möglich zu merken.
Minimiere das Fenster mit diesem Auftrag, so dass du den Code nicht sehen kannst, und versuche ihn nun aus dem Gedächtnis aufzuschreiben. (In eine neue Datei/neuen Workspace in der Online-IDE oder auf Papier.)
Wenn du damit fertig bist, sieh dir den Code nochmal an und vergleiche genau (Fragen dazu folgen unten).
Stell dir nun einen Timer auf 3 Minuten. Bis du bereit?
public class Eisbecher {
private String sorte; // z.B. Zitrone
private String topping;
private double preis;
// Konstruktor
public Eisbecher(String sorte) {
this.sorte = sorte;
this.topping = "Schokostreusel";
this.preis = 3.20;
}
// falls andere Toppings gewünscht (z.B. Zuckerkugeln)
public void setTopping(String topping) {
this.topping = topping;
}
public String speisekarteneintrag() {
return sorte + "-Eisbecher mit " + this.topping + ": " + preis;
}
}
Minimiere dieses Fenster nach drei Minuten, und klicke auf »Weiter«, wenn du versucht hast, alles aufzuschreiben, an das du dich erinnerst.
Vergleiche nun und überlege:
Welche Teile konntest Du korrekt wiedergeben?
Gibt es Teile, die unvollständig sind?
Verstehst Du, warum Du Zeilen ausgelassen hast?
Verstehst Du, was in den Zeilen, die Du ausgelassen hast, passiert?
Vergleiche dann dein Ergebnis mit dem deiners Teampartners/deiner Teampartnerin und tauscht Euch über die fehlenden Teile aus. Erklärt euch gegenseitig, was diese machen.
Jetzt gibt es Eis! Also, wenigstens auf deinem Computerbildschirm…
Erstelle in einer Datei Start.java verschiedene Objekte der Klasse Eisbecher
und lasse die Speisekarteneinträge ausgeben. Kommst du damit zurecht?
Die Online-IDE ist da praktisch – du kannst in einer Datei Start (oder wie immer du sie nennen möchtest) einfach drauf los schreiben, ohne eine eigene Klasse erstellen zu müssen. Wenn du Zitroneneis magst, dann kannst du mit
Eisbecher eis = new Eisbecher("Zitrone");
dein Eis erzeugen.
Möchtest du Zuckerkugeln, oder ist das Default-Topping in Ordnung?
Dann musst du noch das Topping verändern. Das geht mit
eis.setTopping("Zuckerkugeln")
Das hast du doch gerade in der Klasse geschrieben. Der Konstruktor setzt das Topping standardmäßig auf »Schokostreusel«. (Das könnte man auch die Default-Einstellung nennen…)
Lass nun die Speisekarteneinträge anzeigen!
Du kannst an deinem frisch gebackenen Objekt… moment… an deinem frisch geschöpften Objekt Methoden aufrufen, mit der Punktschreibweise: eis.speisekarteneintrag()
Weil diese Methode aber nichts am Bildschirm ausgibt, sondern nur eine Zeichenkette zurückgibt, müssen wir diese noch mit println()
ausgeben lassen:
println(eis.speisekarteneintrag());
Siehst du nun deinen Eisbecher?
Alles klar. Gut gemacht!