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

Neue Timer-Klasse

Standardfälle

Bei der Benutzung von Gettern und Settern gibt es drei Standardfälle, die man häufig antrifft:

  • Der Standard-Getter und der Standard-Setter werden automatisch vom Compiler hinzugefügt und steuern den Zugriff auf ein Attribut, ohne dass man sie explizit angibt. Der Zugriff auf das Attribut ist nicht eingeschränkt.
  • Man definiert einen Setter, um den schreibenden Zugriff auf ein Attribut zu steuern. Im Setter überprüft man, ob der Wert, der dem Attribut zugewiesen werden soll, gültig ist, und weist ihn nur dann zu. Ansonsten bleibt der Wert des Attributs unverändert oder wird auf einen Standardwert gesetzt. Der Compiler fügt automatisch einen Standard-Getter hinzu, der einfach den Wert des Attributs zurückgibt.
  • Man definiert einen Getter für eine berechnete Eigenschaft (computed property). Es existiert kein Setter, auch kein Standard-Setter, da die berechnete Eigenschaft keinen Wert speichert, sondern ihren Wert jedes Mal neu berechnet, wenn sie gelesen wird.

Aufgabe

Mache dir bewusst welche der drei Standardfälle für den Timer relevant sind und schreibe oder überarbeite die Klasse Timer entsprechend. Du entscheidest welche Werte die Attribute min und max annehmen dürfen und wie du damit umgehst, wenn ungültige Werte zugewiesen werden.

Nutze bei Bedarf die logischen Operatoren && (und), || (oder) und ! (nicht), um komplexere Bedingungen zu formulieren.

Nutze dazu das BlueJ-Projekt oder die Online-Version unten.

class Timer {
    var min: Int = 0
    var max: Int = 0

    fun starten() {
        // Den Inhalt dieser Methode musst du nicht verstehen.
        // Du musst nur wissen, dass die Methode den Timer startet.
        val bis = if (max <= min) max else min + java.util.Random().nextInt(max - min)

        for (i in 0 until bis) {
            try {
                Thread.sleep(1000)
            } catch (e: Exception) {
                e.printStackTrace()
            }
        }

        println("Timer abgelaufen!")
    }
}

fun main() {
    val timer = Timer()
    // Hier solltest du den Timer noch testen
}

Suche

v
100.123.3.1.4 Neue Timer-Klasse
Kopieren durch Anklicken

Rückmeldung geben