Anda di halaman 1dari 5

Konsep OOP di Java

Pemrograman berorientasi objek diciptakan untuk mempermudah pengembangan


program dengan cara mengikuti model yang telah ada dalam kehidupan nyata. Dalam
paradigma ini, sesuai dengan model kehidupan nyata, segala bagian (entiti) dari suatu
permasalahan adalah objek. Objek-objek ini kemudian juga dapat berupa gabungan dari
beberapa objek yang lebih kecil. Sebagai contoh, tengoklah sebuah mobil. Mobil adalah
sebuah objek dalam kehidupan nyata. Namun mobil sendiri terbentuk dari beberapa objek
yang lebih kecil seperti roda ban, mesin, jok, dll. Mobil sebagai objek yang merupakan
gabungan dari objek yang lebih kecil dibentuk dengan membentuk hubungan antara
objek-objek penyusunnya. Begitu juga dengan sebuah program. Objek besar dapat
dibentuk dengan menggabungkan beberapa objek-objek dalam bahasa pemrograman.
Objek-objek tersebut berkomunikasi dengan saling mengirim pesan kepada objek lain.

Konsep-konsep pemrograman berorientasi objek dalam Java secara umum sama dengan
yang digunakan oleh bahasa-bahasa lain. Jadi kebanyakan konsep yang kita bahas juga
terdapat dalam bahasa selain Java. Namun, terkadang terdapat perbedaan-perbedaan kecil
antara penerapan konsep-konsep tersebut dalam masing-masing bahasa. Perbedaan-
perbedaan ini juga akan dijelaskan seiring penjelasan masing-masing konsep.

Objek
Dalam penjelasan mengenai analogi, kita sudah menyinggung mengenai objek. Sekarang
kita akan mengupas lebih dalam tentang objek sebagai konsep kunci dari pemrograman
berorientasi objek.

Baik dalam dunia nyata atau dalam sebuah program, sebuah objek memiliki dua
karakteristik, yaitu state dan behaviour. State adalah keadaan dari sebuah objek, seperti
mobil memiliki state warna, model, tahun pembuatan, kondisi, dll. Sedang behaviour
adalah kelakuan dari objek tersebut, seperti mobil dapat melaju, membelok,
membunyikan klakson, dll. Objek menyimpan statenya dalam satu atau lebih variabel,
dan mengimplementasikan behaviournya dengan metode. Dengan penjelasan di atas,
dapat disimpulkan bahwa objek adalah bagian software yang dibentuk dengan variabel-
variabel dan metode-metode yang berhubungan dengan variabel tersebut.

Dengan karakteristik tersebut, kita dapat memodelkan berbagai objek dalam kehidupan
nyata ke dalam objek-objek dalam sebuah program. Lebih lanjut kita dapat memodelkan
objek-objek abstrak ke dalam sebuah program. Contoh umum untuk konsep abstrak
seperti ini adalah objek Event, yaitu objek untuk mewakili peristiwa klik atau tombol
ditekan.

Sebuah objek yang dibentuk dari sebuah kelas biasa disebut instans dalam terminologi
OOP. Artinya objek tersebut adalah wujud nyata dari sebuah kelas. Variabel dan metode
dari instans ini disebut variabel instans dan metode instans. Setiap instans menyimpan
variabelnya sendiri-sendiri, jadi nilai variabel untuk tiap instans bisa berbeda.
Message (Pesan)
Objek-objek yang bekerja sama membentuk suatu sistem harus saling berkomunikasi
untuk menjalankan sistem tersebut. Dalam sebuah program, objek-objek berkomunikasi
satu sama lain dengan mengirimkan pesan. Sebagai contoh, jika sebuah objek ingin
memanggil metode dari objek lain, maka objek ini akan mengirimkan sebuah pesan yang
meminta objek tujuan untuk menjalankan metode yang dikehendaki. Pesan ini akan berisi
informasi-informasi yang dibutuhkan objek tujuan untuk dapat menunaikan permintaan
tadi.

Sebuah pesan dibentuk oleh informasi berikut ini: 1) objek yang dituju; 2) nama metode
yang ingin dipanggil; 3) parameter yang dibutuhkan metode tersebut. Misalnya:

anotherObject.aMethod(parameter1);

Bila sebuah objek ingin memanggil metode miliknya sendiri, maka informasi pertama
adalah dirinya sendiri. Untuk menunjuk diri sendiri dalam Java digunakan kata kunci
this. Maka contoh sebelumnya akan menjadi:

this.aMethod(parameter1);

Atau kita dapat menghilangkan informasi pertama sehingga menjadi:

aMethod(parameter1);

karena bila informasi pertama tidak ada, kompiler akan secara otomatis menunjuk ke
objek itu sendiri.

Ada dua keuntungan dalam penggunaan pesan, yaitu: 1) semua kebutuhan interaksi
antarobjek dapat dilakukan; 2) objek-objek yang saling berinteraksi tidak harus berada
dalam satu proses atau bahkan dalam satu komputer.

Kelas
Kelas adalah semacam cetakan, atau template, untuk membuat objek. Ibaratkan sebuah
rancangan rumah yang digunakan untuk membangun ratusan rumah. Rumah yang
dibangun tersebut adalah objek dari kelas rancangan rumah. Hal ini dapat dilakukan
karena semua objek rumah yang dibangun memiliki karakteristik yang sama, sehingga
dapat dibuatkan semacam blueprintnya. Tetapi objek-objek yang dibangun tetap akan
memiliki bentuk fisik tertentu sendiri-sendiri, seperti variabel dalam sebuah program,
atau pintu sebuah objek rumah. Dengan penjelasan ini, kelas dapat kita definisikan
kembali menjadi sebuah blueprint, atau prototipe, yang mendefinisikan variabel dan
metode yang sama untuk semua objek sejenis.

Sebagai contoh, misalkan kita ingin membuat kelas Rumah, maka kita harus membuat
sebuah kelas yang mendefinisikan semua variabel yang dimiliki objek dari kelas tersebut.
Selain itu, kelas tersebut juga harus mendeklarasikan metode-metode yang dimiliki objek
dari kelas dan juga membuat implementasi dari metode tersebut. Dengan adanya kelas
ini, kita dapat membuat sebanyak apapun objek-objek rumah yang sejenis, yaitu jenis
yang didefinisikan oleh kelas Rumah. Setiap objek Rumah diciptakan, sistem akan
mengalokasikan sejumlah memori untuk objek tersebut dan variabel-variabelnya. Dengan
begitu setiap objek akan memiliki salinan masing-masing untuk setiap variabel instans.

Setelah mengenal konsep kelas, saatnya Anda dikenalkan dengan variabel kelas. Variabel
kelas sebenarnya sama dengan variabel instans. Bedanya adalah, setiap objek berbagi
satu dan hanya satu variabel kelas, tapi masing-masing memiliki salinan dari variabel
instans. Misalkan kelas Rumah yang kita buat hanya akan mendukung 2 lantai, dan setiap
objek Rumah terdiri atas 2 lantai. Maka informasi ini cukup disimpan satu kali, karena
nilainya tidak berbeda untuk semua objek. Lebih jauh, bila ada satu objek yang
mengubah nilai dari variabel kelas, maka semua objek sejenis lainnya akan mengikuti
perubahan itu. Di samping variabel, terdapat juga metode kelas. Metode jenis ini dapat
langsung dipanggil melalui kelas dan bukan dari instans kelas tersebut.

Pewarisan
Terminologi asing untuk pewarisan adalah inheritance. Mungkin dalam literatur lain
Anda akan sering menjumpai istilah ini. Secara gamblang, pewarisan berarti sebuah kelas
mewarisi state dan behaviour dari kelas lain. Sebagai contoh, sebuah kelas RumahMewah
akan mewarisi state dan behaviour dari kelas Rumah. Begitu juga dengan kelas
RumahSederhana. Kelas RumahMewah dan RumahSederhana disebut subkelas, atau kelas
anak, dari kelas Rumah, yang disebut superkelas, atau kelas induk.

Seluruh subkelas akan mewarisi (inherits) state dan behaviour dari superkelasnya.
Dengan begitu, semua subkelas dari superkelas yang sama akan memiliki state dan
behaviour yang sama. Namun, masing-masing subkelas bisa menambah sendiri state atau
behaviournya. Misalkan, pada kelas Rumah tidak terdapat variable kolamRenang, namun
subkelas RumahMewah memiliki variabel tersebut. Contoh lain misalnya kelas Rumah
tidak memiliki metode nyalakanAlarm, namun rumah mewah memiliki metode itu.

Dalam kasus tertentu subkelas mungkin memiliki implementasi behaviour yang berbeda
dengan superkelasnya. Hal seperti ini disebut override. Contohnya subkelas
SepedaBalap memiliki implementasi metode ubahGigi yang berbeda dengan
implementasi metode tersebut pada superkelas Sepeda.

Tingkat pewarisan tidak hanya terbatas pada dua tingkatan. Dari contoh di atas, kita bisa
saja membuat subkelas dari kelas SepedaBalap, dan seterusnya. Kita bisa terus
memperpanjang tingkat pewarisan ini sepanjang yang kita butuhkan. Dengan begitu,
subkelas-subkelas yang dibuat akan lebih khusus dan lebih terspesialisasi. Namun
terdapat batasan pewarisan dalam Java yang disebut single inheritance. Artinya sebuah
kelas hanya dapat mewarisi sifat dari satu dan hanya satu superkelas saja. Dalam
beberapa bahasa pemrograman berorientasi objek lain, yang berlaku adalah multiple
inheritance. Artinya sebuah kelas dapat mewarisi sifat dari beberapa superkelas sekaligus.

Dalam Java, terdapat kelas Object yang merupakan superkelas dari semua kelas dalam
Java, baik yang builtin ataupun yang kita buat sendiri, lansung maupun tidak langsung.
Karena itu sebuah variabel bertipe Object akan dapat menyimpan referensi ke objek
apapun dalam bahasa Java. Kelas Object ini memiliki behaviour yang dibutuhkan semua
objek untuk dapat dijalankan di Java Virtual Machine. Sebagai contoh, semua kelas
mewarisi metode toString dari kelas Object, yang mengembalikan representasi String
dari objek tersebut.

Manfaat penggunaan konsep pewarisan antara lain: pertama, kita dapat menggunakan
kembali kelas-kelas yang kita buat (sebagai superkelas) dan membuat kelas-kelas baru
berdasar superkelas tersebut dengan karakteristik yang lebih khusus dari behaviour umum
yang dimiliki superkelas. Kedua, kita dapat membuat superkelas yang hanya
mendefinisikan behaviour namun tidak memberi implementasi dari metode-metode yang
ada. Hal ini berguna jika kita ingin membuat semacam template kelas. Kelas semacam ini
disebut kelas abstrak, karena behaviournya masih abstrak dan belum diimplementasikan.
Subkelas-subkelas dari kelas semacam ini, yang disebut kelas konkret,
mengimplementasikan behaviour abstrak tersebut sesuai dengan kebutuhan masing-
masing.

Sedikit penjelasan mengenai kelas abstrak, kelas ini bisa memiliki hanya satu atau lebih
metode abstrak. Subkelas dari kelas ini bertanggung jawab untuk memberikan
implementasi untuk metode-metode abstrak tersebut. Sebagai akibat dari keberadaan
metode abstrak ini, kelas abstrak tidak dapat diinstanskan (dibuatkan instansnya) atau
digunakan untuk menciptakan sebuah objek dari kelas tersebut.

Interface
Arti harfiah dari interface adalah antarmuka, yaitu suatu alat untuk digunakan benda-
benda yang tidak terhubung secara langsung untuk berinteraksi. Dalam bahasa
pemrograman, interface digunakan oleh berbagai objek yang tidak terhubung untuk
saling berinteraksi. Jadi dalam bahasa pemrograman, interface dapat didefinisikan
sebagai koleksi definisi metode-metode dan variabel-variabel konstan, namun tanpa
implementasi. Implementasi akan dilakukan oleh kelas-kelas yang mengimplements
interface ini. Tanpa implementasi di sini tidak seperti pada kelas abstrak yang merupakan
metode-metode yang tidak melakukan apa-apa, melainkan hanya sekedar nama metode
saja.

Sebelumnya telah dijelaskan bahwa sebuah kelas tidak dapat menjadi subkelas dari
beberapa superkelas, melainkan hanya bisa menjadi subkelas dari satu superkelas saja.
Hal ini membuat desain program lebih rapi dan teratur, sehingga dapat mengurangi
kompleksitas program. Namun, terkadang hal ini dapat menjadi suatu halangan yang
tidak menyenangkan, yaitu saat kita membutuhkan suatu kelas yang memiliki sifat-sifat
dari dua atau lebih kelas lain. Pada masalah seperti ini, interface dapat memberikan
alternatif jalan keluar.

Dengan adanya interface maka beberapa kelas akan dapat menangani interaksi yang sama
namun dengan behaviour yang bisa berbeda. Misalnya beberapa kelas mengimplementasi
sebuah interface yang sama, maka kelas-kelas tersebut dapat menangani interaksi sesuai
interface tersebut, namun tiap kelas dapat memiliki implementasi yang berbeda-beda.

Begitu juga bila sebuah kelas mengimplementasi banyak interface, maka kelas tersebut
akan dapat menangani interaksi-interaksi sesuai salah satu interface yang diimplement
oleh kelas tersebut. Namun, kelas tersebut harus mengimplementasi sendiri
behaviournya. Di sinilah letak perbedaan penggunaan interface dengan multiple
inheritance. Dalam multiple inheritance, layaknya single inheritance, subkelas tidak harus
mengimplementasikan sendiri behaviournya karena secara default kelas tersebut akan
mengikuti behaviour superkelasnya.

Penutup
Tutorial kali ini memang hanya membahas konsep, jadi wajar bila anda merasa tutorial
kali ini terlalu teoritis. Namun jangan kecewa dulu, karena di tutorial berikutnya kita
akan membahas lebih jauh mengenai kelas dan objek, interface, pewarisan, dan metode
dalam bahasa Java. Sambil menunggu anda punya banyak waktu untuk memahami
konsep yang dibahas di atas.

Anda mungkin juga menyukai