Tuesday, December 9, 2014

Tutorial PHP OOP Part 25 : Memahami konsep Polymorphism

Polymorphism adalah fitur dari PHP OOP yang berarti pedoman untuk berubah bentuk, sebagaimana asal katanya yaitu poly yang berarti banyak, morph yang berarti bentuk dan isme yang berarti aliran atau pedoman. Barangkali fitur ini mirip dengan perilaku berubah warna kulit pada bunglon. Atau bisa juga mirip dengan perubahan wujud dari robot transformer.

Polymorphism dalam pemrograman PHP berorientasi object

Dalam PHP OOP, fitur ini dipakai untuk menggambarkan perilaku sebuah properti atau method yang bisa berubah-ubah tergantung dari bagaimana dipanggilnya, lalu siapa dan dimana yang memanggilnya. Konsep polymorphism tampak pada penggunaan abstract class dan interface, yaitu bagaimana sebuah kerangka di-implementasikan oleh class-class yang berbeda.

Polymorphism dengan Implementasi Interface

Contoh konsep polymorphism dapat digambarkan melalui sebuah Interface Hewan yang diimplementasi oleh class Burung, kambing dan Ayam. Pada Interface ditaruh beberapa perilaku seperti makan, bergerak dan beranak.

Pada class Burung, bergerak dengan berjalan atau terbang, sedang pada Kambing dan Ayam bergerak dengan berjalan saja. Semikian juga dengan perilaku makan, misalnya Burung makan biji-bijian, Ayam makan bekatul dan kambing makan Rumput.

Dalam hal ini terlihat bahwa method Makan bisa berubah bentuk tergantung dari siapa yang mengimplementasinya. Demikian juga kita bisa menerapkan hal yang sama bagi method-method yang lain yang merupakan perilaku dari masing-masing object hasil instantisasi dari class nama-nama hewan tadi.

Berikut ini contoh polymorphism pada Interface :

 <?php    
 Interface Hewan {  
      public function Makan();  
      public function Bergerak();  
      public function Beranak();  
 }  
   
 class Burung Implements Hewan {  
      public function Makan() {  
           return "Burung makan biji-bijian<br/>";  
      }  
             
      public function Bergerak() {  
           return "Burung bergerak dengan berjalan, terbang dan melompat<br/>";  
      }  
        
      public function Beranak() {  
           return "Burung beranak dengan bertelur<br/>";  
      }  
 }  
   
 class Kambing Implements Hewan {  
      public function Makan() {  
           return "Kambing makan rumput<br/>";  
      }  
             
      public function Bergerak() {  
           return "Kambing bergerak dengan berjalan dan berlari<br/>";  
      }  
        
      public function Beranak() {  
           return "Kambing beranak dengan melahirkan<br/>";  
      }  
 }  
   
 $burung = new Burung;  
 $kambing = new Kambing;  
   
 echo "<b>Perilaku Burung : </b><br/>";  
 echo $burung->Makan();  
 echo $burung->Bergerak();  
 echo $burung->Beranak();  
   
 echo "<br/>";  
 echo "<b>Perilaku Kambing : </b><br/>";  
 echo $kambing->Makan();  
 echo $kambing->Bergerak();  
 echo $kambing->Beranak();  
 ?>    
Jika program diatas dijalankan akan tampil :
Perilaku Burung : 
Burung makan biji-bijian
Burung bergerak dengan berjalan, terbang dan melompat
Burung beranak dengan bertelur

Perilaku Kambing : 
Kambing makan rumput
Kambing bergerak dengan berjalan dan berlari
Kambing beranak dengan melahirkan

Dengan polymorphisn maka beberapa object yang sama dapat diimplementasikan melalui method yang baku dan terstruktur sehingga mempermudah saat proses pemrograman.

Polymorphism dengan class abstract

Selain melalui interface, konsep polymorphism juga bisa dilihat pada penerapan class abstract. Namun tentunya penerapan polymorphism disini tidak seluas dan sefleksibel ketika menggunakan Interface. Untuk lebih jelas bisa dilihat pada tulisan tentang Interface dan Class Abstrak.

Berikut ini contoh polymorphism pada Hewan tadi jika dibuat dengan class abstrak :

 <?php    
 abstract class Hewan {  
      abstract public function Makan();  
      abstract public function Bergerak();  
      abstract public function Beranak();  
 }  
   
 class Burung extends Hewan {  
      public function Makan() {  
           return "Burung makan biji-bijian<br/>";  
      }  
             
      public function Bergerak() {  
           return "Burung bergerak dengan berjalan, terbang dan melompat<br/>";  
      }  
        
      public function Beranak() {  
           return "Burung beranak dengan bertelur<br/>";  
      }  
 }  
   
 class Kambing extends Hewan {  
      public function Makan() {  
           return "Kambing makan rumput<br/>";  
      }  
             
      public function Bergerak() {  
           return "Kambing bergerak dengan berjalan dan berlari<br/>";  
      }  
        
      public function Beranak() {  
           return "Kambing beranak dengan melahirkan<br/>";  
      }  
 }  
   
 $burung = new Burung;  
 $kambing = new Kambing;  
   
 echo "<b>Perilaku Burung : </b><br/>";  
 echo $burung->Makan();  
 echo $burung->Bergerak();  
 echo $burung->Beranak();  
   
 echo "<br/>";  
 echo "<b>Perilaku Kambing : </b><br/>";  
 echo $kambing->Makan();  
 echo $kambing->Bergerak();  
 echo $kambing->Beranak();  
 ?>    
Referensi :

0 komentar

Post a Comment