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

Übungen

Aufgabe 1 - Referenzen und Objektdiagramm

Gegeben ist die Klasse Figur:

class Figur(val farbe: String, var x: Int, var y: Int) {
    fun gehe(richtung: Int) {
        when (richtung) {
            0 -> y = y - 1
            1 -> x = x + 1
            2 -> y = y + 1
            3 -> x = x - 1
        }
    }
}

(a) Sage voraus, was das folgende Programm ausgibt. Beachte besonders die Zeile var f3 = f1. Führe das Programm anschließend aus.

class Figur(val farbe: String, var x: Int, var y: Int) {
    fun gehe(richtung: Int) {
        when (richtung) {
            0 -> y = y - 1
            1 -> x = x + 1
            2 -> y = y + 1
            3 -> x = x - 1
        }
    }
}

fun main() {
    val f1 = Figur("blau", 0, 0)
    val f2 = Figur("rot", 4, 4)
    var f3 = f1

    f1.gehe(1)
    f2.gehe(0)
    f3.gehe(1)

    println(f1.x)        // ?
    println(f2.y)        // ?
    println(f3.x)        // ?
    println(f1 === f3)   // ?
    println(f1 === f2)   // ?
}

(b) Zeichne das Objektdiagramm für die Situation am Ende des Programms. Wie viele Figur-Objekte gibt es? Welche Variablen verweisen auf dasselbe Objekt?

(c) Erkläre, warum die folgende Ergänzung vom Compiler abgelehnt wird:

var f4: Figur? = null
f4.gehe(0)

Aufgabe 2 - kennt oder hat?

Entscheide bei jeder Beziehung, ob es sich eher um eine kennt-Beziehung (Assoziation) oder eine hat-Beziehung (Komposition) handelt. Begründe kurz.

  • Ein Spiel erzeugt beim Start seine beiden Figuren.
  • Ein Spiel merkt sich, welche bereits vorhandene Figur gerade am Zug ist.
  • Ein Auto und seine vier Rad-Objekte.
  • Eine Schuelerin und ihre Schule.

Aufgabe 3 - Klassendiagramm

Eine Fernbedienung steuert eine bereits vorhandene Lampe (an-/ausschalten). Zeichne ein Klassendiagramm mit der passenden Beziehung zwischen Fernbedienung und Lampe und begründe, ob es sich um eine kennt- oder hat-Beziehung handelt.

Aufgabe 4 - Fernbedienung und Lampe

Setze das Szenario aus Aufgabe 3 in Kotlin um. Die Lampe hat ein Attribut an: Boolean und eine Methode umschalten(). Die Fernbedienung bekommt die Lampe, die sie steuern soll, und besitzt eine Methode druecken(), die die Lampe umschaltet. Schreibe ein Hauptprogramm, das eine Lampe und eine Fernbedienung erzeugt und die Lampe über die Fernbedienung mehrfach umschaltet.

Die Fernbedienung speichert die Lampe in einem Referenzattribut, das sie im Konstruktor übergeben bekommt: class Fernbedienung(val lampe: Lampe). So entsteht eine kennt-Beziehung – die Lampe existiert unabhängig von der Fernbedienung.

Aufgabe 5 - Go Home erweitern

Erweitere das Go-Home-Spiel nach einer oder mehreren dieser Ideen:

  1. Es gibt für jede Figur ein eigenes Home-Feld, statt eines gemeinsamen Zentrums.
  2. Das Spiel ist nach 10 Zügen pro Spieler zu Ende; dann gewinnt die Figur, die dem Home-Feld am nächsten ist.
  3. Das Spielfeld ist größer als 5×5.
  4. Eigene Idee – sei kreativ!

Suche

v
100.123.5.6 Übungen
Kopieren durch Anklicken

Rückmeldung geben