Konsep Pemrograman Berorientasi Objek (OOP) PHP dengan Contoh
⚡ Ringkasan Cerdas
Pemrograman Berorientasi Objek (OOP) di PHP memodelkan aplikasi di sekitar objek dunia nyata menggunakan kelas dan objek. Panduan ini menjelaskan prinsip-prinsip OOP yaitu enkapsulasi, pewarisan, dan polimorfisme, bagaimana PHP mendukungnya, dan membangun contoh kelas, pewarisan, dan antarmuka yang berfungsi langkah demi langkah.

Apa itu OOP?
Pemrograman berorientasi objek adalah pendekatan pengembangan perangkat lunak yang memodelkan aplikasi berdasarkan objek dunia nyata seperti karyawan, mobil, dan rekening bank. Sebuah kelas mendefinisikan properti dan metode dari objek dunia nyata. Sebuah objek adalah contoh dari sebuah kelas.
Tiga komponen dasar dari orientasi objek adalah:
- Analisis berorientasi objek – fungsionalitas sistem
- Desain berorientasi objek – arsitektur sistem
- Pemrograman berorientasi objek – implementasi aplikasi
Prinsip Pemrograman Berorientasi Objek
Tiga prinsip utama OOP adalah:
- Enkapsulasi – ini berkaitan dengan menyembunyikan detail implementasi dan hanya mengekspos metode-metodenya. Tujuan utama enkapsulasi adalah untuk:
- Mengurangi kompleksitas pengembangan perangkat lunak – dengan menyembunyikan detail implementasi dan hanya memaparkan operasinya, penggunaan kelas menjadi mudah.
- Melindungi keadaan internal suatu objek – akses ke variabel kelas dilakukan melalui metode seperti get dan set. Hal ini membuat kelas menjadi fleksibel dan mudah dipelihara.
- Izinkan perubahan pada implementasi internal kelas tanpa perlu khawatir akan merusak kode yang menggunakan kelas tersebut.
- Warisan – ini berkaitan dengan hubungan antar kelas. Hubungan tersebut berbentuk induk dan anak. Anak menggunakan metode yang didefinisikan dalam kelas induk. Tujuan utama pewarisan adalah:
- Kemampuan penggunaan kembali – sejumlah turunan dapat mewarisi dari induk yang sama. Ini sangat berguna ketika kita harus menyediakan fungsionalitas umum seperti menambahkan, memperbarui, dan menghapus data dari basis data.
- Polimorfisme – ini berkaitan dengan memiliki satu antarmuka dengan banyak implementasi yang berbeda. Tujuan utama polimorfisme adalah:
- Untuk menyederhanakan pemeliharaan aplikasi dan membuatnya lebih mudah diperluas.
Ups Concepts di PHP
PHP adalah bahasa skrip berorientasi objek; bahasa ini mendukung semua prinsip di atas. Prinsip-prinsip di atas dicapai melalui:
- Enkapsulasi – melalui penggunaan metode “get” dan “set”, serta pengubah akses.
- Warisan – melalui penggunaan kata kunci extends
- Polimorfisme – melalui penggunaan kata kunci implements
Sekarang kita memiliki pengetahuan dasar tentang OOP dan bagaimana hal itu didukung PHPMari kita lihat contoh-contoh yang menerapkan prinsip-prinsip di atas.
Apa itu UML?
Unified Modeling Language (UML) adalah teknik yang digunakan untuk mendesain dan mendokumentasikan sistem berorientasi objek.
UML menghasilkan sejumlah dokumen, tetapi kita akan melihat diagram kelas, yang sangat penting untuk pemrograman PHP berorientasi objek.
Contoh Diagram Kelas
Kunci Diagram Kelas
- The kotak atas berisi nama kelas
- The kotak tengah berisi variabel kelas
- The kotak bawah berisi metode kelas
- The dikurangi (-) tanda berarti lingkup pribadi
- The ditambah (+) tanda berarti ruang lingkup publik
- The tanda pagar (#) tanda berarti ruang lingkup yang dilindungi
Cara Membuat kelas di PHP
Kata kunci class digunakan untuk mendefinisikan kelas di PHP. Di bawah ini adalah aturan untuk membuat kelas di PHP.
- Nama kelas harus dimulai dengan huruf
- Nama kelas tidak boleh berupa kata khusus PHP
- Nama kelas tidak boleh mengandung spasi
Misalkan kita ingin membuat kelas untuk merepresentasikan hewan. Kita akan mulai dengan mengidentifikasi ciri-ciri yang umum dimiliki oleh semua hewan.
- Semua hewan termasuk dalam suatu famili, seperti herbivora, karnivora, dan lain sebagainya.
- Semua hewan memakan makanan
Diagram di bawah ini menunjukkan diagram kelas untuk hewan tersebut.
Sekarang mari kita buat kode untuk kelas Animal kita.
<?php class Animal { private $family; private $food; public function __construct($family, $food) { $this->family = $family; $this->food = $food; } public function get_family() { return $this->family; } public function set_family($family) { $this->family = $family; } public function get_food() { return $this->food; } public function set_food($food) { $this->food = $food; } } ?>
SINI,
- “private $family, $food” berarti variabel-variabel tersebut tidak dapat diakses secara langsung di luar kelas (enkapsulasi).
- “public function __construct($family…)” adalah metode konstruktor PHP. Fungsi ini dipanggil setiap kali sebuah instance dari kelas tersebut dibuat. Dalam hal ini, kita mengatur keluarga dan makanan.
- “public function get…()” adalah metode yang digunakan untuk mengakses nilai famili atau nilai pangan (enkapsulasi).
- “public function set…()” adalah metode yang digunakan untuk mengatur nilai keluarga atau nilai pangan (enkapsulasi).
Cara Menerapkan Pewarisan di PHP
Kami akan bekerja dengan sapi dan singa. Baik sapi maupun singa mewarisi kelas Hewan.
Diagram kelas di bawah ini menunjukkan hubungan tersebut.
Perhatikan bahwa sapi mewarisi dari kelas Animal dan juga mendefinisikan variabel dan metodenya sendiri.
Sekarang mari kita buat kode untuk kelas Cow.
<?php class Cow extends Animal { private $owner; public function __construct($family, $food) { parent::__construct($family, $food); } public function set_owner($owner) { $this->owner = $owner; } public function get_owner() { return $this->owner; } } ?>
Sekarang mari kita buat kode untuk kelas Lion.
<?php class Lion extends Animal { public function __construct($family, $food) { parent::__construct($family, $food); } } ?>
SINI,
- “class … extends Animal” membuat kelas Cow dan Lion menggunakan metode dari kelas Animal (pewarisan).
Cara membuat objek dari kelas tersebut
Kelas Hewan, Sapi, dan Singa semuanya harus berada di direktori yang sama demi kesederhanaan.
Sekarang mari kita buat aplikasi yang menggunakan kelas-kelas kita.
Contoh Kelas PHP
<?php require 'Animal.php'; require 'Cow.php'; require 'Lion.php'; $cow = new Cow('Herbivore', 'Grass'); $lion = new Lion('Carnivore', 'Meat'); echo '<b>Cow Object</b> <br>'; echo 'The Cow belongs to the ' . $cow->get_family() . ' family and eats ' . $cow->get_food() . '<br><br>'; echo '<b>Lion Object</b> <br>'; echo 'The Lion belongs to the ' . $lion->get_family() . ' family and eats ' . $lion->get_food(); ?>
Menguji aplikasi kami
Sekarang mari kita lihat aplikasi kita di peramban web.
Kedua objek tersebut menggunakan kembali metode get_family dan get_food yang diwarisi dari kelas Animal, yang menunjukkan bagaimana pewarisan bekerja.
Cara Menerapkan Polimorfisme di PHP
Misalkan kita ingin mengembangkan aplikasi yang terhubung ke berbagai mesin basis data seperti... MySQL ke SQL Server tetapi menggunakan antarmuka seragam yang sama. Kita dapat membuat antarmuka yang mendefinisikan metode standar dan absolut.tracKelas t yang mengimplementasikan metode-metode umum.
- Antarmuka – mirip dengan kelas. Itu hanya mendefinisikan metode dan parameter.
- Abstrackelas t – ini adalah kelas yang tidak dapat digunakan untuk membuat objek secara langsung. Tujuannya adalah untuk menyediakan implementasi sebagian atau seluruh metode umum.
Diagram kelas di bawah ini menggambarkan hubungan antara abs kita.trackelas t, antarmuka, dan kelas implementasi.
Sekarang mari kita buat otot perut kita.trackelas t.
<?php abstract class DBCommonMethods { private $host; private $db; private $uid; private $password; public function __construct($host, $db, $uid, $password) { $this->host = $host; $this->db = $db; $this->uid = $uid; $this->password = $password; } } ?>
SINI,
- “abstrac"kelas t" berarti kelas tersebut tidak dapat digunakan secara langsung untuk membuat objek.
- “$host, $db…” adalah variabel kelas yang umum untuk semua implementasi.
- “function __construct(…)” adalah metode konstruktor kelas yang menetapkan nilai variabel umum pada saat inisialisasi.
Sekarang mari kita buat antarmuka yang berisi metode standar, yang akan diimplementasikan secara berbeda tergantung pada mesin basis data yang digunakan.
<?php
interface DBInterface
{
public function db_connect();
public function insert($data);
public function read($where);
public function update($where);
public function delete($where);
}
?>
SINI,
- "antarmuka" adalah kata kunci untuk membuat antarmuka
- “Fungsi publik…(…)” adalah metode standar yang harus diterapkan
Sekarang mari kita buat kelas-kelas konkret yang akan memperluas kelas DBCommonMethods dan mengimplementasikan antarmuka DBInterface. Pertama, MySQLDriver.php:
<?php class MySQLDriver extends DBCommonMethods implements DBInterface { public function __construct($host, $db, $uid, $password) { parent::__construct($host, $db, $uid, $password); } public function db_connect() { /* connect code goes here */ } public function delete($where) { /* delete code goes here */ } public function insert($data) { /* insert code goes here */ } public function read($where) { /* read code goes here */ } public function update($where) { /* update code goes here */ } } ?>
Kemudian, MSSQLServerDriver.php:
<?php class MSSQLServerDriver extends DBCommonMethods implements DBInterface { public function __construct($host, $db, $uid, $password) { parent::__construct($host, $db, $uid, $password); } public function db_connect() { /* connect code goes here */ } public function delete($where) { /* delete code goes here */ } public function insert($data) { /* insert code goes here */ } public function read($where) { /* read code goes here */ } public function update($where) { /* update code goes here */ } } ?>
SINI,
- “kelas … extends DBCommonMethods” menggunakan metode-metode dalam DBCommonMethods
- “… mengimplementasikan DBInterface” memastikan bahwa kelas tersebut menyediakan metode standar terlepas dari driver basis data yang digunakan.
Kode yang menggunakan kelas-kelas di atas akan terlihat seperti ini:
<?php $db = new MySQLDriver($host, $db, $uid, $password); ?>
Atau:
<?php $db = new MSSQLServerDriver($host, $db, $uid, $password); ?>
Bagian kode lainnya akan sama untuk kedua driver, seperti:
<?php $db->db_connect(); $db->insert($data); ?>
Inilah polimorfisme yang sedang beraksi: panggilan metode yang sama berfungsi pada driver apa pun yang mengimplementasikan antarmuka tersebut, sehingga kode di sekitarnya tidak pernah berubah saat Anda mengganti mesin basis data.





