attr_accessor adalah method yang digunakan untuk proses set dan get dari accessor (pengakases variabel), Sesuai dengan Mantra dari DRY (Don’t Repeat Yourself), dengan menggunakan method ini kita tidak usah repot menduplikasi method yang sama secara berulang-ulang hanya untuk men-set variabel dari method initialize.
Pengetahuan tentang attr_accessor dibutuhkan karena adakalanya untuk suatu kebutuhan tertentu method ini tidak kita gunakan, untuk lebih jelasnya saya buat sebuah code sederhana yang lengkap tanpa menggunakan attr_accessor.
class Orang
#attr_accessor :nama, :kelamin
#attr_writer :nama
#attr_reader :nama
#attr_writer :kelamin
#attr_reader :kelamin
def initialize( aNama, aKelamin )
@nama = aNama
@kelamin = aKelamin
end
#set accessor untuk @nama
def nama=( aNama )
@nama = aNama
end
# get accessor untuk @nama
def nama
return @nama
end
# set accessor for @kelamin
def kelamin=( aKelamin )
@kelamin = aKelamin
end
# get accessor untuk @kelamin
def kelamin
return @kelamin
end
end
t = Orang.new("Asep", "Lelaki tulen")
puts(t.nama)
puts(t.kelamin)
silahkan anda mencobanya dengan melakukan comment pada masing-masing. Saya masukan juga method attr_writer dan attr_reader yang dapat digunakan untuk set accessor dan get accessor instance variable.
class Orang
attr_writer :nama
attr_reader :nama
attr_writer :kelamin
attr_reader :kelamin
def initialize( aNama, aKelamin )
@nama = aNama
@kelamin = aKelamin
end
end
t = Orang.new("Asep", "Lelaki tulen")
puts(t.nama)
puts(t.kelamin)
kemudian coba code ini,
class Orang
attr_accessor :nama, :kelamin
def initialize( aNama, aKelamin )
@nama = aNama
@kelamin = aKelamin
end
end
t = Orang.new("Asep", "Lelaki tulen")
puts(t.nama)
puts(t.kelamin)
Object = State + Behaviour
Bagi saya Ruby telah banyak membantu saya dalam memahami pemrograman berorientasi objek (object oriented programming). saya merasa sangat terbantu karena lebih mudah mencerna segala hal tentang pilar-pilar dalam OOP. Salahsatu pilar dari Pemrograman yang berorientasi Objek adalah Polymorphysm.
Polymorphysm secara harfiah adalah banyak bentuk, yaitu sebuah konsep penulisan kode program yang dapat diterapkan dalam banyak type class dalam class tersebut. selanjutnya untuk memahami pernyataan diatas akan terasa lebih asyik jika kita memuliskan programnya, sebelumnya saya mengambil contoh dari polymorphysm yang ditulis di sini dalam Java, tanpa bermaksud membandingkan, karena setiap bahasan memiliki keunggulan sendiri-sendiri.
class Penyanyi {
public void data() {
System.out.println("aku adalah penyanyi");
}
}
class Krisdayanti extends Penyanyi {
public void data() {
System.out.println("aku adalah krisdayanti");
}
}
class BungaCitraLestari extends Penyanyi {
public void data() {
System.out.println("aku adalah bunga citra lestari");
}
}
class Polymorphisme {
public static void main(String[] args) {
Penyanyi p;
Krisdayanti kd = new Krisdayanti();
BungaCitraLestari bcl = new BungaCitraLestari();
p = kd; p.data();
p = bcl; p.data();
}
}
sebelum saya menuliskannya dalam Ruby ada dua hal yang selalu saya terapkan ketika menulis code, yaitu in Ruby everything is object, object = state + behaviour dan mantra dari Pragmatic programmer yaitu Don’t Repeat Yourself(DRY), sekecil mungkin menghindari penulisan kode program secara berulang-ulang untuk suatu hal yang sama.
jika saya tulis ulang dalam Ruby adalah sebagai berikut :
class Penyanyi
attr_accessor :nama_penyanyi
def initialize(nama_penyanyi)
@nama_penyanyi = nama_penyanyi
end
end
class Identitas < Penyanyi
def nama
"Aku adalah #{@nama_penyanyi}"
end
end
kumpulan_penyanyi = [Identitas.new("Krisdayanti"), Identitas.new("Bunga Citra Lestari")]
kumpulan_penyanyi.each do |penyanyi|
puts penyanyi.nama
end
silahkan coba code di atas kemudian renungkan, sebelum kita membahasnya lebih jauh. silahkan lihat juga code saya di github
Setelah sekian lama berkelana dengan banyak bahasa pemrograman, mulai dari C, C++, C#, java, dst… saya mulai menemukan kenyamanan ketika berkenalan dengan Ruby, diawali ketika membaca Foreword dari buku Programming Ruby yang ditulis langsung oleh sang pembuaat Yukihiro “Matz” Matsumoto, hal menarik yang diungkapkannya adalah bahwa kelahiran dari Ruby ini adalah karena mimpinya yang ingin membuat bahasa pemrograman yang attainable. sehingga ng0ding akan jadi kegiatan yang menyenangkan tanpa merasa dijejali dengan banyak aturan yang sebetulnya membatasi kreativitasnya.
walapun saya belum mendapatkan keidahan seperti apa yang diungkapkan oleh Matz tetapi saya merasa yakin bahwa bahasa script ini adalah bahasa yang cocok buat saya setalah selalu gagal dalam menyelami bahasa pemrograman yang lain, sampai kena justifikasi oleh kakak tingkat saya bahwa saya tidak akan berhasil dalam programming. saya ingin membuktikan bahwa saya juga bisa dengan bahasa Ruby tentunya.
sebagai contoh sederhana saya coba membandingkannya dengan Java untuk menuliskan hello world
import java.io.*;
public class Hello {
public static void main ( String[] args){
System.out.println ("Hello World!\n");
}
}
bandingkan dengan yang ditulis dalam Ruby,
puts "Hello World!\n"
menurut saya simple dan menarik dan tampak lebih bersih tanpa banya semicolon sehingga ketika dikompile tidak ada lagi tek-tek bengek ngurusin semicolon. semoga saja semakin bersemangat untuk terus diselami.