Encapsulation di Ruby (Public, Private, Protected)
Penjelasan
Ruby punya tiga level visibilitas method: public (default, bisa dipanggil dari mana saja), private (cuma bisa dipanggil dari dalam object itu sendiri, TANPA menyebut nama object-nya secara eksplisit), dan protected (cuma bisa dipanggil dari dalam class yang sama atau turunannya). Ditandai dengan menulis keyword-nya di tengah body class, semua method setelahnya ikut level visibilitas itu sampai ada penanda baru.
Contoh Konsep
class Akun
def initialize(saldo)
@saldo = saldo
end
def info
"Saldo: #{format_saldo}" # boleh, dipanggil dari dalam object
end
private
def format_saldo
"Rp#{@saldo}"
end
end
akunku = Akun.new(50000)
puts akunku.info
# akunku.format_saldo # Error! private, tidak bisa dipanggil dari luar
Praktikum
Buat class Siswa dengan attr_reader :nama (getter saja, tanpa setter), diisi lewat initialize. Tambahkan private method label_privat yang mengembalikan "[SISWA]", dan method publik info yang menggabungkan label_privat dengan nama. Buat object-nya dan tampilkan hasil info.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Pakai attr_reader kalau property hanya perlu dibaca dari luar (tanpa boleh diubah), attr_writer kalau hanya perlu diisi tanpa dibaca, dan attr_accessor kalau butuh keduanya — lebih presisi dibanding selalu pakai attr_accessor untuk semuanya.