Object Oriented Programming PHP (OOP PHP)



Program PHP Tanpa Paradigma OOP

Sebelum masuk ke pembahasan pemrograman berorientasi objek, mari kita lihat potongan kode berikut:
<?php

function hitungLuas($p, $l){
    return $p * $l;
}

function hitungKeliling($p, $l){
    return (2 * $p) + (2 * $l);
}

$panjang = 10;
$lebar = 5;
printf("Luas: %s\n", hitungLuas($panjang, $lebar));
printf("Keliling: %s\n", hitungKeliling($panjang, $lebar));
Potongan kode di atas bila kita jalankan akan muncul seperti berikut:
$ php operasi-persegi.php
Luas: 50 
Keliling: 30
Bagi kamu yang terbiasa menulis kode PHP secara native tanpa menggunakan OOP pasti sudah biasa menulis seperti di atas kan? kita buat berbagai function secara generik agar bisa digunakan berulang kali untuk operasi tertentu. Lalu kita pun menulis sebuah variabel untuk menyimpan sebuah nilai. Lalu lakukan operasi dengan function yang ada, dan dapatlah hasilnya.
Apa yang terjadi bila kamu ingin membuat fungsi untuk menghitung luas dan keliling lingkaran? Tentu kedua fungsi di atas tidak dapat digunakan untuk menghitung bangun lingkaran karena rumus yang digunakan berbeda. Ada beberapa solusi yang bisa kamu lakukan diantaranya:
  1. Kamu akan perlu membuat fungsi baru misalnya dengan nama hitungLuasLingkaran() dan hitungKelilingLingkaran(). Dan sepertinya kamu bakal perlu mengganti juga nama kedua fungsi yang sudah ada di atas agar lebih spesifik menjadi hitungLuasPersegi() dan hitungKelilingPersegi(). Selain itu kamu juga harus menyiapkan variabel baru seperti $radius atau $diameter untuk perhitungan lingkaran agar kodemu lebih mudah dipahami.
  2. Kamu dapat menggunakan fungsi yang sudah ada yaitu hitungLuas() dan hitungKeliling() dan menambahkan rumus untuk bangun datar lain seperti lingkaran, segitiga, dan sebagainya. Kamu juga akan perlu menambahkan parameter $bangunDatar untuk memilah rumus mana yang akan digunakan. Namun cara ini sangat beresiko karena ketika kamu perlu menghitung jenis bangun datar lain, kamu akan menambahkan kode untuk rumus baru di dalamnya sehingga fungsinya akan semakin gemuk dan kompleks. Selain itu kode lama yang sudah berjalan dengan baik malah menjadi error.

Program PHP dengan Paradigma OOP

Sekarang bandingkan dengan kode berbasis OOP berikut:
<?php

class Persegi {

    private $panjang;
    private $lebar;

    function __construct($panjang, $lebar) 
    {
        $this->panjang = $panjang;
        $this->lebar = $lebar;
    }

    function hitungLuas()
    {
        return $this->panjang * $this->lebar;
    }

    function hitungKeliling()
    {
        return (2 * $this->panjang) + (2 * $this->lebar);
    }
}

$persegi = new Persegi(5, 10);
printf("Luas: %s\n", $persegi->hitungLuas());
printf("Keliling: %s\n", $persegi->hitungKeliling());
Pada kode di atas, kita membuat sebuah class dengan nama Persegi. Tidak seperti teknik prosedural, pada OOP kita mengemas operasi perhitungan luas dan keliling persegi di dalam class. Sekilas kamu akan lihat baris kode yang dibuat lebih banyak dari yang contoh kode pertama. Tapi struktur penulisan kode berbasis class seperti ini akan lebih mudah dirawat, terutama bila program yang dibuat sudah semakin kompleks.
Misalnya, terkait isu di awal pembahasan, bila kita hendak menambahkan kode untuk menghitung luas dan keliling lingkaran, maka solusinya adalah kita tinggal membuat class baru untuk operasi perhitungan lingkaran, seperti ini:
<?php

class Lingkaran {

    private $radius;

    function __construct($radius) 
    {
        $this->radius = $radius;
    }

    function hitungLuas()
    {
        return 22 / 7 * 2 * $this->radius;
    }

    function hitungKeliling()
    {
        return 22 / 7 * $this->radius * $this->radius;
    }
}

$lingkaran = new Lingkaran(5);
printf("Luas: %s\n", $lingkaran->hitungLuas());
printf("Keliling: %s\n", $lingkaran->hitungKeliling());
Dengan membuat class baru, class lama yakni Persegi tidak akan terganggu oleh kode yang baru. Selain itu kode dari setiap class tetap ramping dan mudah dibaca. Kita juga dapat menggunakan nama fungsi yang generik seperti hitungLuas() dan hitungKeliling() karena konteksnya sudah terkait langsung dengan class yang sedang digunakan.



Selanjutnya bisa di klik dibawah ini


Pendahuluan OOP
Click saja di button ini untuk selanjutnya OOP dan Keunggulannya

Beberapa Istilah OOP di PHP
Class dan Object di PHP
Membuat Class
Instansiasi Objek
...
...
...
...
...
Menggali OOP PHP Lebih Dalam
...
...
...
...
Fungsi fungsi Terkait Class
...
...
...
...
...
...
Design Pattern
...
...
...
....
....
....
Akses Database Berbasis Objek
...
...
PHP Exception
...
...
...
....
Class Reflection
...
...
...
....
Unit Testing
...
...
...
....
....

Post a Comment

0 Comments