Dalam konsep berorientasi objek, istilah objek dan kelas
merupakan hal yang mendasar. Sulit membedakannya bagi orang yang awam dalam
konsep object-oriented. Penulis juga sempat bingung harus memulai dari “siapa”,
objek dulu atau kelas dulu. Akhirnya dengan melewati renungan yang panjang (dan
eksplorasi beberapa sumber), diputuskan bahwa kita mulai dari objek dulu yang
kemudian disusul dengan kelas.
1.
Objek (Object)
Secara sederhana, objek merupakan segala sesuatu yang dapat dibedakan satu sama lainnya. Segala sesuatu yang ada di alam semesta ini adalah objek. Contohnya: manusia, mobil, hewan, tumbuhan, tempat, atau bahkan yang tidak bersifat fisik seperti kejadian atau konsep-konsep. Sehingga bisa disimpulkan bahwa objek tidak harus bersifat fisik, karena jika dikaitkan dengan OOP objek akan menjadi bentuk logis.
Dalam dunia nyata, objek memiliki dua karakteristik: keadaan
(state) dan sifat (behavior). Contohnya, sapi memiliki keadaan (nama, warna,
tanduk, berat, jenis kelamin) dan sifat (bersuara, berjalan, makan). Mobil juga
memiliki keadaan (jumlah ban, status gigi, merk, jumlah penumpang) dan sifat
(berjalan, belok, berhenti, merubah gigi).
Objek dalam konsep OOP masih memiliki keadaan dan sifat
seperti halnya objek di dunia nyata, karena pada dasarnya objek dalam OOP
merupakan representasi dari dunia nyata. Objek dalam OOP merepresentasikan
keadaan melalui variabel, sedangkan sifatnya direpresentasikan menjadi method.
Method merupakan suatu fungsi (sub-routine) yang berhubungan dengan objek.
Definisi: “objek merupakan penggabungan variabel-variabel
dan method-method yang berhubungan dengannya.”
Setiap
objek bisa dibedakan antara satu dengan yang lainnya. Misalnya, objek mobil
bisa dibedakan berdasarkan merknya. Objek hewan bisa dibedakan berdasarkan
jenis dan ciri fisiknya. Walaupun objek tersebut bernama sama, tetapi masih
tetap bisa dibedakan. Misalnya, objek mobil Kijang bisa dibedakan berdasarkan
nomor rangka, warna, tahun keluaran, tipe, nomor polisi, dan sebagainya. Objek
kucing bisa dibedakan dari warna dan corak bulunya. Bahkan dua orang yang
kembar pun masih bisa dibedakan satu sama lainnya, misalnya dengan nama atau
ciri tertentu yang spesifik dan juga sifatnya. Konsep “pembedaan” ini disebut
dengan konsep identitas.
Segala sesuatu yang diketahui oleh objek (state) dan yang
bisa dilakukannya (behavior) terangkum dalam variabel dan method. Misalnya
objek yang memodelkan mobil memiliki variabel yang menandakan keadaan dari
objek tersebut, misalnya: jumlah ban ada 4, penumpang ada 5, sedang berjalan
dengan kecepatan 60 km/jam, dan giginya sedang pada gigi 4. Variabel-variabel
tersebut biasanya disebut dengan variabel instans (instance variable) karena
pada dasarnya menjelaskan keadaan tertentu dari objek mobil. Sedangkan objek
tertentu tersebut (mobil) dalam terminologi OOP disebut dengan instans
(instance).
Seperti halnya variabel, objek mobil juga harus memiliki
method untuk mengurangi kecepatan, mengerem, dan merubah gigi. Method ini
disebut dengan method instans (instance method) karena method-method tersebut
merubah keadaan objek mobil tersebut. Pada hampir kebanyakan sumber, objek
diilustrasikan dalam diagram sebagai berikut.
Pada diagram tersebut tergambarkan bahwa variabel posisinya
di tengah-tengah (inti) objek. Method-method mengelilingi dan terkesan
menyembunyikan keberadaan inti objek tersebut (variabel) dari objek lain.
Pembungkusan variabel-variabel objek yang dijaga oleh methodnya disebut dengan
enkapsulasi (encapsulation).
Suatu objek bisa juga spesialisasikan
menjadi objek yang lebih rendah tingkatnya (spesialisasi/specialization) atau
bisa digeneralisasikan menjadi objek yang lebih tinggi tingkatnya
(generalisasi/generalization). Untuk lebih jelasnya bisa dilihat pada gambar 3.
Mobil bisa dispesifikasikan menjadi
mobil Toyota Kijang, Honda Jazz, Daihatsu Xenia, dan Hyundai Atoz. Selain itu
mobil juga bisa digeneralisasi bersama-sama dengan objek pesawat terbang dan
kapal laut menjadi objek alat transportasi. Begitu juga dengan manusia, hewan,
dan tumbuhan bisa dikelompokkan menjadi objek mahluk hidup.
Konsep
generalisasi dan spesifikasi (gen-spec) hanyalah masalah dari mana kita
“membaca” suatu objek. Gambar 2a bisa juga disebut generalisasi jika kita
membacanya dari bawah ke atas. Generalisasi sering disebut juga dengan
klasifikasi, dan klasifikasi inilah yang akan mengantarkan kita pada konsep
kelas yang akan kita bahas di bagian berikutnya.
1.
Kelas (Class)
Kelas merupakan suatu konsep yang lebih tinggi lagi hierarkinya dari objek yang dihasilkan dari proses generalisasi objek-objek yang memiliki beberapa ciri yang sama. Dalam OOP, kelas merupakan suatu hasil pemodelan fakta-fakta dari suatu objek yang berguna bagi suatu aplikasi yang diprogram. Proses pemodelan fakta-fakta tersebut disebut dengan abstraksi. Proses abstraksi sangat penting ketika kita melakukan analisa sesuatu dari dunia nyata agar bisa dimodelkan menjadi bentuk logis yang dimengerti oleh aplikasi/komputer. Misalnya, untuk memodelkan mahasiswa, kita cukup memasukkan nama, alamat, tempat lahir, tanggal lahir, telepon, orang tua, dan sebagainya.
Perlu dicatat bahwa proses abstraksi hanya memasukkan
fakta-fakta yang berguna (penting) saja bagi aplikasi yang bersangkutan.
Misalnya pada objek mahasiswa tadi, kita belum tentu perlu memasukkan warna
mata, berat badan, ukuran sepatu, bentuk wajah, bentuk hidung, warna kulit, dan
lain-lain yang tidak ada hubungannya dengan kegiatan perkuliahan nantinya di
universitas yang bersangkutan.
Fakta-fakta yang dimodelkan bisa berupa ciri dan fungsi dari
suatu objek. Pada kelas hasil abstraksi, ciri-ciri tadi akan berubah menjadi
data yang memiliki tipe, dan fungsi akan lebih sering disebut sebagai method.
Kadang-kadang data juga disebut dengan variabel instan. Sehingga bisa ditarik
kesimpulan sederhana, bahwa kelas merupakan suatu metode logis yang
mengorganisir/menggabung data dan method pada struktur yang sama.
2.
Perbedaan Objek dan Kelas
Setelah melalui penjelasan tentang objek dan kelas di atas, kita bisa simpulkan perbedaan antara keduanya.
Kelas
adalah sesuatu yang menjelaskan ciri-ciri secara umum dari suatu objek,
termasuk apa-apa yang bisa dilakukan objek tersebut. Sedangkan objek adalah
keadaan tertentu dari suatu kelas, atau sering juga disebut dengan instans dari
kelas.
Mari
kita simak kalimat singkat berikut untuk lebih memperdalam pemahaman kita
tentang objek dan kelas:
“Seekor
kucing Persia memiliki empat ekor anak.”
Kalimat tersebut mengisyaratkan bahwa kucing Persia
merupakan kelasnya, sedangkan anak-anaknya merupakan objek. Dengan kata lain,
jika seekor kucing Persia tersebut memiliki empat anak, berarti dia telah
membuat empat buah objek (instans) dari kelas kucing Persia. Setiap anak kucing
memiliki cirinya tersendiri. Ada yang berbulu putih, kuning hitam, atau campuran
hitam kuning. Selain itu ada yang memiliki ekor panjang sempurna, panjang
bengkok, pendek, ekor “keriting”, dan sebagainya. Dan jenis kelaminnya juga ada
beberapa yang jantan dan ada juga yang betina. Tetapi walaupun berbeda dalam
hal ciri-ciri fisiknya, harus diingat bahwa semuanya tetaplah kucing Persia.
Salah satu keuntungan
program didefinisikan dengan konsep OOP adalah adanya pengkapsulan
(encapsulation) program dalam class dan object, dimana programmer yang
menggunakan class tidak perlu mengetahui isi dan jalannya class secara detail,
hanya perlu tahu bagaimana cara menggunakannya. Sama halnya dengan sebuah mobil
misalnya. Seorang pemilik mobil tentunya tidak perlu mengetahui bagian-bagian
mobil secara menyeluruh. Dia tidak perlu mengetahui bagaimana mesin mobil
melakukan pembakaran dan bagaimana mesin mobil bisa menggerakkan roda, dsb. Dia
hanya perlu tahu bagaimana cara menjalankan mobil, bagaimana menghentikan
mobil, dan fungsi mobil lainnya.
0 komentar:
Posting Komentar