Skip to main content

Variabel

Variabel adalah tempat untuk menyimpan data. Kita telah berkali-kali membuat variabel sebelumnya. Ingatkah kamu, ketika kita melakukan hal ini, sebenarnya kita membuat suatu variabel:

ada orang = Orang.baru()

Kita membuat suatu variabel bernama orang yang berisi data berupa objek dari kelas Orang.

Iya, kita membuat suatu variabel menggunakan kata kunci ada:

ada namaVariabel

Saat kita membuat, atau mendeklarasikan, suatu variabel, kita bisa mengisinya dengan data, atau membiarkannya kosong seperti pada contoh diatas. Variabel yang dideklarasikan tanpa data, akan berisi nilai nil, suatu konsep dalam pemrograman yang berarti tidak adanya data.

Tentu saja, kita kemudian bisa mengisinya dengan data:

namaVariabel = 123

Dalam contoh diatas, kita mengisi variabel namaVariabel dengan nilai 123 yang tidak lain adalah suatu Integer.

Jika kita mencoba mengisi data pada variabel yang belum pernah dideklarasikan, maka akan timbul masalah:

variabel123 = 123
Penting

Mengisi data pada variabel yang belum pernah dideklarasikan akan menimbulkan masalah

Jenis-jenis variabel

Ada tiga jenis variabel dalam Gara:

  • Variabel instansi
  • Variabel statis
  • Variabel bebas

Variabel instansi

Saat kita mendiskusikan tentang pembuatan kelas, kita juga belajar bagaimana kita membuat suatu objek dari kelas tersebut menggunakan baru. Kemudian, kita bisa mengisi data-data untuk objek-objek tersebut:

orang1.nama = "Rudi"
orang2.nama = "Ferlin"
orang3.nama = "Wisnu"
orang4.nama = "Akbar"

Perhatikan bahwa setiap objek diatas, orang1, orang2, orang3, dan orang4 memiliki data nama yang berbeda-beda. Data nama yang bisa berbeda-beda setiap objek inilah yang disebut sebagai variabel instansi.

Kenapa disebut variabel instansi? Adalah karena dalam bahasa pemrograman berbasis objek, instansi memiliki makna yang sama dengan objek. Bahkan, proses pembuatan suatu objek dari suatu kelas itu disebut sebagai proses instansiasi.

Variabel instansi ini hanya bisa dideklarasikan dalam kelas, menggunakan ada:

kelas Orang {
ada nama
}

Variabel statis

Tahukah kamu jumlah jam dalam sehari? Iya, terdapat 24 jam dalam sehari. Jumlah jam dalam sehari ini bersifat tetap dan tidak berubah-ubah. Untuk menyimpan data seperti ini, kita menggunakan variabel statis.

Variabel statis dibuat menggunakan kata kunci ada sta, dan harus diadakan dalam suatu kelas:

kelas Hari {
ada sta JUMLAH_JAM = 24
}

Untuk mengakses data tersebut, kita menggunakan nama kelas disusul dengan nama variabel statis tersebut:

Hari.JUMLAH_JAM

Karena sifatnya yang statis, variabel tipe ini diadakan untuk kelas, bukan untuk instansi dari kelas tersebut. Sehingga, masalah akan timbul jika kita mengakses variabel statis dari instansi kelas.

ada h = Hari.baru
h.JUMLAH_JAM // bermasalah
Penting

Variabel statis bersifat statis, yakni, variabelnya diadakan untuk kelas, bukan untuk instansi dari kelas tersebut.

Secara umum, seluruh variabel statis bersifat tetap, yakni tidak dapat diubah nilainya setelah didefinisikan. Sehingga, jika kita mengubah nilai JUMLAH_JAM diatas, akan terjadi masalah:

Hari.JUMLAH_JAM = 123 // bermasalah

Tapi, ada beberapa kasus dimana kita perlu mengubah nilai variabel statis. Agar variabel statis dapat diubah, kita harus mendefinisikannya dengan kata kunci tambahan: fana. fana membuat variabel statis dapat diubah nilainya.

kelas Negara {
ada sta fana IBUKOTA = []
}

Negara.IBUKOTA += ["Jakarta"]
Negara.IBUKOTA += ["Tokyo"]
Penting

fana membuat variabel statis dapat diubah nilainya.

Variabel biasa

Variabel bebas adalah variabel apapun yang bukan variabel instansi, ataupun variabel statis. Misal, perhatikan fungsi berikut:

Fungsi tambah tanpa argumen
fn tambah() {
ada angka1 = 1
ada angka2 = 2

angka1 + angka2
}

Dalam contoh diatas, angka1 dan angka2 adalah variabel bebas. Variabel tersebut tidak dapat diakses diluar dari definisi dalam blok fungsinya. Jika kita mencoba memanggil angka1 dari luar fungsi, hal tersebut akan menjadi masalah:

angka1
MasalahPengenal: pengenal `angka1` tidak ditemukan atau belum terdefinisikan

Variabel bebas juga bisa berupa argumen dari suatu fungsi:

Fungsi tambah dengan argumen
fn tambah(angka1, angka2) {
angka1 + angka2
}

Sama halnya pada contoh fungsi tambah tanpa argumen, versi tambah dengan argumen diatas juga memiliki variabel bebas angka1 dan angka2 yang hanya bisa diakses dari dalam blok tambah.