Pemrograman berorientasi objek (PBO) adalah paradigma pemrograman yang berfokus pada objek sebagai dasar pengembangan sebuah aplikasi. PBO memungkinkan pengembang untuk merancang program dengan memisahkan fungsionalitas ke dalam objek-objek yang berinteraksi satu sama lain. Ada empat pilar utama dalam pemrograman berorientasi objek, yaitu enkapsulasi, pewarisan, polimorfisme, dan abstraksi. Mari kita bahas lebih lanjut tentang masing-masing pilar dan bagaimana mereka dapat diterapkan dalam sebuah program.
- Enkapsulasi
Enkapsulasi mengacu pada konsep menyembunyikan detail implementasi dari suatu objek dan hanya menampilkan fungsionalitas publik kepada pengguna. Ini dilakukan dengan membuat atribut dan metode objek sebagai private atau protected, sehingga hanya dapat diakses oleh objek itu sendiri atau oleh objek lain yang ditentukan.
Contoh program menggunakan enkapsulasi:
class Mobil {
private int kecepatan;
private int gigi;
public void ubahKecepatan(int k) {
kecepatan = k;
}
public void ubahGigi(int g) {
gigi = g;
}
public int bacaKecepatan() {
return kecepatan;
}
public int bacaGigi() {
return gigi;
}
}
public class Program {
public static void main(String[] args) {
Mobil mobil = new Mobil();
mobil.ubahKecepatan(50);
mobil.ubahGigi(2);
System.out.println("Kecepatan: " + mobil.bacaKecepatan());
System.out.println("Gigi: " + mobil.bacaGigi());
}
}
2. Pewarisan
Pewarisan mengacu pada konsep membuat objek baru yang mewarisi sifat dan perilaku dari objek yang sudah ada. Objek baru ini disebut kelas anak atau subkelas, sedangkan objek yang sudah ada disebut kelas induk atau superkelas.
Contoh program menggunakan pewarisan:
class Hewan {
public void makan() {
System.out.println("Hewan sedang makan");
}
}
class Kucing extends Hewan {
public void meong() {
System.out.println("Kucing sedang meong");
}
}
public class Program {
public static void main(String[] args) {
Kucing kucing = new Kucing();
kucing.makan();
kucing.meong();
}
}
3. Polimorfisme
Polimorfisme mengacu pada konsep memungkinkan objek dengan jenis yang berbeda untuk merespons terhadap pesan yang sama dengan cara yang berbeda. Dalam PBO, ini sering dicapai melalui penggunaan overloading dan overriding.
Contoh program menggunakan polimorfisme:
class Bentuk {
public void gambar() {
System.out.println("Menggambar bentuk");
}
}
class Lingkaran extends Bentuk {
public void gambar() {
System.out.println("Menggambar lingkaran");
}
}
class Segitiga extends Bentuk {
public void gambar() {
System.out.println("Menggambar segitiga");
}
}
public class Program {
public static void main(String[] args) {
Bentuk bentuk1 = new Lingkaran();
Bentuk bentuk2 = new Segitiga();
bentuk1.gambar();
bentuk2.gambar();
}
}
4. Abstraksi
Abstraksi mengacu pada konsep membuat kelas abstrak yang tidak dapat diinstansiasi dan hanya berisi metode yang tidak terdefinisi atau terimplementasi. Kelas abstrak ini kemudian diwarisi oleh kelas-kelas turunannya, yang harus mengimplementasikan metode-metode tersebut.
Contoh program menggunakan abstraksi:
abstract class BangunDatar {
abstract double hitungLuas();
abstract double hitungKeliling();
}
class Lingkaran extends BangunDatar {
private double jariJari;
Lingkaran(double r) {
jariJari = r;
}
double hitungLuas() {
return Math.PI * jariJari * jariJari;
}
double hitungKeliling() {
return 2 * Math.PI * jariJari;
}
}
public class Program {
public static void main(String[] args) {
Lingkaran lingkaran = new Lingkaran(5);
System.out.println("Luas lingkaran: " + lingkaran.hitungLuas());
System.out.println("Keliling lingkaran: " + lingkaran.hitungKeliling());
}
}
Dalam contoh-contoh program di atas, Anda dapat melihat bagaimana setiap pilar digunakan untuk merancang program yang lebih efektif. Pewarisan digunakan dalam program pertama untuk menghindari duplikasi kode dan meningkatkan fleksibilitas program. Polimorfisme digunakan untuk memungkinkan objek dengan tipe yang berbeda untuk diproses secara seragam dalam program kedua. Encapsulation digunakan untuk membatasi akses ke variabel dan metode dalam kelas, sehingga meningkatkan keamanan dan keandalan program. Abstraksi digunakan untuk memisahkan antara konsep yang mendasar dan implementasi detail dari kelas.
Dalam kesimpulannya, pemrograman berorientasi objek adalah paradigma pemrograman yang sangat populer dan umum digunakan dalam pengembangan perangkat lunak. Konsep-konsep dasar dalam pemrograman berorientasi objek meliputi pewarisan, polimorfisme, enkapsulasi, dan abstraksi, yang dapat digunakan untuk merancang program yang lebih efektif, mudah dipelihara, dan aman. Oleh karena itu, penting bagi para pengembang perangkat lunak untuk memahami dan menguasai prinsip-prinsip dasar dalam pemrograman berorientasi objek untuk meningkatkan kemampuan mereka dalam mengembangkan aplikasi yang efektif dan aman.