Karten per Code
Das Codepad nutzen
Wir wollen nun Karten-Objekte nicht mehr per Mausklick erzeugen, sondern mit Hilfe von Code. Dazu nutzen wir die Programmiersprache Kotlin und das Codepad von BlueK. Das Codepad befindet sich unten rechts und kann mit Hilfe des Pfeilsymbols ein- und ausgeblendet werden. Du kannst dort Kotlin-Code eingeben und ausführen. Das Codepad ist dazu gedacht, dass du einzelne Anweisungen ausprobieren kannst, ohne ein komplettes Programm schreiben zu müssen. Wenn du BlueK neu startest, sind die Inhalte des Codepads wieder gelöscht.
Du könntest das Codepad zum Beispiel nutzen, um Berechnungen durchzuführen,
und mit der Anweisung println() das Ergebnis auszugeben.
Aufgabe 1
Karten-Objekte mit Hilfe von Code erzeugen
Wenn man Kotlin-Code schreiben möchte, um z.B. Objekte zu erzeugen oder
Methoden aufzurufen, muss man wissen, welche Klassen es gibt und wie diese benutzt werden können.
Eine Übersicht über den Aufbau der Klasse Karte gibt das
folgende Klassendiagramm:
Ein Klassendiagramm besteht hier aus drei Bereichen. Oben steht der Name der Klasse, darunter stehen die Attribute. Der untere Bereich enthält zuerst den Konstruktor und anschließend die Methoden. Bei Attributen und Parametern steht nach einem Doppelpunkt der Datentyp. Bei Methoden steht hinter der schließenden Klammer der Rückgabetyp. Gibt eine Methode keinen Wert zurück, wird kein Rückgabetyp angegeben.
Mit dem Wissen über die Struktur der Klasse kannst du z.B. folgenden Code im Codepad eingeben:
Aufgabe 2
Kotlin kennenlernen
Wir wollen nun mehrere Karten-Objekte erzeugen und deren Methoden aufrufen. Hier findest du einige Vorschläge für Sequenzen von Anweisungen. Manche davon lassen sich ausführen, andere führen zu Fehlern.
// Sequenz 1
var karte: Karte = Karte("Herz", "A")
var meineKarte = Karte("Pik", "10")
karte.druckeKarte()
meineKarte.druckeKarte()
// Sequenz 2
var karte = Spielkarte("Karo", "K")
karte.druckeKarte()
// Sequenz 3
var karte = Karte("Kreuz", "4")
karte.druckeKarte()
karte = Karte("Herz", "B")
karte.druckeKarte()
// Sequenz 4
val karte = Karte("Kreuz", "4")
karte.druckeKarte()
karte = Karte("Herz", "B")
karte.druckeKarte()
// Sequenz 5
var karte = Karte(Herz, 2)
karte.druckeKarte()
// Sequenz 6
Karte("Karo", "D")
druckeKarte()
// Sequenz 7
val karte = Karte("Pik", "5")
val wert: String = karte.berechneWert()
val rang: Int = karte.rang
println(wert)
println(rang)
// Sequenz 8
val karte = Karte("Karo", "D")
var ergebnis = karte.berechneWert()
println(ergebnis)
ergebnis = karte.rang
println(ergebnis)
Kommentare in Kotlin beginnen
mit den Zeichen //.
Alles, was bis zum Zeilenende hinter diesen Zeichen steht, wird bei der Ausführung ignoriert.
Die Sequenzen sind als unabhängige Vorschläge zu verstehen. Du musst deshalb den Zustand des Codepads nach jeder Sequenz zurücksetzen, indem du entweder neu kompilierst oder den Pfeil ganz unten rechts im Codepad anklickst.
Aufgabe 3
Sage für jeden Vorschlag voraus, ob er funktioniert. Überprüfe ihn danach im Codepad. Du musst die Sequenzen nicht abtippen, sondern kannst sie mit Copy & Paste in das Codepad einfügen.
Beschreibe die Wirkung der einzelnen Sequenzen und erkläre die auftretenden Fehler. Gehe dabei insbesondere auf folgende Fragen ein:
- Wie ruft man in Kotlin einen Konstruktor auf?
- Wie greift man auf Attribute und Methoden eines Objekts zu?
- Was bedeuten
valundvar? Was sind die Gemeinsamkeiten und Unterschiede? - Welche Wirkung hat die Anweisung
println()im Code? Vergleiche auch mit der Anweisungprint(). - Kotlin kann in vielen Fällen die benutzten Datentypen automatisch ableiten. Formuliere eine Regel zur automatischen Typableitung (Type inference).