Monday, August 26, 2013

Overriding : Ruby Programming

Overriding - Ruby Programming

Merupakan sebuah metode yang digunakan dalam bahasa pemrograman OOP dalam hal pemanggilan method dari sebuah class yang memiliki keturunan dari parent nya (membingungkan yah bahasanya -__-). Ok, langsung saja kita buat sebuah contoh. Kita memiliki dua buah class, yang pertama merupakan class parent dan satu lagi class children yang merupakan keturunan dari class parent. Langsung lihat saja contohnya dibawah ini :

class Parent
  def say_hello
    puts "hello from parent"
  end
end 

class Children < Parent
  def say_hello
    puts "holla from children"
  end
end

Kemudian kita lakukan percobaan seperti berikut ini :

child = Children.new
child.say_hello # holla from children

Disana terdapat dua buah method dengan nama yang sama, yaitu method "say_hello". class Parent dan class Children memiliki method tersebut. Akan tetapi mengapa method "say_hello" milik class Children yang dieksekusi ? kemudian class Children merupakan keturunan dari class Parent, bagaimana tuh ?

Kita tidak perlu bingung, karena alur kerja interpreter pada proses ini adalah dengan cara mencari method tersebut pertama kali di dalam class yang dijadikan object (yaitu class Children), jika method tersebut dimiliki oleh class Children maka method tersebut lah yang dieksekusi.

Nah, jika method "say_hello" tersebut tidak ditemukan di dalam class Children maka interpreter akan mengecek apakah class Children tersebut merupakan keturunan dari class lain, jika benar maka method tersebut akan dicari di dalam class parent nya. Contoh disini maka akan dicari di dalam class Parent, jika method ditemukan maka method "say_hello" yang berada di class Parent yang akan dieksekusi.

Jika masih tidak ditemukan saja, maka interpreter akan mengecek kembali apakah class Parent tersebut merupakan keturunan dari class lain. Jika tidak maka yaa akan ditampilkan pesan bahwa method tidak dikenal.

Begitulah singkat mengenai tutorial Overriding pada Ruby.
Let's share :)

No comments:

Post a Comment