Module & Mixin di Ruby
Penjelasan
Module adalah kumpulan method/konstanta yang TIDAK bisa langsung di-instansiasi (tidak ada Module.new), tapi bisa "dicampurkan" (mixed in) ke class lain lewat include — method-method di dalam module itu jadi seolah-olah milik class tersebut. Ini jadi cara idiomatis Ruby berbagi perilaku antar class yang tidak berhubungan lewat inheritance, semacam pengganti multiple inheritance.
Contoh Konsep
module BisaTerbang
def terbang
"#{self.class} sedang terbang!"
end
end
class Burung
include BisaTerbang
end
class Pesawat
include BisaTerbang
end
puts Burung.new.terbang # Burung sedang terbang!
puts Pesawat.new.terbang # Pesawat sedang terbang!
Praktikum
Buat module BisaBerenang dengan method berenang yang mengembalikan "#{self.class} sedang berenang!". Buat class Ikan yang include module itu. Buat object Ikan dan tampilkan hasil berenang.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Module juga sering dipakai sebagai NAMESPACE untuk mengelompokkan class-class yang berhubungan (mis. module Payment; class CreditCard; end; end), fungsinya beda dari mixin — satu keyword module, dua kegunaan berbeda tergantung konteks pemakaiannya.