File Kotlin tidak harus berisi class seperti di Java; sebuah file .kt dapat berisi langsung function, property, dan class di level paling atas. Pada chapter ini kita akan membedah struktur menyeluruh sebuah file Kotlin, mulai dari deklarasi package, import, hingga posisi function main di antara deklarasi top-level lainnya. Kita juga akan melihat bagaimana Kotlin mengurus titik koma opsional dan blok kurung kurawal sebagai pembatas struktur.
Tampilan Menyeluruh File Kotlin #
Sebuah file Kotlin tipikal memiliki empat zona yang muncul berurutan dari atas ke bawah. Berikut contoh file lengkap yang memuat keempat zona:
// Deklarasi package — biasanya mengikuti struktur folder
package contoh.dasar
// Import dari standard library Kotlin
import kotlin.math.sqrt
// Top-level property (properti di luar class/function)
val PENGGUNA: String = "Budi"
// Top-level function
fun sapa(nama: String): String {
return "Halo, $nama! Selamat datang."
}
// Top-level class
class Hitung(private val nilai: Double) {
fun akar(): Double = sqrt(nilai)
}
// Titik masuk program Kotlin
fun main() {
println(sapa(PENGGUNA))
val h = Hitung(144.0)
println("Akar dari ${h.akar()}")
}Output yang Dihasilkan:
Halo, Budi! Selamat datang.
Akar dari 12.0Mari kita petakan empat zona pada file di atas:
- Package declaration (
package contoh.dasar) — menyatakan namespace tempat deklarasi di dalam file bernaung. Bila baris ini dihilangkan, file tetap valid dan isinya berada di package default. - Import statements (
import kotlin.math.sqrt) — membawa simbol dari package lain agar dapat dipakai tanpa menyebut nama package panjang. - Top-level declarations — property
PENGGUNA, functionsapa, dan classHitungsemuanya berada pada level paling atas file, tidak perlu dibungkus class. fun main()— titik masuk program. Posisinya boleh di mana saja di antara deklarasi top-level lain, namun kebiasaan umum menempatkannya paling bawah.
Deklarasi Top-Level: Function, Property, dan Class #
Kotlin memungkinkan tiga jenis deklarasi utama di luar class: function, property, dan class. Deklarasi tersebut tidak perlu membungkus satu sama lain — sebuah file dapat berisi puluhan function dan class berdampingan.
- Top-level function:
fun sapa(nama: String): Stringdapat dipanggil langsung darimaintanpa membuat instance. - Top-level property:
val PENGGUNAdisimpan sebagai field statis pada class sintetik yang dibuat kompilator untuk file tersebut. - Top-level class:
class Hitungberperilaku sama seperti class Java tingkat atas.
Konsekuensi praktis dari deklarasi top-level adalah kode Kotlin jauh lebih ringkas untuk skrip kecil dan utilitas. Tidak ada kewajiban menulis class wrapper hanya untuk menampung satu function.
Posisi main di dalam File #
Function main adalah titik masuk yang dicari runtime Kotlin saat program dijalankan. Kotlin tidak peduli posisi main di dalam file — boleh paling atas, paling bawah, atau di tengah antar deklarasi. Yang penting adalah tanda tangannya: fun main() atau fun main(args: Array<String>).
File boleh berisi beberapa deklarasi top-level lain, dan salah satunya adalah main. Berikut dua layout yang sama-sama valid:
package demo
fun helper() { /* ... */ }
fun main() { helper() }package demo
fun main() { helper() }
fun helper() { /* ... */ }Pilihan layout adalah soal gaya tim. Banyak proyek Kotlin menempatkan main di bagian bawah karena pembaca biasanya mencari detail implementasi dulu, lalu titik masuk di akhir.
Titik Koma Opsional #
Kotlin tidak mengwajibkan titik koma di akhir statement. Kompilator menentukan akhir statement dari baris baru dan aturan leksikal. Kode berikut sama-sama valid:
val a = 1
val b = 2
println(a + b)val a = 1;
val b = 2;
println(a + b);Titik koma dibutuhkan hanya bila dua statement berada pada baris yang sama. Kasus ini jarang muncul dan biasanya dihindari demi keterbacaan:
val a = 1; val b = 2Blok Kurung Kurawal #
Struktur blok di Kotlin memakai pasangan kurung kurawal { dan } seperti Java, C++, dan Go — bukan indentasi seperti Python. Berikut pasangan yang umum ditemui:
| Konstruksi | Pembuka | Penutup |
|---|---|---|
| Body function | { setelah daftar parameter | } |
| Body class | { setelah nama class | } |
Body control flow (if, for, while) | { setelah kondisi | } |
| Body lambda | { setelah -> atau parameter | } |
Saat sebuah function body hanya berisi satu expression, kita dapat memakai bentuk expression body dengan tanda = tanpa kurung kurawal:
fun kuadrat(x: Int): Int = x * x // expression body
fun kuadratBlok(x: Int): Int { // block body
return x * x
}Kedua bentuk menghasilkan bytecode yang setara; pilihan jatuh pada keterbacaan. Body satu baris biasanya memakai expression body, sementara body yang membutuhkan beberapa statement memakai block body.
Referensi Lanjutan #
- Kotlin basic syntax
— ringkasan sintaks dasar Kotlin untuk memahami struktur
package,import, danfun main()
Struktur file Kotlin sebenarnya ringkas: package, import, dan deklarasi top-level yang dibungkus kurung kurawal. Setelah memahami kerangka ini, kita siap membedah secara spesifik titik masuk program — yaitu function main dalam berbagai bentuk dan argumennya — pada chapter main() Function.