Class didalam Ruby
Ruby adalah bahasa pemrograman berbasis objek yang sempurna dan tentunya harus memiliki fitur yang wajib dimilih oleh bahasa berbasis objek lainnya, seperti:
Data Encapsulation atau enkapsulasi data.
Data Abstraction atau abstraksi data.
Polymorphism.
Inheritance atau pewarisan.
Di buku ini kita tidak akan membahas lebih dalam mengenai pengertian dari bahasa berbasis objek. Kamu bisa mencari artikel yang membahas mengenai object oriented programming di internet atau bisa melalui link ini.
Mendeklarasikan class di Ruby
Pada bagian ini, kita akan belajar bagaimana mendeklarasikan sebuah class
didalam Ruby. Aturan penamaan class
dalam Ruby yakni harus berbentuk kapital, misalnya class
customer, maka harus ditulis Customer
.
class Customer
foo = "bar"
end
# Atau
class Customer; foo = "bar"; end
Variabel didalam class
Ruby
Ruby menyediakan empat (4) macam variabel, yaitu:
Local variables. Local variables adalah variabel yang didefinisikan didalam sebuah method. Local variables tidak dapat diakses dari luar scope method tersebut. Local variables diawali dengan huruf kecil atau garis bawah (
_
).Instance variables. Berbeda dengan local variables, instance variables dapat diakses diluar scope method dimana instance variables tersebut didefinisikan. Instance variables diawali dengan karakter "at" (
@
) diikuti dengan nama variabel. Instance variables juga bisa di define didalam sebuahclass
.Class variables. Class variables didefinisikan dengan karakter "at" dua kali (
@@
) dan diikuti dengan nama variabel. Class variables dapat diakses oleh seluruh method dimana class variables ini didefinisikan sertaclass
turunan dimana class variables didefinisikan.Global variables. Global variables didefinisikan dengan tanda dolar (
$
) dan diikuti dengan nama variabel. Sesuai namanya, global variables dapat diakses dimanapun, baik itu method,class
dan hampir disemua tempat.
Kita akan membahas satu persatu tipe variabel beserta contohnya nanti dibagian tersendiri. Sekarang kita akan membahas lebih lanjut mengenai class
dalam Ruby.
Membuat objects dengan method new
Objects adalah instance dari sebuah class
. Di bagian ini kita akan belajar cara membuat object dasar didalam Ruby menggunakan method new
yang sudah disediakan secara default oleh Ruby. method new
dimiliki oleh object Class
, kamu bisa mengeceknya dengan menggunakan irb dengan cara:
$ irb
irb(main)> Class.methods.grep /new/
[:new]
Diatas, kamu bisa melihat hasil array
yang dikeluarkan dari kode Class.methods.grep /new/
. Buat satu file baru dengan nama class1.rb
, lalu ketik kode dibawah:
class Foo; end
object1 = Foo.new
object2 = Foo.new
Penjelasan dari kode diatas adalah, pertama kamu mendefinisikan sebuah class
dengan nama Customer
, dan membuat dua object baru dengan nama object1
dan object2
dimana keduanya dibuat menggunakan method new
. Proses assign variabel seperti dalam contoh menggunakan operator sama dengan (=
) juga bisa disebut sebagai proses pembuatan sebuah objek didalam Ruby, karena setiap entitas adalah objek.
Perhatikan cara pemanggilan method new
, karena hampir semua pemanggilan method didalam Ruby akan sama. Pertama kamu menulis object dasarnya, dalam kasus ini adalah Foo
, lalu kamu memanggil object atau method yang ada didalam Foo
setelah titik (.
). Hampir semua bahasa pemrograman berbasis objek menggunakan cara ini dalam pemanggilan method. Jika method yang ingin kamu panggil tidak ada atau belum didefinisikan, maka Ruby akan mengeluarkan error kurang lebih seperti ini:
$ irb
irb(main)> Class.tidak_ada
NoMethodError: undefined method `tidak_ada' for Class:Class
from (irb):1
from /Users/username/.rbenv/versions/2.3.1/bin/irb:11:in `<main>'
Membuat objek baru dengan custom method pada class
Ruby
Kita dibebaskan untuk membuat sebuah method baru pada didalam sebuah class. Sebagai contoh, misalnya kita ingin membuat sebuah method namun dengan mengirim parameter id
dan name
dengan menggunakan new
. Kita bisa melakukannya dengan menyalin kode dibawah ini kedalam sebuah file baru. Kita beri nama file tersebut dengan class2.rb
:
class Foo
def initialize(id, name)
@id = id
@name = name
end
def check
puts "ini adalah ID #{@id}"
puts "ini adalah Name #{@name}"
end
end
bar = Foo.new(1, "user")
bar.check
Pada kode diatas, pertama kita mendefinisikan class Foo
sebagai objek utamanya. Didalamnya kita mendefinisikan method initialize()
dan check
, dimana initialize
adalah sebuah method standar yang sudah disediakan oleh Ruby ketika kita meng-inisialisasi sebuah class
baru atau bisa disebut dengan istilah callback (kita akan mempelajari ini nanti dibagian tersendiri). Diatas, kita mendefinisikan initialize()
dengan dua argument, id
dan name
. Secara default initialize tidak menerima argumen apapun. Didalam method initialize(id, name)
, kita mendifinisikan dua buah instance variables, yakni @id
dan @name
.
Semua instance variables yang didefinisikan didalam method initialize()
, dapat diakses oleh instance methods lain dan yang menurunkan class
yang mendefinisikan instance methods tersebut, tetapi tidak dengan class methods. Didalam method check
, kita menulis perintah puts
sederhana yang menghasilkan keluaran value dari @id
dan @name
. Dibaris berikutnya, kita coba untuk menggunakan class
yang sudah kita buat diatas. Sekarang coba eksekusi file class2.rb
, maka akan menghasilkan _output _kira-kira seperti ini:
$ ruby class2.rb
ini adalah ID 1
ini adalah Name user