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