s n h m r u

Minimallogo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

s n h m r u
i

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.

Codepad in BlueK

Aufgabe 1

Schalte - falls noch nicht aktiv - das Codepad ein. Gib dort einfache Ausdrücke und Anweisungen wie im Beispiel ein.

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:

Klassendiagramm der Klasse Karte

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:

Karte per Code erzeugen

Aufgabe 2

Teste die beiden oben abgebildeten Anweisungen im Codepad.

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.

Reset des Codepads

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 val und var? Was sind die Gemeinsamkeiten und Unterschiede?
  • Welche Wirkung hat die Anweisung println() im Code? Vergleiche auch mit der Anweisung print().
  • Kotlin kann in vielen Fällen die benutzten Datentypen automatisch ableiten. Formuliere eine Regel zur automatischen Typableitung (Type inference).

Suche

v
100.123.1.1.3 Karten per Code
Kopieren durch Anklicken

Rückmeldung geben