Penggunaan fungsi ABSTRACTA pada PHP

Dalam pembahasan kali ini kita akan mengulas tentang abstract dan cara penggunaannya pada Bahasa pemrograman php.

Abstract atau abstrak adalah sebuah class yang tidak bisa di instansiasi dengan kata lain abstract tidak dapat dijadikan sebuah object, dimana pada dasarnya penggunaan abstract dalam pemgoraman berorientasi objek adalah sebagai kerangka dasar dalam menciptakan berbagai kemudahan yang akan digunakan untuk pengembangan program yang akan kita buat.

Selain itu abstract minimal mengandung satu buah method (function), yaitu method yang berupa nama method dan argumennya (jika ada). Fungsi abstract sendiri sebagai sebuah kerangka kerja bertujuan untuk menurunkan penggunaan method pada class yang lain yang ingin menggunakan jasa abstract itu sendiri.

Contoh Penulisan Abstract PHP

Kita akan coba membuat sebuah abstract dengan nama class Mobil:

abstract class Mobil { // statement } ?>

Code language: HTML, XML (xml)

Cara membuat abstract pada php diawali dengan abstract class untuk, tidak ada yang membedakan dengan cara penulisan class hanya saja fungsinya yang berbeda.

Cara mengimplementasikan abstract class

Seperti yang sebelumnya saya katakana bahwa abstract class digunakan untuk menurunkan fungsi pada class lainnya dan wajib digunakan pada class turunanya tersebut.

abstract class Mobil { abstract public function merk(); } class Kijang extends Mobil { public function warna() { return 'Merah'; } } $kijang = new Kijang(); ?>

Code language: HTML, XML (xml)

Pada contoh kode diatas kita tidak menurunkan method apapun dari abstract class mobil ke class Toyota, seperti terlihat bahwa di dalam abstract Mobil memiliki sebuah method merk akan tetapi kita tidak merunkannya ke class Kijang sehingga akan menampilkan pesan error seperti dibawah ini:

Penggunaan fungsi ABSTRACTA pada PHP

Mari kita ubah sedikit kode tersebut agar abstract mobil dapat bekerja pada class kijang sehingga menampilkan beberapa hal yang “Kijang” butuhkan sebagai sebuah identitas kendaraan umumnya.

abstract class Mobil { abstract public function merk(); } class Kijang extends Mobil { public function merk() { return 'Toyota'; } public function warna() { return 'Merah'; } } $kijang = new Kijang(); echo $kijang->merk(); echo '
'
; echo $kijang->warna(); ?>

Code language: HTML, XML (xml)

Dari kode di atas maka akan tampil seperti gambar dbawah ini:

Penggunaan fungsi ABSTRACTA pada PHP

Maka dari contoh diatas sebuah abstract apabila diturunkan pada sebuah class maka method yang terdapat pada sebuah abstract tersebut wajib di implementasikan pada class turunanannya. Hal ini bertujuan sebagai krangka kerja, sebagai standarisasi penulisan kode program yang ingin di buat.

Dalam tutorial belajar OOP PHP kali ini kita akan membahas tentang pengertian abstract class dan abstract method dalam pemrograman objek, serta cara pembuatan abstract class dan abstract method dengan PHP.


Pengertian Abstract Class dan Abstract Method

Abstract Class adalah sebuah class yang tidak bisa di-instansiasi (tidak bisa dibuat menjadi objek) dan berperan sebagai ‘kerangka dasar’ bagi class turunannya. Di dalam abstract class umumnya akan memiliki abstract method.

Abstract Method adalah sebuah ‘method dasar’ yang harus diimplementasikan ulang di dalam class anak (child class). Abstract method ditulis tanpa isi dari method, melainkan hanya ‘signature’-nya saja. Signature dari sebuah method adalah bagian method yang terdiri dari nama method dan parameternya (jika ada).

Abstract class digunakan di dalam inheritance (pewarisan class) untuk ‘memaksakan’ implementasi method yang sama bagi seluruh class yang diturunkan dari abstract class. Abstract class digunakan untuk membuat struktur logika penurunan di dalam pemrograman objek.

Konsep abstract class dan abstract method akan lebih mudah dipahami dengan menggunakan contoh.

Misalkan kita ingin membuat class yang terdiri dari berbagai jenis komputer seperti class laptop, class PC, class netbook, dan lain-lain. Seluruh class ini tentunya memiliki sifat-sifat komputer, seperti memiliki spesifikasi, memiliki processor, dan membutuhkan listrik. Dalam implementasinya, kita bisa membuat seluruh class ini diturunkan dari class komputer.

Agar lebih seragam, kita ingin seluruh class yang diturunkan dari class komputer, memiliki method yang ‘pasti’ ada dalam setiap class anak. Setiap komputer tentunya memiliki spesifikasi, sehingga kita ingin setiap class yang diturunkan dari class komputer memiliki method lihat_spec().

Bagaimana caranya ‘memaksa’ setiap class agar memiliki method lihat_spec()? Untuk kebutuhan ini, kita bisa membuat class komputer sebagai abstract class, dan method lihat_spec() sebagai abstract method.

Lebih lanjut, abstract method tidak hanya membuat setiap class memiliki method lihat_spec(), tetapi memaksa setiap method mengimplementasikan method lihat_spec() dengan isi method di serahkan kepada masing-masing class. Tentunya spesifikasi class laptop akan berbeda dengan spesifikasi class PC.

Abstract class memiliki aturan yang membedakannya dengan class biasa. Kita akan membahas aturan-aturan tersebut dengan menggunakan contoh program PHP.


Cara Membuat Abstract Class

Karena kita ingin membuat class komputer sebagai abstract class, maka berikut adalah cara penulisannya di dalam PHP:

Untuk membuat abstract class di dalam PHP, kita tinggal menambahkan keyword abstract sebelum nama class. Sebuah abstract class bisa memiliki property dan method biasa layaknya sebuah class ‘normal’, namun juga bisa memiliki abstract method.


Cara Membuat Abstract Method

Jika sebuah method dinyatakan sebagai abstract method, maka kita tidak perlu membuat isi methodnya, tetapi hanya signature dari method tersebut. Signature terdiri dai nama method dan parameternya (jika ada) seperti contoh berikut:

abstract public function lihat_spec();
abstract public function lihat_spec($merk);

Kenapa kita tidak perlu membuat isi dari method? Ini karena jika sebuah method dinyatakan sebagai abstract method, isi dari method tersebut akan dibuat dalam class turunan. Abstract method harus berada di dalam abstract class.

Sebagai contoh, berikut adalah cara penulisan abstract method lihat_spec() di dalam abstract class komputer:

Perhatikan bahwa kita tidak perlu (baca:tidak bisa) membuat isi dari abstract method.


Abstract Class Tidak Bisa Diinstansiasi

Sesuai dengan sifatnya, kita tidak bisa membuat objek dari abstract class. Abstract class digunakan hanya sebagai ‘blueprint’ untuk class-class lain, bukan untuk digunakan langsung.

abstract class komputer {
   abstract public function lihat_spec($pemilik);
   }
}

$komputer_baru=new komputer();
// Fatal error: Cannot instantiate abstract class komputer
?>

Error diatas terjadi karena kita mencoba membuat objek dari abstract class. Untuk menggunakan class komputer, kita harus menurunkannya kepada class lain.


Abstract Class Bisa Memiliki Property dan Method ‘biasa’

Jika sebuah class dinyatakan sebagai abstract class, class tersebut juga bisa memiliki property dan method ‘normal’. Namun kita hanya bisa mengakses property dan method ini dari class turunan, karena abstract class tidak bisa diinstansiasi.


Class Turunan Harus Mengimplementasikan Abstract Method

Jika sebuah class diturunkan dari abstract class, maka class tersebut harus membuat ulang seluruh abstract method yang terdapat dalam abstract class, dan juga harus sesuai dengan signature-nya.

Dalam contoh diatas, saya menurunkan class komputer kepada class laptop. Karena class komputer adalah abstract class dan memiliki abstract method lihat_spec(), maka di dalam class laptop kita harus membuat ulang method lihat_spec(). Jika tidak, akan terjadi kode error seperti diatas. Untuk mengatasinya, mari kita revisi kode diatas menjadi berikut ini :

lihat_spec();
// Lihat Spec Laptop...
 
echo "
";   echo $laptop_baru->beli_laptop(); // Beli Laptop... ?>

Dalam kode diatas, method lihat_spec() telah kita implementasikan di dalam class laptop. Fitur inilah yang menjadi fungsi dari abstract method, yakni ‘memaksa’ setiap class turunan untuk memiliki method lihat_spec().

Implementasi dari abstract method, juga harus sesuai dengan signaturenya, yakni nama method beserta parameter. Jika kita membuat abstract method lihat_spec($merk), maka di dalam class turunan, kita juga harus membuat $merk sebagai parameter method. Jika tidak, maka PHP akan menghasilkan error sebagai berikut:


Abstract Class Bisa Memiliki Static Method

Salah satu fitur ‘khusus’ untuk abstract class di dalam PHP, adalah: abstract class bisa memiliki static method. Berikut contohnya:


Fungsi Abstract Class dan Abstract Method

Abstract class dan abstract method berfungsi untuk membuat ‘kerangka’ bagi seluruh class dibawahnya. Seperti contoh-contoh kita diatas, setiap class yang diturunkan dari class komputer, ‘pasti’ akan memiliki method lihat_spec().

Dalam tutorial ini saya menyederhanakan contoh kode program dengan hanya 1 abstract method. Kita bisa membuat beberapa abstract method di dalam abstract class, seperti contoh berikut:

Dengan membuat class komputer sebagai abstract, maka kita bisa menebak bahwa di dalam class laptop, class pc dan class netbook, pasti memiliki method lihat_spec(), lihat_processor(), lihat_harddisk() dan lihat_pemilik(). Dengan demikian, kita bisa membuat program yang lebih terstruktur.


Dalam tutorial OOP PHP berikutnya, kita akan membahas tentang Object Interfaces atau dikenal dengan sebutan Interface saja. Interface di dalam pemograman objek sangat mirip dengan abstract class. Kita akan membahas pengertian, cara penggunaan serta perbedaan Object Interface dengan Abstract Class.


eBook OOP PHP Uncover Duniailkom

Duniailkom telah menerbitkan buku yang secara detail membahas pemrograman object PHP. Mulai dari materi dasar OOP seperti class, object, property, hingga trait, namespace, autoloading dan exception. Di akhir buku juga terdapat studi kasus pembuatan library dan aplikasi CRUD. Penjelasan lebih lanjut bisa ke eBook OOP PHP Uncover Duniailkom.

Apa itu abstract class pada PHP?

Abstract Class adalah sebuah class yang tidak bisa di-instansiasi (tidak bisa dibuat menjadi objek) dan berperan sebagai 'kerangka dasar' bagi class turunannya. Di dalam abstract class umumnya akan memiliki abstract method.

Apa itu abstrak dalam pemrograman?

Dalam ilmu komputer, abstraksi adalah proses representasi data dan program dalam bentuk sama dengan pengertiannya (semantik), dengan menyembunyikan rincian / detail implementasi. Abstraksi mencoba menyembunyikan detail agar programmer dapat berfokus pada konsep tertentu saja pada satu waktu.

Apakah yang dimaksud abstract method?

Abstract method adalah method yang tidak memiliki body (hanya deklarasi method) memiliki body (hanya deklarasi method). Abstract class tidak bisa dibuat obyeknya. Obyek hanya bisa dibuat dari non-abstract class (concrete class).

Kapan Dalam kondisi apa sebuah class abstract dibuat?

Abstract class dibuat ketika adanya hal yang cukup kompleks terjadi di saat pendefinisian di tahap awal pembangunan program.