Sekarang, mari kita buat sebuah objek Greeter dan kita pakai:
Saat objek greeter
dibuat, maka objek tersebut mengingat bahwa nama adalah
Pat. Hmm, bagaimana jika kita ingin mendapatkan nama secara langsung?
Tidak, caranya tidak bisa seperti itu.
Di Bawah Naungan Objek yang Sama
Variabel objek tersembunyi dalam sebuah objek. Variabel objek tidak benar-benar tersembunyi sepenuhnya, Anda bisa melihat variabel objek kapan saja Anda menginspeksi obyek tersebut, dan ada lagi cara lain untuk mengakses variabel objek, tetapi Ruby menggunakan pendekatan berorientasi objek yang bagus untuk menjaga data supaya seperti tersembunyi.
Jadi method apa yang sebetulnya ada pada obyek TukangSapa?
Wah, ada banyak method. Padahal kita hanya mendefinisikan dua method.
Apa yang sebenarnya terjadi di sini? Jadi, ini adalah semua method
objek Greeter, sebuah daftar yang lengkap, termasuk method yang
didefinisikan oleh kelas induk (ancestor). Jika kita hanya ingin menampilkan
method yang didefinisikan oleh kelas Greeter kita cukup memberi tahu kelas
tersebut agar tidak memasukkannya dengan melewatkan parameter false
,
artinya kita tidak menginginkan method yang didefinisikan oleh kelas induk.
Nah, seperti itu. Sekarang coba kita lihat method mana dari objek Greeter yang memberikan respons:
Jadi, objek mengetahui method say_hi
dan to_s
(artinya
mengubah suatu objek ke string, sebuah method yang didefinisikan secara
default pada semua objek), tetapi objek tidak mengetahui tentang
name
.
Mengubah Kelas—Tidak Ada yang Tidak Mungkin
Tetapi bagaimana jika Anda ingin melihat atau mengubah name? Ruby menyediakan cara yang mudah untuk mengakses variabel objek.
Di Ruby, Anda dapat membuka lagi sebuah kelas dan memodifikasi kelas tersebut.
Modifikasi tersebut akan muncul pada obyek baru yang Anda buat
dan bahkan tersedia juga pada obyek yang sudah ada dari kelas yang
bersangkutan. Jadi, mari kita coba buat sebuah objek baru dan bermain dengan
property @name
.
Menggunakan attr_accessor
kita sudah mendefinisikan dua method baru,
name
untuk mendapatkan (get) nilai dan name=
untuk mengatur (set) nilai.
Menyapa Apa Saja dan Apapun, MegaGreeter Tidak Mengabaikan Sama Sekali!
Penyapa kita sebenarnya tidaklah terlalu menarik, penyapa hanya bisa menyapa satu orang di saat yang sama. Bagaimana seandainya kita memiliki MegaGreeter yang bisa menyapa dunia, satu orang, atau bahkan seluruh daftar orang?
Kali ini, mari kita langsung tulis ke berkas saja daripada menggunakan interactive Ruby interpreter IRB.
Untuk keluar dari IRB, ketik “quit”, “exit” atau tekan saja Control-D.
Simpan berkas dengan nama “ri20min.rb” dan jalankan dengan perintah “ruby ri20min.rb”. Keluaran seharusnya muncul sebagai berikut:
Hello World!
Goodbye World. Come back soon!
Hello Zeke!
Goodbye Zeke. Come back soon!
Hello Albert!
Hello Brenda!
Hello Charles!
Hello Dave!
Hello Engelbert!
Goodbye Albert, Brenda, Charles, Dave, Engelbert. Come
back soon!
...
...
Ada banyak hal baru pada contoh terakhir kali ini yang bisa kita lihat lebih lanjut.