0Pricing
Kotlin Academy · Pelajaran

Kasus Penggunaan

Pemodelan domain

Kasus Penggunaan adalah pelajaran Kotlin Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Kotlin Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Kotlin Academy mencakup 4 pelajaran total.

Memodelkan Domain

Kelas nilai sangat bermanfaat dalam pemodelan domain. Kelas ini mengubah tipe primitif anonim menjadi tipe yang bermakna dan mencegah kesalahan tanpa biaya saat dijalankan.

Mari kita bahas beberapa skenario yang realistis.

Pengenal Bertipe

Tipe ID yang berbeda mencegah Anda meneruskan ID pengguna ketika yang diperlukan adalah ID pesanan — kesalahan umum yang dapat menimbulkan biaya besar.

@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)))
}

Satuan Ukuran

Membungkus angka dalam tipe satuan mencegah Anda secara tidak sengaja menjumlahkan meter dengan detik sekaligus mendokumentasikan maknanya.

@JvmInline
value class Kilograms(val value: Double)

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

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

String yang Divalidasi

Gabungkan kelas nilai dengan blok init untuk menjamin invarian seperti email yang tidak kosong.

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

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

Uang dengan Perilaku

Representasikan uang dalam satuan terkecil dan tambahkan operasi untuk menghindari kesalahan mata uang akibat bilangan titik mengambang.

@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())
}

API yang Mendokumentasikan Dirinya Sendiri

Tanda tangan fungsi dengan kelas nilai jauh lebih jelas daripada tanda tangan dengan tiga bilangan bulat tanpa tipe khusus.

@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)))
}

Membungkus Data Sensitif

Kelas nilai dapat menimpa toString untuk menyamarkan rahasia dalam catatan, sekaligus tetap menyediakan akses ke nilai mentah.

@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
}

Menegakkan Rentang

Gunakan kelas nilai untuk merangkum aturan rentang di satu tempat, sehingga keadaan tidak valid tidak dapat dibuat di mana pun.

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

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

Konstruktor Cerdas

Pasangkan kelas nilai dengan pabrik pendamping yang mengembalikan null untuk masukan tidak valid, sehingga pengecualian untuk kegagalan yang memang diharapkan dapat dihindari.

@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))
}

Rangkuman Pola

Pola kelas nilai yang umum:

  • ID bertipe untuk mencegah tertukarnya nilai
  • Satuan ukuran
  • Tipe primitif yang divalidasi dengan init
  • Operasi domain melalui operator
  • Nilai sensitif yang disamarkan

Keamanan dengan Biaya Rendah

Karena kelas nilai biasanya disisipkan langsung, Anda memperoleh semua kejelasan dan keamanan domain ini dengan biaya saat dijalankan yang pada dasarnya nol. Kelas nilai merupakan cara sederhana untuk membuat keadaan ilegal tidak dapat direpresentasikan.

Pemeriksaan Singkat

Uji pemahaman Anda tentang kasus penggunaan kelas nilai.

Rangkuman

Anda telah melihat kasus penggunaan kelas nilai yang praktis:

  • ID bertipe, satuan ukuran, dan string yang divalidasi
  • Uang dan operasi domain
  • Penyamaran rahasia dan konstruktor cerdas

Berikutnya: keterbatasan kelas nilai.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Kasus Penggunaan” gratis?

Ya — teks lengkap “Kasus Penggunaan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Kotlin Academy, upgrade ke CoddyKit PRO. Kursus Kotlin Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Kasus Penggunaan”?

Pemodelan domain Kamu berlatih Kotlin Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Kotlin Academy?

Tidak diperlukan pengalaman sebelumnya. Kotlin Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Kasus Penggunaan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Kotlin Academy ini?

Ya. Setiap pelajaran Kotlin Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Alias Tipe
  2. Kelas Nilai Inline
  3. Kasus Penggunaan
  4. Keterbatasan
← Kembali ke Kotlin Academy