Abstraksi Pewarisan Pemrograman berorientasi objek

2008 | Direktorat Pembinaan SMK 509 kasus untuk menentukan attribute suatu class mobil pada : Tabel 15.1. Attribute suatu class mobil Kantor Polisi Bengkel Mobil No mesin No registrasi Pemilik Pemilik Waktu Ganti Oli Besar Pajak Deskripsi servis 15.3.2. Enkapsulasi Penggabungan data dan method ke dalam suatu class atau dengan kata lain mengkombinasikan sebuah struktur dengan fungsi yang memanipulasinya untuk membentuk tipe data baru yaitu kelas class. Enkapsulasi merupakan suatu mekanisme untuk menyembunyikan atau memproteksi suatu proses dari kemungkinan interferensi atau penyalahgunaan dari luar sistem dan sekaligus menyederhanakan penggunaan sistem itu sendiri. Akses ke internal sistem diatur sedemikian rupa melalui seperangkat interface. Contoh sebuah kasus yang ada dilapangan misalnya pada sebuah sepeda motor, dimana pada sistem pemindahan gigi transmisi, maka pengendara tidak perlu tahu detail dari bagaimana proses pemindahan gigi itu dilakukan oleh mesin, cukup tahu bagaimana cara menekan gigi transmisi itu. Pedal gigi transmisi yang diinjak pengendara itu merupakan interface antar muka pengendara dengan sistem transmisi sepeda motor.

15.3.3. Pewarisan

warisan sifat dari class induk kepada class anaknya atau mendefinisikan suatu kelas dan kemudian menggunakannya untuk membangun hirarki kelas turunan, yang mana masing-masing turunan mewarisi semua akses kode maupun data kelas dasarnya. Sebagai manusia kita sebenarnya terbiasa untuk melihat objek yang berada disekitar kita tersusun secara hierarki berdasarkan classnya masing-masing. Dari sini kemudian timbul suatu konsep tentang pewarisan yang merupakan suatu proses dimana suatu class diturunkan dari class lainnya sehingga ia mendapatkkan ciri atau sifat dari class tersebut. Perhatikan contoh hirarki berikut ini: 510 Direktorat Pembinaan SMK | 2008 Gambar 15.2. Hirarki Pewarisan Dari hirarki diatas dapat dilihat bahwa, semakin kebawah, class akan semakin bersifat spesifik. Class mamalia memiliki seluruh sifat yang dimiliki oleh binatang, demikian halnya juga Anjing, kucing dan Monyet memiliki seluruh sifat yang diturunkan dari class mamalia. Dengan konsep ini, karakteristik yang dimiliki oleh class binatang cukup didefinisikan didefinisikan dalam class binatang saja. Class mamalia tidak perlu mendefinisikan ulang apa yang telah dimiliki oleh class binatang, karena sebagai class turunannya, ia akan mendapatkan karakteristik dari class binatang secara otomatis. Demikian juga dengan class anjing, kucing dan monyet, hanya perlu mendefinisikan karakteristik yang spesifik dimiliki oleh classnya masing-masing. Dengan memanfaatkan konsep pewarisan ini dalam pemrograman, maka hanya perlu mendefinisikan karakteristik yang lebih umum akan didapatkan dari class darimana ia diturunkan.

15.4. Immutable obyek

Dalam pemrograman berorientasi objek, immutable obyek adalah obyek dengan kondisi yang tidak dapat dimodifikasi setelah dibuat. Hal ini berbeda dengan mutable objek, dimana obyek tersebut dapat dimodifikasi setelah dibuat. Obyek dapat immutable secara keseluruhan atau hanya beberapa atribut objek yang ditentukan saja, misalnya menggunakan atribut anggota const data pada bahasa pemrograman C++. Dalam beberapa kasus, obyek dianggap immutable walaupun ada beberapa hal perubahan internal yang digunakan oleh atribut tetapi kondisi objek nampaknya tidak bisa diubah secara ekternal dari beberapa sudut pkitang. Sebagai contoh, sebuah obyek yang menggunakan memoization pada cache hasil komputasi yang baik ini tetap dapat tetap dianggap sebagai objek. Awal dari sebuah kondisi tetap objek biasanya diatur pada posisi berdiri, tetapi dapat juga ditetapkan sebelum menggunakan obyek tersebut. Binatang Mamalia Reptile Kucing Monyet Anjing 2008 | Direktorat Pembinaan SMK 511 Immutable objek sering berguna karena beberapa biaya operasional seperti menyalin dan membandingkan dapat diabaikan, menyederhanakan kode program dan mempercepat eksekusi. Namun, membuat obyek immutable biasanya tidak tepat jika objek berisi sejumlah besar data yang berubah-ubah. Karena itu, banyak bahasa yang mempunyai fasilita kedua objek tersebut baik mutable dan immutable obyek. Dalam kebanyakan bahasa berorientasi objek, objek dapat disebut dengan referensi. Beberapa contoh seperti bahasa Java, C++, C, VB.NET dan banyak bahasa scrip seperti Ruby dan Python. Dalam hal ini, hal-hal apakah kondisi obyek dapat berbeda bila benda dibagi melalui referensi. Jika obyek yang diketahui adalah immutable, maka dapat disalin cukup dengan membuat salinan referensi, bukan untuk menyalin seluruh objek. Karena referensi biasanya hanya ukuran sebuah pointer biasanya jauh lebih kecil daripada obyek itu sendiri, sehingga lebih mudah dalam penyimpanan di memori dan meningkatkan kecepatan dalam eksekusi. Teknik penyalinan Referensi jauh lebih sulit digunakan pada objek mutable, karena jika ada pengguna referensi ke sebuah obyek mutable yang merubahnya, semua pengguna lain akan melihat perubahannya. Jika ini bukan efek dimaksudkan, maka akan lebih sulit untuk memberitahukan ke pengguna yang lain untuk meminta mereka merespon dengan benar. Dalam situasi ini, defensif menyalin dari seluruh obyek daripada referensi biasanya lebih mudah namun solusi mahal. Para pengamat menyatakan bahwa teknik alternatif untuk menangani perubahan objek mutabel. Immutable objects dapat berguna dalam aplikasi multi- threaded. Multiple threads dapat bertindak berdasarkan data yang diwakili oleh immutable objek tanpa memperhatikan data yang diubah oleh thread lainnya. immutable obyek mempunyai pertimbangan atau dianggap lebih aman daripada mutable object atau obyek yang berubah. Dalam Praktiknya selalu menggunakan referensi pada saat melakukan copy atau sering dikenal sebagai objek interning. Jika interning digunakan, dua benda dianggap sama jika dan hanya jika mereka referensi, biasanya digambarkan sebagai integers yang keuanya sama. Beberapa bahasa secara otomatis: misalnya, secara otomatis Python interns string dan lain-lain. Jika algoritma yang menerapkan interning dijamin, maka untuk melakukan setiap kasus yang mungkin membandingkan dengan obyek untuk mengurangi pointer, dan yang penting dalam mendapatkan kecepatan maksimal dalam aplikasi. Bahkan jika algoritma tidak dijamin secara lengkap, masih ada kemungkinan jalan yang cepat untuk meningkatan kasus ketika obyek yang sama dan menggunakan referensi yang sama. Interning umumnya hanya berguna untuk immutable benda. Kadang-kadang kalau bicara tertentu mengenai satu bidang obyek yang immutable. Ini berarti bahwa tidak ada cara untuk mengubah kondisi bagian objek, walaupun