Kotlin

Menguasai Class Kotlin: Properti dan Method untuk Pengembangan Aplikasi yang Efisien

Kuasai Properti & Method Class Kotlin | Panduan Lengkap

PPLG

PPLG

Penulis

04 May 2026
4 x dilihat

Selamat datang, para pengembang! Sebagai instruktur senior Kotlin, saya senang dapat memandu Anda melalui fondasi penting dalam pengembangan berorientasi objek: Properti dan Method dalam Class Kotlin. Memahami kedua elemen ini adalah kunci untuk membangun aplikasi yang elegan, mudah dikelola, dan sangat efisien.

Apa itu Class?

Dalam Kotlin, seperti bahasa pemrograman berorientasi objek lainnya, class adalah cetak biru (blueprint) untuk menciptakan objek. Objek adalah instansi dari class, dan mereka mewakili entitas dunia nyata atau konsep abstrak. Class mendefinisikan struktur dan perilaku dari objek yang akan dibuat darinya.

Properti (Properties) dalam Class Kotlin

Properti adalah data yang dimiliki oleh sebuah objek. Mereka mendefinisikan keadaan (state) dari objek tersebut. Di Kotlin, properti dideklarasikan menggunakan kata kunci val (untuk nilai yang tidak dapat diubah, immutable) atau var (untuk nilai yang dapat diubah, mutable).

Deklarasi Properti

Properti dapat dideklarasikan langsung di dalam class.

class Mobil(var merk: String, val tahun: Int) {
    // 'merk' adalah properti mutable
    // 'tahun' adalah properti immutable
}

Dalam contoh di atas:

  • merk: Properti ini dideklarasikan dengan var, artinya nilainya dapat diubah setelah objek Mobil dibuat.
  • tahun: Properti ini dideklarasikan dengan val, artinya nilainya bersifat read-only setelah objek Mobil dibuat.

Properti Backing Field dan Custom Accessor

Kotlin secara otomatis membuat backing field untuk properti yang membutuhkan penyimpanan. Anda juga dapat mendefinisikan getter dan setter kustom untuk properti.

class Karyawan {
    var nama: String = ""
        get() = field.toUpperCase() // Getter kustom: Mengubah nama menjadi huruf kapital
        set(value) {
            if (value.isNotBlank()) {
                field = value // Setter kustom: Memastikan nama tidak kosong
            }
        }

    val id: Int = 101 // Immutable property
}

fun main() {
    val k1 = Karyawan()
    k1.nama = "Budi Santoso"
    println(k1.nama) // Output: BUDI SANTOSO
    k1.nama = "" // Setter kustom akan mencegah ini
    println(k1.nama) // Output: BUDI SANTOSO (nama tidak berubah karena setter)
}

Tips Praktis: Gunakan val sebisa mungkin untuk properti. Ini mempromosikan imutabilitas, membuat kode lebih aman dan lebih mudah diprediksi, terutama dalam aplikasi multithreaded.

Method (Functions) dalam Class Kotlin

Method adalah perilaku atau tindakan yang dapat dilakukan oleh sebuah objek. Method didefinisikan di dalam class dan beroperasi pada properti objek tersebut.

Deklarasi Method

Method dideklarasikan menggunakan kata kunci fun.

class Kalkulator {
    fun tambah(a: Int, b: Int): Int {
        return a + b
    }

    fun kurang(a: Int, b: Int) = a - b // Ekspresi tunggal, return implisit
}

fun main() {
    val calc = Kalkulator()
    val hasilTambah = calc.tambah(5, 3)
    val hasilKurang = calc.kurang(10, 4)

    println("Hasil penjumlahan: $hasilTambah") // Output: Hasil penjumlahan: 8
    println("Hasil pengurangan: $hasilKurang") // Output: Hasil pengurangan: 6
}

Akses Properti dalam Method

Method dalam sebuah class dapat langsung mengakses properti dari objek yang sama.

class Lingkaran(val radius: Double) {
    fun hitungLuas(): Double {
        return Math.PI * radius * radius
    }

    fun hitungKeliling(): Double {
        return 2 * Math.PI * radius
    }
}

fun main() {
    val lingkaranBesar = Lingkaran(10.0)
    println("Luas: ${lingkaranBesar.hitungLuas()}") // Output: Luas: 314.159...
    println("Keliling: ${lingkaranBesar.hitungKeliling()}") // Output: Keliling: 62.831...
}

Tips Praktis: Saat mendefinisikan method, pertimbangkan apakah method tersebut perlu mengakses atau memodifikasi state objek. Jika tidak, pertimbangkan untuk menjadikannya sebagai fungsi top-level atau extension function agar lebih fleksibel.

Hubungan Antara Properti dan Method

Properti dan method bekerja bersama untuk mendefinisikan sebuah objek:

  • Properti mendefinisikan apa objek itu (datanya).
  • Method mendefinisikan apa yang dapat dilakukan objek itu (perilakunya).

Sebuah method seringkali menggunakan properti objek untuk melakukan operasinya atau mengubah nilai properti tersebut.

Contoh Implementasi Nyata: Manajemen Toko Online

Mari kita buat class Produk dan Pelanggan untuk simulasi sederhana toko online.

class Produk(val nama: String, var harga: Double, var stok: Int) {
    fun dapatDibeli(): Boolean {
        return stok > 0
    }

    fun kurangiStok(jumlah: Int) {
        if (jumlah > 0 && stok >= jumlah) {
            stok -= jumlah
            println("Stok '$nama' berkurang menjadi $stok.")
        } else {
            println("Gagal mengurangi stok '$nama'. Stok tidak mencukupi atau jumlah tidak valid.")
        }
    }

    fun tampilkanDetail() {
        println("Produk: $nama | Harga: Rp${harga} | Stok: $stok")
    }
}

class Pelanggan(val nama: String, val email: String) {
    private val daftarBelanja = mutableListOf<Produk>() // Properti private

    fun tambahKeDaftarBelanja(produk: Produk) {
        if (produk.dapatDibeli()) {
            daftarBelanja.add(produk)
            println("${produk.nama} ditambahkan ke daftar belanja ${this.nama}.")
        } else {
            println("${produk.nama} sedang habis stok.")
        }
    }

    fun checkout(produk: Produk) {
        if (daftarBelanja.contains(produk)) {
            produk.kurangiStok(1)
            daftarBelanja.remove(produk)
            println("${this.nama} telah checkout ${produk.nama}.")
        } else {
            println("${this.nama} tidak memiliki ${produk.nama} dalam daftar belanja.")
        }
    }

    fun tampilkanDaftarBelanja() {
        println("\nDaftar Belanja ${this.nama}:")
        if (daftarBelanja.isEmpty()) {
            println("  (Kosong)")
        } else {
            daftarBelanja.forEach { it.tampilkanDetail() }
        }
    }
}

fun main() {
    val laptop = Produk("Laptop Gaming", 15000000.0, 5)
    val mouse = Produk("Mouse Wireless", 250000.0, 10)
    val keyboard = Produk("Keyboard Mekanik", 750000.0, 0) // Stok habis

    val budi = Pelanggan("Budi", "budi@email.com")

    budi.tambahKeDaftarBelanja(laptop)
    budi.tambahKeDaftarBelanja(mouse)
    budi.tambahKeDaftarBelanja(keyboard) // Akan gagal karena stok habis

    budi.tampilkanDaftarBelanja()

    budi.checkout(laptop)
    budi.checkout(mouse)

    laptop.tampilkanDetail()
    mouse.tampilkanDetail()
    keyboard.tampilkanDetail()
}

Dalam contoh ini:

  • Class Produk memiliki properti seperti nama, harga, dan stok. Method-nya (dapatDibeli, kurangiStok, tampilkanDetail) berinteraksi dengan properti-properti ini.
  • Class Pelanggan memiliki properti nama dan email, serta properti privat daftarBelanja. Method-nya (tambahKeDaftarBelanja, checkout) memanipulasi properti daftarBelanja dan memanggil method dari objek Produk.

Tips Langka yang Jarang Diketahui Pemula

  1. Delegated Properties: Kotlin memiliki fitur canggih bernama delegated properties, di mana Anda dapat mendelegasikan implementasi getter dan setter properti ke kelas lain. Contoh populer termasuk lazy (properti diinisialisasi saat pertama kali diakses) dan observable (menjalankan kode setiap kali properti diubah).
    class Pengguna {
        val nama: String by lazy {
            println("Menginisialisasi nama...")
            "Alice"
        }
    }
    // Panggil 'nama' hanya sekali, inisialisasi terjadi saat itu.
    
  2. Properti lateinit: Untuk properti non-nullable yang nilainya diinisialisasi nanti, gunakan lateinit. Ini sangat berguna untuk properti yang diinisialisasi di init block atau melalui dependency injection. Pastikan untuk menginisialisasi sebelum mengaksesnya, atau akan terjadi UninitializedPropertyAccessException.
    class Layanan {
        lateinit var koneksiDatabase: Database
        fun setup() {
            koneksiDatabase = Database() // Inisialisasi di sini
        }
        fun gunakanKoneksi() {
            // Pastikan setup() sudah dipanggil sebelumnya
            koneksiDatabase.query("SELECT * FROM users")
        }
    }
    
  3. Properti const (Constant Properties): Untuk konstanta compile-time yang nilainya diketahui saat kompilasi dan merupakan tipe primitif atau String, gunakan const val. Ini berbeda dengan val biasa yang dievaluasi saat runtime.
    class Pengaturan {
        companion object {
            const val VERSI_API = "v1.0"
            const val MAX_UPAYA = 5
        }
    }
    
  4. Default Arguments untuk Constructor dan Method: Anda dapat memberikan nilai default untuk parameter constructor dan method, membuat pemanggilan menjadi lebih fleksibel.
    class Pengguna(val nama: String, val usia: Int = 0) // Default usia = 0
    fun kirimPesan(pesan: String, prioritas: Int = 1) {} // Default prioritas = 1
    

Kesimpulan

Properti dan method adalah blok bangunan fundamental dari class di Kotlin. Dengan memahami cara mendeklarasikan, mengakses, dan menggunakannya secara efektif, Anda akan dapat membangun struktur kode yang lebih terorganisir, dapat digunakan kembali, dan kuat. Manfaatkan val untuk imutabilitas, gunakan getter/setter kustom saat diperlukan, dan jelajahi fitur-fitur canggih seperti lazy dan lateinit untuk menulis kode Kotlin yang lebih idiomatis dan efisien. Terus berlatih, dan Anda akan segera mahir dalam menguasai class Kotlin!

0.0

Berikan Rating

Komentar (0)

Silakan login untuk memberikan komentar.

Login Sekarang

Belum ada komentar. Jadilah yang pertama!

Pembaca (0)

Belum ada user yang membaca artikel ini.