Kemiripan Ruby dengan C++
Sama seperti di C++, di Ruby,...
- Anda punya banyak operator-operator yang sama (bahkan
::
). Operator<<
juga sering digunakan untuk append elemen ke list. Tetapi perlu dicatat: di Ruby Anda tidak akan pernah menggunakan->
, di Ruby selalu menggunakan.
. - Ada
public
,private
danprotected
. Namun perlu diperhatikan bahwa arti semantiknya mirip, namun tidak sepenuhnya sama dengan penggunaan C++. - Sintaks inheritance (penurunan kelas) sama satu karakter juga, tetapi menggunakan
<
bukan:
. - Anda bisa menaruh kode Anda dalam “module”, mirip kalau di C++ Anda menggunakan
namespace
. - Ada juga Exception yang kurang lebih sama tetapi berbeda keyword.
Perbedaan-perbedaan Ruby dengan C++
Tidak seperti C++, di Ruby,...
- Tidak ada reference secara eksplisit. Jadi setiap variabel di Ruby sudah otomatis dereference obyek tersebut. Apabila di C++ ada perbedaan antara
orang.nama
denganorang->nama
, di Ruby hanya adaorang.nama
. Sintaks&orang
juga tidak diperlukan di Ruby. - Obyek strongly tetapi dynamically typed. Jadi runtime-lah yang menentukan at runtime (disaat runtime) bahwa suatu pemanggilan metode berjalan atau tidak.
- Konstruktor dinamakan
initialize
ketimbang nama kelas. - Semua metode selalu virtual.
- Nama variabel (static) kelas selalu diawali dengan
@</tt> (seperti <tt>
@total_widget). - Anda tidak bisa langsung mengakses variabel member, semua akses ke variabel member public (kalau di Ruby dikenal sebagai atribut) dipanggil lewat metode.
- Pakai
self
, bukanthis
. - Beberapa metode diakhiri dengan ’?’ atau ’!’. Sebetulnya tanda tanya dan tanda seru tersebut juga merupakan bagian dari nama metode.
- Tidak ada multiple inheritance. Tetapi Ruby punya “mixin” (jadi Anda bisa “inherit” / menurunkan semua metode instan dari module).
- Ada pengaturan penamaan (mis. nama kelas selalu diawali dengan huruf kapital, nama variabel lokal diawali dengan huruf kecil).
- Buka dan tutup kurung untuk pemanggilan metode boleh dipakai boleh juga tidak (opsional).
- Anda bisa membuka lagi kelas kapan saja dan menambahkan metode-metode ke kelas tersebut.
- Tidak perlu C++ template (karena Anda bisa assign obyek apa saja ke suatu variabel, dan type akan diketahui ketika runtime). Juga tidak ada casting.
- Iterasi dilakukan dengan sedikit berbeda. Di Ruby, Anda tidak menggunakan obyek iterator terpisah (seperti
vector<T>::const_iterator iter
) tetapi obyek Anda cukup melakukan mixin moduleEnumerator
dan memanggil metode sepertiobyek_saya.each
. - Hanya ada dua container type, yaitu
Array
danHash
. - Tidak ada konversi tipe dan typecasting. Dengan Ruby, Anda akan mengetahui kenapa hal tersebut tidak diperlukan.
- Mendukung multithreading, tetapi di Ruby 1.8 masih “green thread” (diimplementasikan hanya dengan interpreter) yang didukung.
- Library unit testing sudah standar bawaan di Ruby.
Tidak ada komentar:
Posting Komentar