Object-Oriented Programming (OOP) adalah paradigma desain yang dibangun pada empat prinsip inti: abstraksi, enkapsulasi, pewarisan, dan polimorfisme. Ini memungkinkan pengembang untuk memodelkan entitas dunia nyata sebagai objek dan mendefinisikan metode yang mengoperasinya. Tujuannya adalah untuk menciptakan kode yang dapat digunakan kembali, modular, yang mencerminkan struktur domain masalah.
Konsep Utama OOP dalam Java dengan Contoh Praktis
Berikut adalah konsep dasar yang harus dikuasai oleh setiap pengembang Java:
1) Kelas
Kelas adalah cetak biru untuk objek. Ini mendefinisikan atribut (data) dan perilaku (metode). Misalnya, kelas Car mungkin memiliki properti seperti make, model, dan speed, dan metode seperti drive(), brake(), atau reverse(). Objek yang diinstansiasi dari kelas ini—Mercedes, BMW, Toyota—mewarisi atribut dan perilaku ini.
2) Objek
Objek adalah instance konkret dari kelas, yang memiliki lokasi memori sendiri, menyimpan nilai bidang yang didefinisikan oleh kelasnya. Saat Anda memanggil metode pada objek, Anda meminta instance spesifik itu untuk melakukan tindakan.
3) Pewarisan
Pewarisan memungkinkan subclass untuk mewarisi bidang dan metode dari superclass, membentuk hubungan induk-anak. Ini mempromosikan penggunaan ulang kode dan hierarki logis. Misalnya, kelas Sedan dapat mewarisi dari Car dan menambahkan fitur khusus.
4) Polimorfisme
Polimorfisme memungkinkan satu antarmuka untuk mewakili bentuk-bentuk yang berbeda (subclass). Pengganti dan penguatan metode adalah implementasi umum di Java. Misalnya, antarmuka Vehicle dapat diimplementasikan oleh baik Car maupun Truck, masing-masing memberikan logika move() sendiri.
5) Abstraksi
Abstraksi menyembunyikan detail implementasi yang kompleks di balik antarmuka yang sederhana. Dalam mobil, pengguna berinteraksi dengan pir dan gas pedal, bukan mekanika mesin. Java mencapai abstraksi melalui kelas abstrak dan antarmuka.
6) Enkapsulasi
Enkapsulasi menggabungkan data dan metode dalam sebuah kelas dan membatasi akses langsung ke keadaan internal. Biasanya bidang ditandai private, diakses melalui getter/setter public. Ini melindungi integritas data dan mendukung desain modular.
7) Asosiasi
Asosiasi menggambarkan hubungan di mana dua objek sadar satu sama lain tetapi mempertahankan siklus hidup independen. Misalnya, seorang Student dapat dikaitkan dengan beberapa objek Teacher, dan sebaliknya.
8) Agregasi
Agregasi adalah bentuk asosiasi khusus yang menunjukkan hubungan “memiliki” di mana objek yang terkandung dapat ada secara independen. Sebuah Department dapat berisi objek Teacher yang tetap ada bahkan jika departemen dihapus.
9) Komposisi
Komposisi adalah hubungan “memiliki” yang kuat di mana siklus hidup objek yang terkandung terikat pada induknya. Jika objek House dihancurkan, semua objek Room secara otomatis dihapus.
Keuntungan OOP dalam Java
Struktur yang jelas dan modular yang selaras dengan konsep dunia nyata.
Penggunaan ulang kelas di seluruh banyak proyek, mengurangi waktu pengembangan.
Kemampuan pemeliharaan yang ditingkatkan untuk basis kode besar melalui enkapsulasi dan abstraksi.
Kolaborasi yang ditingkatkan di antara pengembang berkat antarmuka dan kontrak yang didefinisikan dengan baik.
Membandingkan OOP dengan Paradigma Pemrograman Lainnya: Contoh Perbankan
Mari kita ilustrasikan bagaimana pendekatan OOP Java berbeda dari pemrograman tidak terstruktur dan terstruktur saat membangun aplikasi perbankan sederhana yang mencakup operasi deposit, withdraw, dan showBalance.
Pemrograman Tidak Terstruktur
Bahasa awal mengikuti alur linier, mengulang kode untuk setiap operasi: