Pada panduan belajar OOP PHP kali ini kita akan membahas mengenai pengertian abstract class dan abstract method dalam pemrograman objek, serta cara perancangan abstract class dan abstract method dengan PHP.
Pengertian Abstract Class dan Abstract Method
Abstract Class yaitu sebuah class yang tak dapat di-instansiasi (tak dapat dibangun menjadi objek) dan berperan selaku ‘kerangka basic’ untuk class turunannya. Di pada abstract class umumnya akan mempunyai abstract method.
Abstract Method yaitu sebuah ‘method basic’ yang mesti diimplementasikan ulang di pada class anak (child class). Abstract method ditulis tanpa isi dari method, melainkan hanya ‘signature’-nya saja. Signature dari sebuah method yaitu bagian method yang terdiri dari nama method dan parameternya (seandainya ada).
Abstract class digunakan di pada inheritance (pewarisan class) bagi ‘memaksakan’ implementasi method yang sama untuk seluruh class yang diturunkan dari abstract class. Abstract class digunakan bagi membangun struktur logika penurunan di pada pemrograman objek.
Konsep abstract class dan abstract method akan lebih gampang dimengerti dengan menggunakan contoh.
Misalkan kita ingin membangun class yang terdiri dari beragam jenis komputer seperti class laptop, class PC, class netbook, dan lain-lain. Seluruh class ini pastinya mempunyai sifat-sifat komputer, seperti mempunyai spesifikasi, mempunyai processor, dan membutuhkan listrik. Pada implementasinya, kita dapat membangun seluruh class ini diturunkan dari class komputer.
Agar lebih seragam, kita ingin seluruh class yang diturunkan dari class komputer, mempunyai method yang ‘pasti’ ada pada setiap class anak. Setiap komputer pastinya mempunyai spesifikasi, sehingga kita ingin setiap class yang diturunkan dari class komputer mempunyai method lihat_spec().
Bagaimana caranya ‘memaksa’ setiap class agar mempunyai method lihat_spec()? Bagi keperluan ini, kita dapat membangun class komputer selaku abstract class, dan method lihat_spec() selaku abstract method.
Lebih lanjut, abstract method tak hanya membangun setiap class mempunyai method lihat_spec(), tetapi memaksa setiap method mengimplementasikan method lihat_spec() dengan isi method di serahkan kepada masing-masing class. Pastinya spesifikasi class laptop akan berbeda dengan spesifikasi class PC.
Abstract class mempunyai aturan yang membedakannya dengan class lazim. Kita akan membahas aturan-aturan tersebut dengan menggunakan contoh program PHP.
Cara Membangun Abstract Class
Karena kita ingin membangun class komputer selaku abstract class, karenanya berikut yaitu cara penulisannya di pada PHP:
1 |
<?php<br/>abstract class komputer {<br/> // isi dari class komputer<br/>}<br/>?> |
Bagi membangun abstract class di pada PHP, kita tinggal menambahkan keyword abstract sebelum nama class. Sebuah abstract class dapat mempunyai property dan method lazim layaknya sebuah class ‘normal’, namun pun dapat mempunyai abstract method.
Cara Membangun Abstract Method
Kalau sebuah method dinyatakan selaku abstract method, karenanya kita tak perlu membangun isi methodnya, tetapi hanya signature dari method tersebut. Signature terdiri dai nama method dan parameternya (seandainya ada) seperti contoh berikut:
1 |
abstract public function lihat_spec();<br/>abstract public function lihat_spec($merk); |
Kenapa kita tak perlu membangun isi dari method? Ini karena seandainya sebuah method dinyatakan selaku abstract method, isi dari method tersebut akan dibangun pada class turunan. Abstract method mesti berada di pada abstract class.
Selaku contoh, berikut yaitu cara penulisan abstract method lihat_spec() di pada abstract class komputer:
1 |
<?php<br/>abstract class komputer {<br/> abstract public function lihat_spec();<br/>}<br/>?> |
Perhatikan bahwa kita tak perlu (baca:tak dapat) membangun isi dari abstract method.
Abstract Class Tak Dapat Diinstansiasi
Sesuai dengan sifatnya, kita tak dapat membangun objek dari abstract class. Abstract class digunakan hanya selaku ‘blueprint’ bagi class-class lain, bukan bagi digunakan seketika.
1 |
abstract class komputer {<br/> abstract public function lihat_spec($pemilik);<br/> }<br/>}<br/><br/>$komputer_baru=new komputer();<br/>// Fatal error: Cannot instantiate abstract class komputer<br/>?> |
Error diatas terjadi karena kita mencoba membangun objek dari abstract class. Bagi menggunakan class komputer, kita mesti menurunkannya kepada class lain.
Abstract Class Dapat Mempunyai Property dan Method ‘lazim’
Kalau sebuah class dinyatakan selaku abstract class, class tersebut pun dapat mempunyai property dan method ‘normal’. Namun kita hanya dapat mengakses property dan method ini dari class turunan, karena abstract class tak dapat diinstansiasi.
1 |
<?php<br/>// bikin abstract class<br/>abstract class komputer{<br/> <br/> // bikin abstract method<br/> abstract public function lihat_spec($pemilik);<br/> <br/> // bikin method ‘lazim’<br/> public function hidupkan_komputer(){<br/> echo Hidupkan Komputer;<br/> }<br/>}<br/>?> |
Class Turunan Mesti Mengimplementasikan Abstract Method
Kalau sebuah class diturunkan dari abstract class, karenanya class tersebut mesti membangun ulang seluruh abstract method yang terdapat pada abstract class, dan pun mesti sesuai dengan signature-nya.
1 |
<?php<br/>// bikin abstract class<br/>abstract class komputer{<br/> // bikin abstract method<br/> abstract public function lihat_spec();<br/>}<br/> <br/>class laptop extends komputer{<br/> public function beli_laptop(){<br/> return Beli Laptop...;<br/> }<br/>}<br/> <br/>// bikin objek dari class laptop<br/>$laptop_baru = new laptop();<br/> <br/>// Fatal error: Class laptop contains 1 abstract method<br/>// and must therefore be declared abstract or implement<br/>// the remaining methods (komputer::lihat_spec)<br/>?> |
Pada contoh diatas, saya menurunkan class komputer kepada class laptop. Karena class komputer yaitu abstract class dan mempunyai abstract method lihat_spec(), karenanya di pada class laptop kita mesti membangun ulang method lihat_spec(). Kalau tak, akan terjadi kode error seperti diatas. Bagi mengatasinya, mari kita revisi
kode diatas menjadi berikut ini :
1 |
<?php<br/>// bikin abstract class<br/>abstract class komputer{<br/> // bikin abstract method<br/> abstract public function lihat_spec();<br/>}<br/> <br/>class laptop extends komputer{<br/> <br/>// implementasi abstract method<br/> public function lihat_spec(){<br/> return Lihat Spec Laptop...;<br/> }<br/> <br/>// method 'lazim' <br/> public function beli_laptop(){<br/> return Beli Laptop...;<br/> }<br/>}<br/> <br/>// bikin objek dari class laptop<br/>$laptop_baru = new laptop();<br/>echo $laptop_baru->lihat_spec();<br/>// Lihat Spec Laptop...<br/> <br/>echo <br />;<br/> <br/>echo $laptop_baru->beli_laptop();<br/>// Beli Laptop...<br/>?> |
Pada kode diatas, method lihat_spec() telah kita implementasikan di pada class laptop. Fitur inilah yang menjadi kegunaan dari abstract method, yakni ‘memaksa’ setiap class turunan bagi mempunyai method lihat_spec().
Implementasi dari abstract method, pun mesti sesuai dengan signaturenya, yakni nama method dan juga parameter. Kalau kita membangun abstract method lihat_spec($merk), karenanya di pada class turunan, kita pun mesti membangun $merk selaku parameter method. Kalau tak, karenanya PHP akan menghasilkan error selaku berikut:
1 |
<?php<br/>// bikin abstract class<br/>abstract class komputer{<br/> // bikin abstract method<br/> abstract public function lihat_spec($pemilik);<br/>}<br/> <br/>class laptop extends komputer{<br/> public function lihat_spec(){<br/> return Lihat Spec Laptop...;<br/> }<br/>}<br/> <br/>// bikin objek dari class laptop<br/>$laptop_baru = new laptop();<br/> <br/>// Fatal error: Declaration of laptop::lihat_spec()<br/>// must be compatible with komputer::lihat_spec($pemilik)<br/>?> |
Abstract Class Dapat Mempunyai Static Method
Diantara fitur ‘khusus’ bagi abstract class di pada PHP, yaitu: abstract class dapat mempunyai static method. Berikut contohnya:
1 |
<?php<br/>// bikin abstract class<br/>abstract class komputer{<br/> // bikin abstract method<br/> abstract public function lihat_spec($pemilik);<br/> <br/> public static function hidupkan_komputer(){<br/> echo Hidupkan Komputer;<br/> <br/> }<br/>}<br/> <br/>echo komputer::hidupkan_komputer();<br/>// Hidupkan Komputer<br/>?> |
Kegunaan Abstract Class dan Abstract Method
Abstract class dan abstract method berfungsi bagi membangun ‘kerangka’ untuk seluruh class dibawahnya. Seperti contoh-contoh kita diatas, setiap class yang diturunkan dari class komputer, ‘pasti’ akan mempunyai method lihat_spec().
Pada panduan ini saya menyederhanakan contoh kode program dengan hanya 1 abstract method. Kita dapat membangun beberapa abstract method di pada abstract class, seperti contoh berikut:
1 |
<?php<br/>// bikin abstract class<br/>abstract class komputer{<br/> // bikin abstract method<br/> abstract public function lihat_spec();<br/> abstract public function lihat_processor();<br/> abstract public function lihat_harddisk();<br/> abstract public function lihat_pemilik();<br/>}<br/> <br/>class laptop extends komputer{<br/> // .. isi class laptop<br/>}<br/> <br/>class komputer extends komputer{<br/> // .. isi class komputer<br/>}<br/> <br/>class netbook extends komputer{<br/> // .. isi class netbook<br/>}<br/>?> |
Dengan membangun class komputer selaku abstract, karenanya kita dapat menebak bahwa di pada class laptop, class komputer dan class netbook, pasti mempunyai method lihat_spec(), lihat_processor(), lihat_harddisk() dan lihat_pemilik(). Dengan demikian, kita dapat membangun program yang lebih terstruktur.
Pada panduan OOP PHP berikutnya, kita akan membahas mengenai Object Interfaces atau dikenal dengan sebutan Interface saja. Interface di pada pemograman objek betul-betul mirip dengan abstract class. Kita akan membahas pengertian, cara pemakaian serta perbedaan Object Interface dengan Abstract Class.
Sumber https://www.duniailkom.com/