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 sebuah class.

  • 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 serta class 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

results matching ""

    No results matching ""