Tutorial konsep Pemrograman Berorientasi Objek (OOPs) PHP dengan Contoh
Apa itu OOP?
Berorientasi Objek adalah pendekatan pengembangan perangkat lunak yang memodelkan aplikasi di sekitar objek dunia nyata seperti karyawan, mobil, rekening bank, dll. Sebuah kelas mendefinisikan properti dan metode objek dunia nyata. Objek adalah kejadian suatu kelas.
Tiga komponen dasar orientasi objek adalah;
- Analisis berorientasi objek – fungsionalitas sistem
- Perancangan berorientasi objek – arsitektur sistem
- Pemrograman berorientasi objek – implementasi aplikasi
Prinsip Pemrograman Berorientasi Objek
Tiga prinsip utama OOP adalah;
- Enkapsulasi – ini berkaitan dengan penyembunyian detail implementasi dan hanya memperlihatkan 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, ini membuat kelas fleksibel dan mudah dipelihara.
- Implementasi internal kelas dapat diubah tanpa khawatir melanggar kode yang menggunakan kelas tersebut.
- Warisan – ini berkaitan dengan hubungan antar kelas. Hubungan tersebut berbentuk orang tua dan anak. Anak menggunakan metode yang ditentukan di kelas induk. Tujuan utama dari pewarisan adalah;
- Dapat digunakan kembali – sejumlah anak, dapat mewarisi dari orang tua yang sama. Ini sangat berguna ketika kita harus menyediakan fungsionalitas umum seperti menambah, memperbarui dan menghapus data dari database.
- Polimorfisme – ini berkaitan dengan memiliki satu bentuk tetapi banyak cara implementasi yang berbeda. Tujuan utama dari polimorfisme adalah;
- Menyederhanakan pemeliharaan aplikasi dan menjadikannya lebih dapat diperluas.
Ups Concepts di PHP
PHP adalah bahasa skrip berorientasi objek; ini mendukung semua prinsip di atas. Prinsip-prinsip di atas dicapai melalui;
- Enkapsulasi – melalui penggunaan metode “dapatkan” dan “set” dll.
- Warisan – melalui penggunaan kata kunci extends
- Polimorfisme – melalui penggunaan kata kunci implementasi
Sekarang kita memiliki pengetahuan dasar tentang OOP dan bagaimana hal itu didukung PHP, mari kita lihat contoh penerapan prinsip di atas
Apa itu UML?
Unified Modeling Language UML adalah teknik yang digunakan untuk merancang dan mendokumentasikan sistem berorientasi objek.
UML menghasilkan sejumlah dokumen, tapi kita akan melihat diagram kelas yang sangat penting untuk pemrograman php berorientasi objek.
Contoh Diagram Kelas
Kunci Diagram Kelas
- kotak atas berisi nama kelas
- kotak tengah berisi variabel kelas
- kotak bawah berisi metode kelas
- dikurangi (-) tanda berarti ruang lingkup pribadi
- ditambah (+) tanda berarti ruang lingkup publik
- 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
Katakanlah kita ingin membuat kelas untuk merepresentasikan hewan.
Kita akan mulai dengan mengidentifikasi ciri-ciri umum yang dimiliki semua hewan.
- Semua hewan milik keluarga seperti herbivora, karnaval, dll.
- Semua hewan memakan makanan
Diagram di bawah menunjukkan diagram hewan
Sekarang mari kita membuat kode pada kelas hewan 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 tidak dapat diakses langsung di luar kelas (Enkapsulasi).
- “fungsi publik __construct($family…)” adalah metode konstruktor php. Fungsi ini dipanggil setiap kali instance kelas dibuat. Dalam hal ini, kitalah yang mengatur keluarga dan makanan.
- “fungsi publik dapatkan…()” adalah metode yang digunakan untuk mengakses nilai keluarga atau makanan (Enkapsulasi)
- “kumpulan fungsi publik…()” adalah metode yang digunakan untuk mengatur nilai keluarga atau makanan (Enkapsulasi)
Bagaimana mengimplementasikan Warisan 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 hewan dan juga mendefinisikan variabel dan metodenya sendiri.
Sekarang mari kita membuat kode pada 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 membuat kode kelas Lion
<?php class Lion extends Animal { public function __construct($family, $food) { parent::__construct($family, $food); } } ?>
SINI,
- “class… extends Animal” membuat sapi dan singa menggunakan metode dari kelas Animal (Inheritance).
Cara Membuat objek kelas
Kelas Hewan, Sapi, dan Singa semuanya harus berada di direktori yang sama demi kesederhanaan.
Sekarang mari kita buat aplikasi yang menggunakan kelas kita.
Contoh Kelas PHP
<?php require 'Animal.php'; require 'Cow.php'; require 'Lion.php'; $cow = new Cow('Herbivore', 'Grass'); $lion = new Lion('Canirval', '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 browser web
Fantastis kan! Sekarang mari kita lihat prinsip ketiga OOP, polimorfisme.
Katakanlah kita ingin mengembangkan aplikasi yang terhubung ke mesin database yang berbeda seperti MySQL dan SQL Server tetapi menggunakan antarmuka seragam yang sama.
Kita dapat membuat antarmuka yang mendefinisikan metode standar dan kelas abstrak yang mengimplementasikan metode umum.
- Antarmuka – mirip dengan kelas. Itu hanya mendefinisikan metode dan parameter.
- Kelas abstrak – 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 mengilustrasikan hubungan antara kelas abstrak, antarmuka, dan kelas implementasi.
Sekarang mari kita buat kelas abstrak kita
<?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,
- “kelas abstrak” berarti kelas tidak dapat digunakan langsung ke objek pembuatan php
- “$host,$db…” adalah variabel kelas yang umum untuk semua implementasi
- “function __construct(…)” adalah metode konstruktor kelas php yang menetapkan nilai variabel umum pada inisialisasi
Sekarang mari kita buat antarmuka yang berisi metode standar yang akan diimplementasikan secara berbeda tergantung pada mesin database.
<?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 konkrit yang akan memperluas kelas DBCommonMethods dan memperluas antarmuka DBInterface. MySQLSopir.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 } } ?>
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,
- “class… extends DBCommonMethods” gunakan metode di DBCommonMethods
- “… mengimplementasikan DBInterface” memastikan bahwa kelas menyediakan metode standar terlepas dari driver database yang digunakan.
Penggunaan kode di atas Kode yang menggunakan kelas di atas akan terlihat seperti ini
<?php $db = new MySQLDriver($host,$db,$uid,$password); ?>
Or
<?php $db = new MSSQLServerDriver ($host,$db,$uid,$password); ?>
Kode selanjutnya akan sama untuk kedua driver seperti;
<?php $db->db_connect(); $db->insert($data); ?>
Kesimpulan
- Pemrograman Berorientasi Objek OOP adalah teknik canggih yang memodelkan aplikasi setelah objek dunia nyata
- Kelas adalah representasi objek dunia nyata dengan properti dan metode
- Tiga prinsip dasar OOP adalah;
- Enkapsulasi
- Warisan
- Polimorfisme