Belajar Pemrograman OOP PHP Part 8 - Belajar Membuat Inheritance Pada Pemrograman Dasar PHP - CRUDPRO

Belajar Pemrograman OOP PHP Part 8 - Belajar Membuat Inheritance Pada Pemrograman Dasar PHP

Belajar Pemrograman OOP PHP Part 8 -  Belajar Membuat Inheritance Pada Pemrograman Dasar PHP

Sesudah mempelajari Pengertian Constructor dan Destructor dalam OOP PHP, kali ini kita akan membahas Pengertian Inheritance atau Pewarisan dalam Pemrograman Objek, dan melihat contoh pemakainnya.

Pengertian Inheritance (Pewarisan) dalam OOP

Inheritance ialah ide OOP di mana sebuah class bisa menurunkan properti dan metode yang dimilikinya ke class lain. Ide inheritance digunakan untuk manfaatkan feature kode reuse, yaitu menghindar terjadi duplikasi code program.

Dengan bahasa Indonesia, inheritance ini disebutkan sebagai pewarisan atau penurunan.

Ide inheritance membuat suatu struktur atau hierarchy class dalam code program. Class yang hendak di turunkan dapat dikatakan sebagai class induk (parent class), super class, atau base class.

Dan class yang terima penurunan dapat dikatakan sebagai class anak (child class), sub class, derived class atau heir class.

Tidak seluruhnya properti dan metode class induk akan di turunkan. Properti dan metode dengan hak akses privat tidak di turunkan ke class anak. Cuman properti dan metode dengan hak akses protected dan public saja yang dapat dijangkau dari class anak.

Langkah Pemakaian Inheritance dalam PHP

Dalam PHP, inheritance atau penurunan sebuah class ke class lain memakai kata kunci extends, dengan penulisan dasar seperti berikut:

class induk {
   //...isi class induk
}
 
class anak extends induk
{
   //... class anak bisa mengakses 
   //... property dan method class induk
}

Supaya lebih mudah dimengerti, kita akan langsung masuk ke dalam contoh program penggunaan inheritance PHP:

<?php
// buat class induk: komputer
class komputer {
  
   public $merk;
   public $processor;
   public $memory;
  
   public function beli_komputer() {
     return "Beli komputer baru";
   }
}
  
// turunkan class komputer ke laptop
class laptop extends komputer {
  
   public function lihat_spec() {
     return "merk: $this->merk, processor: $this->processor, 
     memory: $this->memory";
   }
}
  
// buat objek dari class laptop (instansiasi)
$laptop_baru = new laptop();
  
// isi property objek
$laptop_baru->merk = "acer";
$laptop_baru->processor ="intel core i5";
$laptop_baru->memory = "2 GB";
  
//panggil method objek
echo $laptop_baru->beli_komputer();
echo "<br />";
echo $laptop_baru->lihat_spec();
?>

Dalam contoh code ini ada class computer dengan beberapa properti dan sebuah metode. Semua properti punya class computer masih belum berisi nilai apapun.

Di bawah class computer, saya membuat class laptop extends class computer. Di sini terjadi penurunan class computer ke class laptop. Hasilnya, dalam class laptop kita dapat terhubung semua properti dan metode apa saja punya class computer selama mempunyai hak akses public atau protected.

Untuk menunjukkan hal itu, saya membuat object $laptop_baru dari class laptop. Lihat jika kita dapat terhubung properti $merk, $processor, dan$memory yang semua ialah punya class computer, bukan class laptop.

Metode beli_komputer() sukses diakses dari object $laptop baru. Berikut yang diartikan dengan inheritance/penurunan class dalam OOP.

PHP tidak membatasi seberapa banyak penurunan object yang dapat dikerjakan. Dalam contoh berikut saya membuat 3 buah class yang sama-sama di turunkan:

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

Di awal code program saya membuat class computer yang di turunkan ke class laptop. Class laptop ini selanjutnya di turunkan kembali ke class chromebook. Dari dalam class chromebook ini di panggil metode-model milik class diatasnya.

Bila anda lihat, tiap metode selainnya metode beli_semua(), memakai hak akses protected. Hak akses protected ini menghalangi code program lain untuk mengaksesnya, selainnya class turunan.

Pada baris paling akhir saya menyisipkan code program untuk coba mengakses metode beli_komputer(). Code ini sengaja diberi pertanda komentar karena PHP akan mengeluarkan error karena kita tidak dapat mengakses metode dengan hak akses protected:

<?
$gadget_baru->beli_komputer();
// Fatal error: Call to protected method komputer::beli_komputer()
?>

Inilah salah satu penerapan enkapsulasi dalam OOP PHP. Yaitu membatasi metode yang tidak boleh diakses akan membuat code program menjadi lebih terstruktur.


Dalam panduan belajar OOP PHP ini kali, kita sudah pelajari ide inheritance atau pewarisan dalam pemrograman object.

Penurunan class mempunyai permasalahan tertentu saat ada properti atau metode bernama yang serupa di parent class dan child class. Tentang ini akan kita ulas dalam panduan belajar OOP PHP selanjutnya: Cara Mengakses Properti dan Metode Parent Class.