Sabtu, 01 November 2008

Derivation and inheritance pada Ruby

Derivation and Inheritance

pada bagian ini akan kita bahas tentang kosep derivation of class. pada ruby derivasi class merupakan fitur yang sangat berguna, dikarenakan programmer diijinkan untuk mendefinisikan class baru dengan cara melakukan extending class yang sudah ada. dengan menggunakan class turunan, programmer bisa mengekploitasi commonalities yang berada pada class dalam sebuah program. class yang berbeda dapat melakukan sharing nilai dan operasi.

Derivation merupakan pendefinisian class dengan cara meng-Extend dari class yang telah ada. class yang baru disebut class turunan. dan yang lama yang dijadikan referensi disebut dengan base class.

dikutip dari :
http://www.brpreiss.com

didalam Ruby, setiap class merupakan turunan dari sebuah base class. jika tidak ada base class yang dideklarasikan secara explisit ketika class baru didefinisikan, object base class is assumed. tidak seperti pada object oriented pada bahasa lain, Ruby tidak support untuk multiple inheritance.

perhatikan contoh berikut ini :


Program : Person class



Program: Parent class.

class turunan akan mewariskan semua atribut yang dimiliki oleh base class. tentu saja class turunan berisi semua atribut yang dimiliki oleh base class dan class turunan akan mensuport semua operasi yang sama yang terdapat pada base class. sebagai contoh :


p = Person.new
q = Parent.new

karena p adalah person, maka p akan memiliki atribut @name dan @sex dan methode to_s. lebih jauh lagi, karena parent is derived from person, maka object q juga memiliki atribut @name dan @sex dan methode to_s.

class turunan juga dapat meng-extend base clas untuk beberapa cara : atribut pada instance yang baru dapat digunakan, methode baru dapat didefinisikan, dan existing methode dapat dilakukan overridden. cebagai contoh : parent class menambahkan atribut baru @children dan methode child.

jika methode didefinisikan pada class turunan yang memiliki nama yang sama pada base class, maka methode pada class turunan akan meng-overridde methode pada base class. sebagai contoh : methode to_s pada parent class akan mengoverridde methode to_s pada class Person. oleh karena itu, p.to_s akan meng-invoke Person.to_s yang mana q.to_s meng-invoke parent.to_s.