OOP PHP Konsep Polymorphism ( Interface )





Pada pembahasan sebelumnya kita sudah mengenal tentang konsep inheritance dalam OOP di PHP, maka pada pembahasan kali ini kita akan membahas konsep polymorphism di OOP.

Polymorphism adalah konsep fundamental dimana class-class mempunyai fungsi yang berbeda akan tetapi berbagi interface yang sama.

Sebagai contoh kita analogikan komputer pc, komputer laptop mempunyai cara kerja yang berbeda tapi fungsi dari kedua komputer itu pada dasarnya sama. Misalkan komputer pc bisa megetik, komputer laptop juga bisa mengetik tetapi dengan cara yang berbeda, namun masing - masing fungsinya sama.

Dalam polymorphism ada dua cara yang sangat umum di gunakan yaitu : Interface dan Abstract Class

Interface


Interface memiliki konsep sama dengan Class yakni tidak ada kode-kode didalamnya. Dan hanya boleh ada Method dan Argument  dan lagi tidak boleh ada kode didalam method-method tersebut.

Contoh interface :

<?php
interface Interface_a{
   // isi dari interface / method
}
?>


Contoh interface dengan method :


<?php

interface Interface_a{

    function a(){

    }

    function b(){
     
    }
}

?>

Interface bisa digunakan di dalam class , untuk penulisannya menggunakan keyword implements

class a implements Interface_a {...}

Dalam satu class implements bisa beberapa interface

class a implements Interface_a,Interface_b{.....}

Perlu diingat jika suatu class ingin menggunakan Interface maka semua method yang ada di interface harus terdapat di dalam Class tersebut. Berikut contoh penggunaan sederhananya :

<?php

interface Komputer{
    public function mengetik();
    public function mendengarkan_musik();
}
class Pc implements Komputer{

    public function mengetik(){

        return "mengetik dengan keyboard terpisah";
    }
    public function mendengarkan_musik(){

        return "mendengarkan musik dengan speaker terpisah";
    }

}
class Laptop implements Komputer{

   public function mengetik(){

        return "mengetik dengan keyboard laptop";
    }
    public function mendengarkan_musik(){

        return "mendengarkan musik dengan speaker internal";
    }

}
//buat Object
$obj = new Laptop();
echo $obj->mengetik();
echo $obj->mendengarkan_musik();

?> 

Pada script diatas bisa dilihat setiap class yang  ada harus memiliki setiap method yang dimiliki interface jika tidak maka akan error.

Sekarang kita coba contoh yang agak sedikit rumit :

<?php

interface Komputer{
    public function mengetik();
    public function mendengarkan_musik();
    public function pemilik();
}
class Pc implements Komputer{

    protected $pemilik = false;

    public function __construct($identify=null){

        if($identify){

            $this->pemilik = $identify;
        }
    }

    public function mengetik(){

        return "mengetik dengan keyboard terpisah";
    }
    public function mendengarkan_musik(){

        return "mendengarkan musik dengan speaker terpisah";

    }

    public function pemilik(){

        return $this->pemilik;
    }

}
class Laptop implements Komputer{

   protected $pemilik = false;

    public function __construct($identify=null){

        if($identify){

            $this->pemilik = $identify;
        }
    }

    public function mengetik(){

        return "mengetik dengan keyboard laptop";
    }
    public function mendengarkan_musik(){

        return "mendengarkan musik dengan speaker internal";
    }


    public function pemilik(){

        return $this->pemilik;
    }

}

class Pemilik_komputer{

    private $obj;

    public function __construct(Komputer $obj){

        $this->obj = $obj;
    }
    public function ambil_komputer(){

        if(!$this->obj->isMember()){

            return "Maaf bukan punya anda";
        }

        return "silahkan diambil laptopnya ? ";
    }

}
//buat Object
$obj = new Laptop(false);//misal false=bukan pemilik,coba ganti ke true
$obj_pemilik = new Pemilik_komputer($obj);
echo $obj_pemilik->ambil_komputer();

?>

Pada contoh diatas ada sebuah class baru yang berinteraksi dengan dua class sebelumnya.

Bagaimana mudahkan untuk memahami konsep Polimorphism ini, pada kesempatan ini kita hanya membahas interface pada pembahasan selanjutnya kita akan coba membahas konsep polymorphism dengan abstract class. Selamat mencoba, semoga bermanfaat.


Refrensi : http://teknosains.com/i/contoh-polymorphism-interface-dan-abstract-class-di-php

Postingan terkait:

1 Tanggapan untuk "OOP PHP Konsep Polymorphism ( Interface )"