Pengertian Inheritance (Pewarisan) dalam OOP

♠ Posted by Unknown in at 06.21

Pengertian Inheritance (Pewarisan) dalam OOP



      Inheritance atau Pewarisan/Penurunan adalah konsep pemrograman dimana sebuah class dapat ‘menurunkanproperty dan method yang dimilikinya kepada class lain. Konsep inheritance digunakan untuk memanfaatkan fitur ‘code reuse’ untuk menghindari duplikasi kode program.
Konsep inheritance membuat sebuah struktur atau ‘hierarchyclass dalam kode program. Class yang akan ‘diturunkan’ bisa disebut sebagai class induk (parent class), super class, atau base class. Sedangkan class yang ‘menerima penurunan’ bisa disebut sebagai class anak (child class), sub class, derived class atauheir class.

       Tidak semua property dan method dari class induk akan diturunkan. Property dan method dengan hak akses private, tidak akan diturunkan kepada class anak. Hanya property dan method dengan hak akses protected dan public saja yang bisa diakses dari class anak.

Cara Penggunaan Inheritance dalam PHP

Di dalam PHP, inheritance / penurunan dari sebuah class kepada class lain menggunakan kata kunci: ‘extends’, dengan penulisan dasar sebagai berikut:

class induk {
   //...isi class induk
}

class anak extends induk
{
   //... class anak bisa mengakses 
   //... property dan method class induk
}
  
contoh program penggunaan inheritance/penurunan di dalam PHP :

<?php
// buat class induk: Tablet
class tablet {
 
   public $merk;
   public $camera;
   public $memory;
 
   public function beli_tablet() {
     return "Beli tablet baru";
   }
}
 
// turunkan class tablet ke handphone
class handphone extends tablet {
 
   public function lihat_spec() {
     return "merk: $this->merk, camera: $this->camera, 
     memory: $this->memory";
   }
}
 
// buat objek dari class handphone (instansiasi)
$handphone_baru = new handphone();
 
// isi property objek
$handphone_baru->merk = "Apple";
$handphone_baru->camera ="5 Pixel";
$handphone_baru->memory = "2 GB";
 
//panggil method objek
echo $handphone_baru->beli_tablet();
echo "<br />";
echo $handphone_baru->lihat_spec();
?>
 
      Dalam contoh kode diatas, ada class tablet dengan beberapa property dan sebuah method. Property class tablet belum berisi nilai apa-apa. Dibawah class tablet, saya membuat class handphone extends class tablet. Disini saya menurunkan class tablet kedalam class handphone. Di dalam class handphone, kita bisa mengakses seluruh property dan method apapun dari class tablet selama memiliki hak akses public atau protected. Untuk membuktikan hal tersebut, saya membuat objek $handphone_baru dari class handphone. Perhatikan bahwa kita bisa mengakses property $merk, $camera, dan $memory yang semuanya adalah milik class tablet, bukan class handphone. Method beli_tablet() juga sukses diakses dari objek $handphone_baru. Inilah yang dimaksud dengan inheritance/penurunan class dalam OOP.

PHP tidak membatasi berapa banyak ‘penurunan objek’ yang bisa dilakukan, dalam contoh berikut, saya membuat 3 buah class yang saling ‘menurunkan’:

<?php
// buat class tablet
class tablet {
   protected function beli_tablet() {
     return "Beli tablet baru";
   }
}
 
// turunkan class tablet ke iphone
class iphone extends tablet {
   protected function beli_iphone() {
     return "Beli iphone baru";
   }
}
 
// turunkan class iphone ke handphone
class handphone extends iphone {
   protected function beli_handphone() {
     return "Beli handphone baru";
   }
 
   public function beli_semua(){
     $a = $this->beli_tablet();
     $b = $this->beli_iphone();    
     $c = $this->beli_handphone();
     return "$a <br /> $b <br /> $c";
   }
}
 
// buat objek dari class iphone (instansiasi)
$gadget_baru = new handphone();
 
//panggil method objek
echo $gadget_baru->beli_semua();
 
// $gadget_baru->beli_tablet();
// Fatal error: Call to protected method komputer::beli_tablet()
?>


Dalam contoh diatas, dibuat class tablet yang diturunkan kepada class iphone, dan kemudian diturunkan lagi kepada class handphone. Dari dalam class handphone ini kemudian saya memanggil method dari class diatasnya. Jika anda perhatikan, setiap method selain method beli_semua(), memiliki hak akses protected. Hak akses protected ini ‘menghalangi’ kode program lain untuk mengaksesnya, selain class turunan. Pada baris terakhir, saya menyisipkan kode program untuk mencoba mengakses method beli_tablet() . Kode ini sengaja diberi tanda komentar. Jika anda menghapus tanda komentar, PHP akan mengeluarkan error yang menyatakan kita tidak bisa mengakses method dengan hak akses protected:

<?
$gadget_baru->beli_tablet();
// Fatal error: Call to protected method komputer::beli_tablet()
?> 
 
 Inilah yang dimaksud dengan enkapsulasi dalam OOP. Membatasi method yang tidak boleh diakses akan membuat kode program menjadi lebih terstruktur.


Sumber : http://www.duniailkom.com

0 komentar:

Posting Komentar