Konsep Dasar OOP (Object-Oriented Programming) dalam PHP


OOP adalah cara menulis program dengan menggunakan objek. Bayangkan Anda membuat aplikasi yang mengelola data pengguna. Daripada menulis kode yang berulang-ulang, OOP memungkinkan Anda membuat blueprint (cetakan) untuk objek yang bisa digunakan berkali-kali.

1. Konsep Utama OOP

Konsep Penjelasan Contoh di Dunia Nyata
Class Cetakan atau blueprint untuk membuat objek "Blueprint rumah"
Object Hasil dari class, yang memiliki data dan fungsi "Rumah yang dibangun dari blueprint"
Encapsulation Menyembunyikan detail data dan hanya memberikan akses melalui metode tertentu "Kulkas hanya bisa dibuka dengan pintunya, tidak bisa langsung mengambil isinya dari belakang"
Inheritance Pewarisan sifat dari satu class ke class lain "Anak mewarisi sifat orang tua"
Polymorphism Kemampuan satu fungsi memiliki bentuk berbeda di class turunan "Tombol power di TV dan laptop sama-sama untuk menyalakan, tetapi cara kerjanya berbeda"


2. Implementasi dalam PHP

Mari kita buat contoh sederhana OOP di PHP:

(a) Membuat Class dan Object

<?php
// Blueprint (Class)
class Mobil {
    public $merk;
    public $warna;

    public function __construct($merk, $warna) {
        $this->merk = $merk;
        $this->warna = $warna;
    }

    public function info() {
        return "Mobil {$this->merk} berwarna {$this->warna}.";
    }
}

// Membuat object dari class Mobil
$mobil1 = new Mobil("Toyota", "Merah");
echo $mobil1->info(); // Output: Mobil Toyota berwarna Merah.
?>


🛠 Penjelasan:

  • Class Mobil adalah blueprint.
  • $merk dan $warna adalah properti (data).
  • Method info() adalah fungsi dalam class.
  • Keyword $this digunakan untuk mengakses properti dari class.
  • Object new Mobil("Toyota", "Merah") dibuat dari blueprint Mobil.


(b) Konsep Encapsulation (Menyembunyikan Data)

<?php
class BankAccount {
    private $saldo = 0;

    public function deposit($jumlah) {
        $this->saldo += $jumlah;
        return "Saldo bertambah menjadi Rp{$this->saldo}";
    }

    public function getSaldo() {
        return "Saldo Anda: Rp{$this->saldo}";
    }
}

$akun = new BankAccount();
echo $akun->deposit(100000); // Saldo bertambah menjadi Rp100000
echo $akun->getSaldo(); // Saldo Anda: Rp100000
?>


🛠 Penjelasan:

  • private $saldo → Tidak bisa diakses langsung dari luar.
  • deposit() dan getSaldo() → Digunakan untuk mengontrol akses saldo.

Jika mencoba echo $akun->saldo;, akan error karena saldo bersifat private.

(c) Konsep Inheritance (Pewarisan)

<?php
// Parent class
class Kendaraan {
    public $merk;
    public function __construct($merk) {
        $this->merk = $merk;
    }

    public function jalan() {
        return "{$this->merk} sedang berjalan!";
    }
}

// Child class (Mewarisi class Kendaraan)
class Motor extends Kendaraan {
    public $roda = 2;

    public function info() {
        return "{$this->merk} memiliki {$this->roda} roda.";
    }
}

$motor = new Motor("Honda");
echo $motor->jalan(); // Honda sedang berjalan!
echo $motor->info();  // Honda memiliki 2 roda.
?>


🛠 Penjelasan:

  • Motor mewarisi (extends) Kendaraan.
  • Motor bisa menggunakan method jalan() dari Kendaraan.

(d) Konsep Polymorphism (Satu Fungsi, Berbeda Perilaku)

<?php
class Hewan {
    public function suara() {
        return "Hewan bersuara...";
    }
}

class Kucing extends Hewan {
    public function suara() {
        return "Meong!";
    }
}

class Anjing extends Hewan {
    public function suara() {
        return "Guk guk!";
    }
}

$kucing = new Kucing();
$anjing = new Anjing();

echo $kucing->suara(); // Meong!
echo $anjing->suara(); // Guk guk!
?>


🛠 Penjelasan:

  • Kucing dan Anjing punya method suara() dengan perilaku berbeda.
  • PHP akan menggunakan method dari class yang lebih spesifik.


Kesimpulan

OOP membuat kode lebih terstruktur, mudah dibaca, dan bisa digunakan ulang.
Encapsulation menyembunyikan detail internal.
Inheritance memungkinkan class untuk mewarisi sifat.
Polymorphism memungkinkan satu fungsi bekerja berbeda.

🚀 Dengan OOP, aplikasi menjadi lebih mudah dikelola dan dikembangkan. 🚀

Posting Komentar

Lebih baru Lebih lama