OOP Pada PHP : Pengenalan Inheritance

Inheritance atau turunan merupakan salah satu fitur dari pemrograman OOP dimana satu Class menuruni satu atau banyak class lainnya. Suatu Class yang dituruni biasa disebut Class Anak (child) sedangkan Class yang menuruni biasa disebut Class Induk (parent).

Inheritance akan sangat berguna apabila kita menginginkan kode kita rapih sesuai dengan keterkaitan antara Class. Saya coba contohkan pada kasus toko online. Pada suatu toko menjual baju, topi, celana. Apabila kita membuat Class untuk aplikasi ini dengan masing-masing Class maka mungkin akan seperti ini :

file : baju.class.php

<?php

class Baju {
    
    private $nama;
    private $warna;
    private $ukuran;
    private $tipe;
    
    public function getNama() {
        return $this->nama;
    }

    public function setNama($nama) {
        $this->nama = $nama;
    }

    public function getWarna() {
        return $this->warna;
    }

    public function setWarna($warna) {
        $this->warna = $warna;
    }

    public function getUkuran() {
        return $this->ukuran;
    }

    public function setUkuran($ukuran) {
        $this->ukuran = $ukuran;
    }

    public function getTipe() {
        return $this->tipe;
    }

    public function setTipe($tipe) {
        $this->tipe = $tipe;
    }


}

?>

File : celana.class.php

<?php

class Celana {
    
    private $warna;
    private $ukuran;
    private $tipe;
    private $model;
    private $nama;
    
    public function getWarna() {
        return $this->warna;
    }

    public function setWarna($warna) {
        $this->warna = $warna;
    }

    public function getUkuran() {
        return $this->ukuran;
    }

    public function setUkuran($ukuran) {
        $this->ukuran = $ukuran;
    }

    public function getTipe() {
        return $this->tipe;
    }

    public function setTipe($tipe) {
        $this->tipe = $tipe;
    }

    public function getModel() {
        return $this->model;
    }

    public function setModel($model) {
        $this->model = $model;
    }

    public function getNama() {
        return $this->nama;
    }

    public function setNama($nama) {
        $this->nama = $nama;
    }
}
?>

File : topi.class.php

<?php

class Topi {
    
    private $warna;
    private $ukuran;
    private $model;
    private $nama;
    
    public function getWarna() {
        return $this->warna;
    }

    public function setWarna($warna) {
        $this->warna = $warna;
    }

    public function getUkuran() {
        return $this->ukuran;
    }

    public function setUkuran($ukuran) {
        $this->ukuran = $ukuran;
    }

    public function getModel() {
        return $this->model;
    }

    public function setModel($model) {
        $this->model = $model;
    }

    public function getNama() {
        return $this->nama;
    }

    public function setNama($nama) {
        $this->nama = $nama;
    }
    
}
?>

Mudah ya,,kita hanya buat class dari masing2 produk. Tapi coba deh liat, kira-kira dari ketiga Class tersebut ada tidak property / variable yang sama ?? ada ya…

memang kenapa ??

ya baiknya kita buat simple aja…pada contoh diatas, saya hanya buat 3 produk yaitu baju, celana, dan topi. Coba bayangkan kalu kita disuruh buat aplikasi seperti tokobagus.com. Wew produknya banyak,,,mau buat Class satu2 dengan kriteria yang banyak juga ??

Disinilah fungsi dari mekanisme Inheritance / Penurunan Class. Dengan adanya mekanisme ini, kita dapat membuat Class dengan property / method yang bisa digunakan oleh Class-Class lain sehingga diharapkan kode dari yang kita buat lebih sederhana lagi.

Saya coba implementasikan inheritance ya produk dari yang telah disebutkan diatas. Pertama saya buat class induk / parent terlebih dahulu.

File : produk.class.php

<?php

class Produk {
    
    protected $ukuran;
    protected $warna;
    protected $nama;
    
    public function getUkuran() {
        return $this->ukuran;
    }

    public function setUkuran($ukuran) {
        $this->ukuran = $ukuran;
    }

    public function getWarna() {
        return $this->warna;
    }

    public function setWarna($warna) {
        $this->warna = $warna;
    }

    public function getNama() {
        return $this->nama;
    }

    public function setNama($nama) {
        $this->nama = $nama;
    }

}
?>

Dapat dilihat pada Class Produk terdapat property yang hampir dimiliki oleh setiap item produk seperti nama baju, nama celana, nama topi dan lainnya.

Lalu sekarang kita buat class item produk yaitu Class Baju, Class Celana, Class Topi dengan meng-inheritkan Class Produk.

File : baju.class.php

<?php
include_once("produk.class.php");

class Baju extends Produk {
    
    private $tipe;
    
    public function getTipe() {
        return $this->tipe;
    }

    public function setTipe($tipe) {
        $this->tipe = $tipe;
    }
}

?>

File : celana.class.php

<?php

include_once("produk.class.php");

class Celana extends Produk {
    
    private $tipe;
    private $model;
    
    public function getTipe() {
        return $this->tipe;
    }

    public function setTipe($tipe) {
        $this->tipe = $tipe;
    }

    public function getModel() {
        return $this->model;
    }

    public function setModel($model) {
        $this->model = $model;
    }

}
?>

File : topi.class.php

<?php
include_once("produk.class.php");

class Topi extends Produk {
    
    private $model;
    
    public function getModel() {
        return $this->model;
    }

    public function setModel($model) {
        $this->model = $model;
    }
    
}
?>

Untuk meng-inherit-kan Class kita cukup dengan keyword extends ke Class Induk / parent. Dengan keyword tersebut berarti kita sudah melakukan inheritance Class ke Class induk sehingga kita dapat mengakses baik property ataupun method yang ada pada Class induk / parent.

Berikut saya coba buat kode untuk implementasi Inheritance dari source code yang telah kita buat diatas.

File : tes_toko.php

<?php
    include_once("topi.class.php");
    include_once("baju.class.php");
    include_once("celana.class.php");
    
    define("br", "<br />");
    
    // buat objek Topi
    $obj_topi = new Topi(); // buat objek
    
    // setting property objek
    $obj_topi->setNama("Topi_001");
    $obj_topi->setUkuran(10);
    $obj_topi->setWarna("biru");
    $obj_topi->setModel("bordiran");
    
    // get property objek
    echo "Nama Produk : " . $obj_topi->getNama() . br;
    echo "Ukuran : " . $obj_topi->getUkuran() . br;
    echo "Warna : " . $obj_topi->getWarna() . br;
    echo "Model : " . $obj_topi->getModel() . br;
    
    
    // buat objek baju
    $obj_baju = new Baju();
    
    // setting property baju;
    $obj_baju->setNama("Baju_001");
    $obj_baju->setUkuran(10);
    $obj_baju->setWarna("biru");
    $obj_baju->setTipe("Kemeja");
    
    // get property objek baju
    echo br;
    echo "Nama Produk : " . $obj_baju->getNama() . br;
    echo "Ukuran : " . $obj_baju->getUkuran() . br;
    echo "Warna : " . $obj_baju->getWarna() . br;
    echo "Tipe : " . $obj_baju->getTipe() . br;
    
    
    // buat objek celana
    $obj_celana = new Celana();
    
    // setting property celana
    $obj_celana->setNama("Celana_001");
    $obj_celana->setUkuran(12);
    $obj_celana->setWarna("biru");
    $obj_celana->setModel("Cutbray..");
    $obj_celana->setTipe("Katun");
    
    // get property objek celana
    echo br;
    echo "Nama Produk : " . $obj_celana->getNama() . br;
    echo "Ukuran : " . $obj_celana->getUkuran() . br;
    echo "Warna : " . $obj_celana->getWarna() . br;
    echo "Tipe : " . $obj_celana->getTipe() . br;
    echo "Model : " . $obj_celana->getModel() . br;
?>

Terlihat pada kode diatas, kita dapat mengakses langsung method dari Class Produk untuk setiap item produk. Sehingga dengan konsep seperti ini kita dapat menyederhanakan kode kita.

Lalu apabila kita jalankan akan muncul tampilan seperti pada gambar dibawah ini.

Dari sini, semoga dipahami konsep mekanisme inheritance OOP pada PHP. Permasalahan lain mengenai mekanisme Inheritance akan dijelaskan pada artikel berikutnya.

Moga bermanfaat.

5 thoughts on “OOP Pada PHP : Pengenalan Inheritance

Silahkan Komentar...

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s