0Pricing
Kotlin Academy · Lektion

Anwendungsfälle

Domänenmodellierung

Anwendungsfälle ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Kotlin Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.

Das Fachgebiet modellieren

Wertklassen eignen sich hervorragend für die Modellierung des Fachgebiets. Sie machen aus anonymen primitiven Werten aussagekräftige, vor Fehlbedienung geschützte Typen – ohne Laufzeitkosten.

Sehen wir uns realistische Szenarien an.

Typisierte Bezeichner

Eigene ID-Typen verhindern, dass eine Benutzer-ID dort übergeben wird, wo eine Bestell-ID erwartet wird – ein häufiger und kostspieliger Fehler.

@JvmInline
value class UserId(val value: Long)
@JvmInline
value class OrderId(val value: Long)

fun fetchUser(id: UserId) = "user " + id.value

fun main() {
    println(fetchUser(UserId(7)))
}

Maßeinheiten

Wenn Sie Zahlen in Einheitentypen verpacken, können Sie nicht versehentlich Meter und Sekunden addieren. Außerdem wird dadurch die Bedeutung dokumentiert.

@JvmInline
value class Kilograms(val value: Double)

fun describe(weight: Kilograms) = weight.value.toString() + " kg"

fun main() {
    println(describe(Kilograms(72.5)))
}

Validierte Zeichenketten

Kombinieren Sie eine Wertklasse mit einem init-Block, um Invarianten wie eine nicht leere E-Mail-Adresse zu garantieren.

@JvmInline
value class Email(val value: String) {
    init {
        require(value.contains("@")) { "invalid email" }
    }
}

fun main() {
    println(Email("a@b.com").value)
}

Geld mit Verhalten

Stellen Sie Geld in der kleinsten Einheit dar und fügen Sie Operationen hinzu, um Gleitkommafehler bei Währungen zu vermeiden.

@JvmInline
value class Cents(val value: Long) {
    operator fun plus(other: Cents) = Cents(value + other.value)
    fun format() = "$" + value / 100.0
}

fun main() {
    val total = Cents(1500) + Cents(250)
    println(total.format())
}

Selbstdokumentierende APIs

Eine Funktionssignatur mit Wertklassen ist deutlich verständlicher als eine mit drei unbenannten Ganzzahlen.

@JvmInline
value class Width(val px: Int)
@JvmInline
value class Height(val px: Int)

fun area(w: Width, h: Height) = w.px * h.px

fun main() {
    println(area(Width(4), Height(5)))
}

Sensible Daten verpacken

Eine Wertklasse kann toString überschreiben, um Geheimnisse in Protokollen zu maskieren, während der ursprüngliche Wert weiterhin zugänglich bleibt.

@JvmInline
value class Token(val value: String) {
    override fun toString() = "Token(***)"
}

fun main() {
    val t = Token("abc123")
    println(t)          // masked
    println(t.value)    // real value when needed
}

Wertebereiche erzwingen

Verwenden Sie Wertklassen, um Regeln für Wertebereiche an einer Stelle zu kapseln, sodass ungültige Zustände nirgendwo erstellt werden können.

@JvmInline
value class Rating(val stars: Int) {
    init {
        require(stars in 1..5) { "stars must be 1..5" }
    }
}

fun main() {
    println(Rating(4).stars)
}

Intelligente Konstruktoren

Kombinieren Sie eine Wertklasse mit einer Factory im Companion-Objekt, die bei ungültigen Eingaben null zurückgibt. So vermeiden Sie Ausnahmen bei erwartbaren Fehlern.

@JvmInline
value class Age(val value: Int) {
    companion object {
        fun of(n: Int): Age? = if (n in 0..150) Age(n) else null
    }
}

fun main() {
    println(Age.of(30)?.value)
    println(Age.of(-5))
}

Zusammenfassung der Muster

Häufige Muster für Wertklassen:

  • Typisierte IDs, um Verwechslungen zu verhindern
  • Maßeinheiten
  • Validierte primitive Werte mit init
  • Operationen des Fachgebiets über Operatoren
  • Maskierte sensible Werte

Sicherheit ohne großen Aufwand

Da Wertklassen normalerweise inlined werden, erhalten Sie diese Klarheit und Sicherheit im Fachgebiet praktisch ohne Laufzeitkosten. Sie sind eine unkomplizierte Möglichkeit, ungültige Zustände nicht darstellbar zu machen.

Kurzer Test

Testen Sie Ihr Verständnis der Anwendungsfälle von Wertklassen.

Zusammenfassung

Sie haben praktische Anwendungsfälle für Wertklassen kennengelernt:

  • Typisierte IDs, Einheiten und validierte Zeichenketten
  • Geld und Operationen des Fachgebiets
  • Maskieren von Geheimnissen und intelligente Konstruktoren

Als Nächstes: die Einschränkungen von Wertklassen.

Häufig gestellte Fragen

Ist die Lektion „Anwendungsfälle“ kostenlos?

Ja — der vollständige Text von „Anwendungsfälle“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kotlin Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Anwendungsfälle“?

Domänenmodellierung Du übst Kotlin Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Kotlin Academy zu starten?

Keine Vorkenntnisse erforderlich. Kotlin Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Anwendungsfälle“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Kotlin Academy-Lektion Code schreiben und ausführen?

Ja. Jede Kotlin Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Typaliase
  2. Inline-Value-Klassen
  3. Anwendungsfälle
  4. Einschränkungen
← Zurück zu Kotlin Academy