Object-Oriented Programming (OOP) menjadi salah satu konsep penting yang perlu dipahami ketika mulai belajar pemrograman. OOP membantu programmer menyusun kode menjadi lebih terstruktur dengan menggunakan class dan object.
Setelah memahami pengertian dasar OOP, langkah berikutnya adalah mengenal 4 pilar OOP, yaitu Encapsulation, Inheritance, Polymorphism, dan Abstraction.
Keempat konsep ini bukan sekadar istilah yang perlu dihafalkan. Masing-masing memiliki fungsi berbeda dalam membantu membuat program yang lebih terorganisir, fleksibel, dan mudah dikembangkan.
Pada artikel ini, kita akan membahas 4 pilar OOP dengan bahasa sederhana dan contoh kode PHP agar lebih mudah dipahami.
Apa Itu 4 Pilar OOP?
4 pilar OOP adalah empat konsep utama yang menjadi dasar dalam pemrograman berorientasi objek.
Keempatnya terdiri dari:
- Encapsulation – membungkus dan melindungi data.
- Inheritance – memungkinkan class mewarisi sifat dan perilaku dari class lain.
- Polymorphism – memungkinkan method yang sama memiliki perilaku berbeda.
- Abstraction – menyembunyikan detail yang tidak perlu dan hanya menampilkan bagian penting.
Jika dianalogikan seperti membangun sebuah rumah, keempat konsep tersebut membantu kita mengatur bagian-bagian rumah agar memiliki fungsi dan tanggung jawab yang jelas.
1. Encapsulation
Encapsulation adalah konsep OOP yang digunakan untuk membungkus data dan method dalam sebuah class sekaligus mengatur bagaimana data tersebut dapat diakses.
Tujuannya adalah agar data tertentu tidak bisa diubah sembarangan dari luar class.
Dalam PHP, encapsulation biasanya menggunakan access modifier:
publicprivateprotected
Contoh Encapsulation
class User
{
private $password;
public function setPassword($password)
{
$this->password = $password;
}
public function getPassword()
{
return $this->password;
}
}
Kita membuat $password sebagai private.
Artinya, property tersebut tidak dapat diakses secara langsung dari luar class.
Untuk mengubah atau mengambil nilainya, kita menggunakan method yang sudah disediakan.
$user = new User();
$user->setPassword("12345");
echo $user->getPassword();
Dengan cara ini, akses terhadap data dapat dikontrol melalui method tertentu.
Contoh dalam kehidupan sehari-hari
Bayangkan kamu menggunakan aplikasi mobile banking.
Kamu bisa melakukan transfer melalui menu yang tersedia, tetapi kamu tidak bisa langsung mengubah saldo rekening melalui database.
Sistem menyediakan cara tertentu untuk melakukan transaksi dan membatasi akses terhadap data penting.
Konsep seperti inilah yang secara sederhana dapat menggambarkan encapsulation.
Manfaat Encapsulation
Encapsulation membantu:
- Melindungi data.
- Mengontrol akses terhadap property.
- Mengurangi perubahan data secara sembarangan.
- Membuat kode lebih terorganisir.
- Mempermudah pengelolaan program.
2. Inheritance
Pilar OOP berikutnya adalah Inheritance atau pewarisan.
Inheritance memungkinkan sebuah class memperoleh property dan method dari class lainnya.
Class yang memberikan pewarisan biasanya disebut parent class, sedangkan class yang menerima pewarisan disebut child class.
Contoh Inheritance
Misalnya kita mempunyai class Hewan.
class Hewan
{
public function makan()
{
echo "Hewan sedang makan";
}
}
Kemudian kita membuat class Kucing yang mewarisi class Hewan.
class Kucing extends Hewan
{
public function mengeong()
{
echo "Meong";
}
}
Sekarang object Kucing dapat menggunakan method dari class Hewan.
$kucing = new Kucing();
$kucing->makan();
$kucing->mengeong();
Walaupun method makan() tidak ditulis kembali di class Kucing, method tersebut tetap dapat digunakan karena diwariskan dari class Hewan.
Kenapa Inheritance Berguna?
Bayangkan kita sedang membuat sistem toko online.
Kita mungkin memiliki beberapa jenis pengguna:
- Admin
- Operator
- Pelanggan
Ketiganya mungkin memiliki beberapa informasi umum seperti:
- Nama
- Username
Daripada menulis kode yang sama berulang kali, kita dapat membuat class dasar User, kemudian membuat class lain yang mewarisinya.
Dengan begitu, struktur program menjadi lebih rapi dan kode yang sama tidak perlu ditulis berulang kali.
Manfaat Inheritance
Inheritance dapat membantu:
- Mengurangi duplikasi kode.
- Menggunakan kembali property dan method.
- Membuat hubungan antar-class lebih jelas.
- Mempermudah pengembangan aplikasi.
3. Polymorphism
Selanjutnya ada Polymorphism.
Kata polymorphism berasal dari istilah yang berarti memiliki banyak bentuk.
Dalam OOP, polymorphism memungkinkan method dengan nama yang sama memiliki implementasi atau perilaku yang berbeda pada object atau class yang berbeda.
Contoh Polymorphism
Kita kembali menggunakan contoh hewan.
class Hewan
{
public function suara()
{
echo "Hewan mengeluarkan suara";
}
}
Kemudian kita membuat dua class turunan:
class Kucing extends Hewan
{
public function suara()
{
echo "Meong";
}
}
class Anjing extends Hewan
{
public function suara()
{
echo "Guk guk";
}
}
Kedua class tersebut memiliki method dengan nama yang sama, yaitu suara().
Namun, perilakunya berbeda.
$kucing = new Kucing();
$anjing = new Anjing();
$kucing->suara();
$anjing->suara();
Hasilnya:
Meong
Guk guk
Inilah contoh sederhana dari polymorphism.
Method yang digunakan memiliki nama yang sama, tetapi hasilnya dapat berbeda tergantung object yang menjalankannya.
Contoh Polymorphism dalam Aplikasi
Konsep ini juga bisa digunakan pada sistem pembayaran.
Misalnya terdapat beberapa metode pembayaran:
- Transfer Bank
- E-Wallet
- Kartu Kredit
Masing-masing dapat mempunyai method:
bayar()
Namun proses pembayarannya dapat berbeda sesuai jenis pembayaran.
Dengan polymorphism, program dapat memiliki struktur yang lebih fleksibel tanpa harus membuat nama method berbeda untuk setiap jenis pembayaran.
4. Abstraction
Pilar terakhir adalah Abstraction.
Abstraction merupakan konsep untuk menyembunyikan detail implementasi yang tidak perlu diketahui oleh pengguna dan hanya menampilkan bagian yang penting.
Contoh paling mudah dapat ditemukan dalam kehidupan sehari-hari.
Saat menggunakan kendaraan, kita cukup mengetahui cara:
- Menyalakan kendaraan.
- Menggunakan rem.
- Mengatur kecepatan.
- Mengarahkan kendaraan.
Kita tidak harus mengetahui secara detail bagaimana setiap komponen mesin bekerja di dalamnya.
Konsep seperti ini dapat digambarkan sebagai abstraction.
Abstraction dalam PHP
PHP menyediakan abstract class untuk menerapkan abstraction.
Contohnya:
abstract class Kendaraan
{
abstract public function bergerak();
}
Kemudian kita membuat class turunan:
class Mobil extends Kendaraan
{
public function bergerak()
{
echo "Mobil berjalan menggunakan roda";
}
}
Kita juga bisa membuat kendaraan lain:
class Pesawat extends Kendaraan
{
public function bergerak()
{
echo "Pesawat bergerak melalui udara";
}
}
Sekarang masing-masing class mempunyai implementasi bergerak() sendiri.
$mobil = new Mobil();
$pesawat = new Pesawat();
$mobil->bergerak();
$pesawat->bergerak();
Hasilnya akan berbeda sesuai jenis object.
Kenapa Abstraction Penting?
Abstraction membantu programmer fokus pada apa yang dilakukan sebuah object, bukan selalu pada detail bagaimana proses tersebut dilakukan.
Hal ini dapat membuat struktur aplikasi menjadi lebih sederhana dan mudah dikembangkan.
Perbedaan 4 Pilar OOP
Agar lebih mudah diingat, berikut gambaran sederhananya:
| Pilar OOP | Fungsi Utama | Gambaran Sederhana |
|---|---|---|
| Encapsulation | Melindungi dan mengatur akses data | Membungkus data |
| Inheritance | Mewariskan property dan method | Parent → Child |
| Polymorphism | Memberikan perilaku berbeda pada method yang sama | Satu nama, banyak bentuk |
| Abstraction | Menyembunyikan detail yang tidak diperlukan | Menampilkan bagian penting |
Keempat konsep tersebut saling melengkapi dalam membangun aplikasi berbasis OOP.
Contoh Sederhana Penerapan 4 Pilar OOP
Agar lebih jelas, kita bisa membayangkan sebuah aplikasi sistem pembayaran.
Misalnya terdapat class dasar:
abstract class Pembayaran
{
private $jumlah;
public function setJumlah($jumlah)
{
$this->jumlah = $jumlah;
}
public function getJumlah()
{
return $this->jumlah;
}
abstract public function bayar();
}
Dalam contoh tersebut terdapat beberapa konsep sekaligus.
Encapsulation
Property:
private $jumlah;
digunakan untuk membatasi akses terhadap data jumlah pembayaran.
Abstraction
Class:
abstract class Pembayaran
menentukan struktur dasar pembayaran.
Method:
abstract public function bayar();
menentukan bahwa class turunan harus memiliki proses pembayaran.
Inheritance
Kita dapat membuat class turunan:
class TransferBank extends Pembayaran
{
public function bayar()
{
echo "Pembayaran melalui transfer bank";
}
}
Class TransferBank mewarisi Pembayaran.
Polymorphism
Kita juga bisa membuat metode pembayaran lainnya:
class EWallet extends Pembayaran
{
public function bayar()
{
echo "Pembayaran melalui e-wallet";
}
}
Method bayar() memiliki nama yang sama tetapi menghasilkan perilaku berbeda.
Dengan satu contoh tersebut, kita dapat melihat bagaimana encapsulation, inheritance, polymorphism, dan abstraction dapat digunakan secara bersamaan.
Apakah 4 Pilar OOP Harus Dihafalkan?
Tidak harus hanya menghafal definisinya.
Yang lebih penting adalah memahami fungsi masing-masing konsep dan kapan konsep tersebut digunakan.
Cara mudah mengingatnya:
Encapsulation → lindungi data
Inheritance → wariskan kode
Polymorphism → satu method, banyak perilaku
Abstraction → sembunyikan detail
Jika sudah memahami pola tersebut, kamu akan lebih mudah membaca kode OOP dalam PHP, Java, Python, JavaScript, maupun bahasa pemrograman lainnya.
Bahasa Pemrograman yang Menggunakan OOP
Konsep OOP digunakan dalam banyak bahasa pemrograman populer, seperti:
- PHP
- Java
- Python
- C++
- C#
- JavaScript
- Kotlin
- Swift
Sintaks masing-masing bahasa memang berbeda, tetapi konsep dasarnya tetap memiliki banyak kesamaan.
Karena itu, mempelajari OOP tidak hanya berguna untuk satu bahasa pemrograman. Pemahaman OOP dapat menjadi dasar ketika kamu ingin mempelajari bahasa lain.
Kesimpulan
4 pilar OOP merupakan konsep penting dalam pemrograman berorientasi objek.
Encapsulation digunakan untuk membungkus dan mengontrol akses terhadap data. Inheritance memungkinkan sebuah class mewarisi property dan method dari class lain. Polymorphism memungkinkan method yang sama memiliki perilaku berbeda. Sementara itu, Abstraction digunakan untuk menyembunyikan detail yang tidak perlu ditampilkan.
Memahami keempat konsep tersebut akan membantu kamu menulis program yang lebih terstruktur dan lebih mudah dikembangkan.
Kalau baru mulai belajar OOP, tidak perlu langsung menguasai semuanya dalam satu hari. Mulailah dari class dan object, kemudian pelajari satu per satu keempat pilarnya menggunakan contoh program sederhana.
Semakin sering mencoba membuat program sendiri, semakin mudah juga memahami bagaimana konsep OOP diterapkan dalam proyek nyata.


