3.5. Memahami konsep pewarisan 4.5 Mengolah hubungan antara class dengan pola pewarisan

 


Inheritance (Pewarisan)


 Pengertian dasar inheritance Inheritance (Pewarisan) merupakan salah satu dari tiga konsep dasar OOP. Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek dapat mempunyai entitas/obyek turunan. Dengan konsep inheritance, sebuah class dapat mempunyai class turunan. Suatu class yang mempunyai class turunan dinamakan parent class atau base class. Sedangkan class turunan itu sendiri seringkali disebut subclass atau child class. Dalam dunia riil, suatu entitas turunan dapat mewarisi apa-apa yang dipunyai dari entitas induknya. Misalkan saja antara entitas Bapak dan entitas Anak. Entitas anak dapat mewarisi apa-apa yang dipunyai oleh entitas Bapaknya. Demikian juga dalam konsep inheritance, suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent class. Inilah yang terpenting dari konsep inheritance. Karena suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent class-nya, maka member dari suatu subclass adalah terdiri dari apa-apa yang ia punyai dan juga apa-apa yang ia warisi dari class parent-nya. Kesimpulannya, boleh dikatakan bahwa suatu subclass adalah tidak lain hanya memperluas (extend) parent class-nya. 

Berikut adalah contoh deklarasi inheritance :
 – > class B adalah subclass dari class A public class B extends A { … } Semua class di dalam Java adalah merupakan subclass dari class super induk yang bernama Object. Misalnya saja kita mempunyai sebuah class sederhana : public class A{ …. } Pada saat dikompilasi, Kompiler Java akan membacanya sebagai subclass dari class Object. public class A extends Object{ …. } 


Cara Penggunaan Inheritance dalam PHP

Di dalam PHP, inheritance atau penurunan sebuah class kepada class lain menggunakan keyword extends, dengan penulisan dasar sebagai berikut:

1
2
3
4
5
6
7
8
9
class induk {
   //...isi class induk
}
 
class anak extends induk
{
   //... class anak bisa mengakses
   //... property dan method class induk
}

Agar lebih mudah dipahami, kita akan langsung masuk ke dalam contoh program penggunaan inheritance PHP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?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 kode ini terdapat class komputer dengan beberapa property dan sebuah method. Semua property milik class komputer masih belum berisi nilai apa-apa.

Di bawah class komputer, saya membuat class laptop extends class komputer. Disini terjadi penurunan class komputer kepada class laptop. Hasilnya, di dalam class laptop kita bisa mengakses seluruh property dan method apapun milik class komputer selama memiliki hak akses public atau protected.

Untuk membuktikan hal tersebut, saya membuat objek $laptop_baru dari class laptop. Perhatikan bahwa kita bisa mengakses property $merk, $processor, dan$memory yang semuanya adalah milik class komputer, bukan class laptop.

Method beli_komputer() juga sukses diakses dari objek $laptop 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 diturunkan:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?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 kode program saya membuat class komputer yang diturunkan kepada class laptop. Class laptop ini kemudian diturunkan lagi kepada class chromebook. Dari dalam class chromebook ini di panggil method-model milik class diatasnya.

Jika anda perhatikan, setiap method selain method beli_semua(), juga menggunakan 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_komputer(). Kode ini sengaja diberi tanda komentar karena PHP akan mengeluarkan error karena kita tidak bisa mengakses method dengan hak akses protected:

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

Inilah salah satu penerapan enkapsulasi dalam OOP PHP. Yakni membatasi method yang tidak boleh diakses akan membuat kode program menjadi lebih terstruktur.




Komentar

Postingan populer dari blog ini

3.7 Menerapkan penggunaan package dalam aplikasi 4.7 Menyajikan aplikasi melalui pengelompokan class dalam pakage

3.13.Menerapkan operasi file dan Input Output(IO) 4.13.Menyajikan operasi file dan operasi Input Output