Sedikit tentang attr_accessor

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)
About these ads

One thought on “Sedikit tentang attr_accessor

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s