Rabu, 08 Agustus 2012

Object vs Class


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.

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.

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.

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.

Semoga dengan tulisan yang singkat ini bisa memperdalam pemahaman Anda mengenai objek dan kelas.





Tidak ada komentar:

Posting Komentar