Study
Lua

Table sebagai Object (OOP Sederhana)

Penjelasan

Lua TIDAK punya keyword `class` bawaan — object-oriented programming disimulasikan lewat table biasa yang berisi data (field) dan fungsi (method). Sintaks `objek:method()` (titik dua, bukan titik) otomatis mengirim `objek` itu sendiri sebagai parameter pertama tersembunyi bernama `self` — mirip `this` di bahasa lain.

Contoh Konsep

local Siswa = {}

function Siswa.baru(nama, nilai)
  local objek = { nama = nama, nilai = nilai }
  return objek
end

function Siswa.predikat(self)
  if self.nilai >= 85 then return "A"
  elseif self.nilai >= 70 then return "B"
  else return "C" end
end

local budi = Siswa.baru("Budi", 90)
print(budi:predikat())   -- "A", tanda : otomatis kirim budi sebagai self

Praktikum

Buat table Produk dengan fungsi Produk.baru(nama, harga) dan Produk.diskon(self, persen) yang mengembalikan harga setelah dipotong diskon.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

`objek:method(a, b)` adalah gula sintaksis (syntactic sugar) untuk `objek.method(objek, a, b)` — keduanya identik, tapi sintaks titik dua jauh lebih ringkas dan lebih umum dipakai.