Blogroll

Monday, October 22, 2012

Interface dan Abstract Class di PHP

INTERFACE
Interface adalah spesifikasi awal dari sebuah class. Interface berisi kumpulan metode yang belum didefinisikan (dan tidak boleh didefinisikan) dan atribut konstant yang diperlukan sebagai spesifikasi dasar dari beberapa kelas. Interface di PHP bisa diturunkan dari interface lain namun tidak boleh diturunkan dari kelas. Kelas yang mengimplementasikan interface harus mendifinisikan semua method yang dideklarasikan di interface.Sebuah kelas bisa mengimplementasikan sebuah interface atau banyak interface. contoh :

 <?php  
      interface IPhone {  
           function TelponOut();  
           function TelponIn();  
      }  
      interface IHandPhone extends IPhone {  
           function KirimSMS();  
           function TerimaSMS();  
      }  
      class Nokia implements IHandphone {  
           function TelponOut() {  
                echo "Sedang Menelepon Menggunakan Nokia <br/>";  
           }  
           function TelponIn() {  
                echo "Sedang Menerima Telepon Menggunakan Nokia <br/>";  
           }  
           function KirimSMS() {  
                echo "Sedang Kirim SMS Menggunakan Nokia <br/>";  
           }  
           function TerimaSMS() {  
                echo "Sedang Menerima SMS Menggunakan Nokia <br/>";  
           }  
      }  
      class Samsung implements IHandphone {  
           function TelponOut() {  
                echo "Sedang Menelepon Menggunakan Samsung <br/>";  
           }  
           function TelponIn() {  
                echo "Sedang Menerima Telepon Menggunakan Samsung <br/>";  
           }  
           function KirimSMS() {  
                echo "Sedang Kirim SMS Menggunakan Samsung <br/>";  
           }  
           function TerimaSMS() {  
                echo "Sedang Menerima SMS Menggunakan Samsung <br/>";  
           }  
      }  
      $n7650 = new Nokia();  
      $n7650->KirimSMS();  
      $galaxy = new Samsung();  
      $galaxy->KirimSMS();  
 ?>  
Seperti yang bisa kita lihat, interface sangat membantu jika ada beberapa class yang ingin mengimplementasikan sebuah method dangen cara yang berbeda-beda untuk tiap class nya. Misalnya method KirimSMS() antara class Nokia dan class Samsung diimplementasikan secara berbeda.

ABSTRACT CLASS
Kelas Abstract tidak bisa dibuat objek nya secara langsung. Namun untuk menggunakan class abstract harus membuat class turunannya. Method yang ada di dalam class abstract harus didefinisikan semua di class turunanannya. contoh :
 <?php   
      abstract class Phone {  
           abstract function TelponOut();  
           abstract function TelponIn();  
      }  
      abstract class HandPhone extends Phone {  
           abstract function KirimSMS();  
           abstract function TerimaSMS();  
      }  
      class LG extends Handphone {  
           function TelponOut() {  
                echo "Sedang Menelepon Menggunakan LG <br/>";  
           }  
           function TelponIn() {  
                echo "Sedang Menerima Telepon Menggunakan LG <br/>";  
           }  
           function KirimSMS() {  
                echo "Sedang Kirim SMS Menggunakan LG <br/>";  
           }  
           function TerimaSMS() {  
                echo "Sedang Menerima SMS Menggunakan LG <br/>";  
           }  
      }  
      $optimus = new LG();  
      $optimus->KirimSMS();  
 ?>  

ABSTRACT CLASS ATAU INTERFACE ????
Dapat dilihat antara abstract class dan interface banyak memiliki persamaan. Pertanyaannya, kapan kita menggunakan Abstract class dan Interface ???
Berikut beberapa faktor yang bisa menjadi pertimbangan pemakaian Abstract Class atau Interface
1. Jika class-class yang akan dibuat salin berhubungan satu sama lain, maka disarankan untuk menggunakan Abstract Class, jika tidak berhubungan maka gunakan Interface.
2.Jika sebuah class cenderung diwariskan dari banyak sumber atau spesifikasi, maka gunakan Interface, karena mendukung multiple implements.
3. Jika class yang memiliki fungsional yang sebagian besar sama gunakan Abstract Class.

0 komentar:

Post a Comment