Tutorial PHP OOP Part 13 : Pengertian Class Abstrak
Pada PHP 5 kita mengenal class abstrak dan method abstrak. Class abstrak (abstract class) didefinisikan sebagai class yang tidak bisa diinstantisasi menjadi object. Sebuah class abstrak setidaknya memiliki satu method abstrak (abstract method). Untuk menggunakan sebuah class abstrak, kita harus membuat class turunan dari class abstrak tersebut.
Tujuan dari dibuat abstrak class adalah agar setiap class turunan menggunakan method abstrak pada class induk secara fleksibel. Jadi pada method abstrak di class induk hanya terdapat signature saja tanpa isi yang konkrit.
Membuat Class Abstrak
Untuk membuat class abstrak, kita menggunakan keyword "abstract" didepan keyword class. Sebuah class abstrak harus memiliki setidaknya satu method abstrak. Namun class abstrak juga bisa memiliki properti dan method normal layaknya class konkrit.- abstract class AbstractClass {
- ....//harus berisi setidaknya satu method abstrak
- }
Membuat Method Abstrak
Untuk membuat method abstrak, kita menggunakan keyword "abstract" didepan keyword function. Jika didefinisikan hak akses-nya seperti public, private dan protected maka kita menempatkan keyword abstract tadi didepan hak akses, misal abstract public function namaFunction().- abstract class AbstractClass {
- // membuat method abstrak didalam class abstrak
- abstract protected function abstractMethod();
- }
Penggunaan Class Abstrak dan Method Abstrak
Dalam penggunaan class abstrak dan method abstrak, kita harus memperhatikan beberapa hal penting yang jika tidak dipenuhi akan berakibat error dan program tidak jalan. Hal-hal tersebut diantaranya adalah sebagai berikut :1. Class Abstrak tidak bisa diinstatisasi
Sebuah class abstrak tidak bisa langsung diinstantisasi menjadi object. Class Abstrak hanya bisa diinstantisasi menjadi object melalui class turunan. Jadi class sbstrak hanya merupakan bluprint dari class turunan.Contoh berikut ini akan menghasilkoan error " Fatal error: Cannot instantiate abstract class" jika dieksekusi :
- <?php
- abstract class Rumus {
- abstract public function luas_lingkaran();
- }
- $rumus=new Rumus();
- ?>
2. Class turunan harus mengimplementasi semua method abstrak pada class induk.
Ketika kita membuat class turunan dari class induk yang abstrak, maka kita harus mengimplementasi semua method abstrak yang ada pada class tersebut. Jika ada satu saja method abstrak yang tidak diimplementasi akan muncul error.Contoh berikut ini akan menghasilkan error " Fatal error: Class ... contains 1 abstract method and must therefore be declared abstract or implement the remaining methods " jika dieksekusi :
- <?php
- abstract class Rumus {
- abstract public function luas_lingkaran();
- abstract public function luas_persegi();
- }
- class Luas extends Rumus {
- public function luas_lingkaran() {
- return "Ini method luas lingkaran";
- }
- }
- $luas=new Luas();
- echo $luas->luas_lingkaran();
- ?>
3. Class abstrak bisa memiliki properti, method dan static
Dalam class abstrak kita bisa membuat properti, method dan static seperti layaknya class konkrit. Untuk lebih jelas perhatikan contoh berikut ini :- <?php
- abstract class Rumus {
- var $diameter;
- public function jari () {
- return $this->diameter / 2;
- }
- public static $pi=3.14;
- abstract public function luas_lingkaran();
- }
- class Luas extends Rumus {
- public function luas_lingkaran() {
- return parent::$pi * $this->jari() * $this->jari();
- }
- }
- $luas=new Luas();
- $luas->diameter = 10;
- echo "Luas Lingkaran dengan diameter ".$luas->diameter." = ".$luas->luas_lingkaran();
- ?>
Selanjutnya class abstrak dicetak pada class turunan Luas dan method abstraknya diimplementasi pada class tersebut sehingga syarat pada item no.2 diatas telah terpenuhi. Pada method luas_lingkaran() di class turunan kita mengakses static $pi dan method jari() pada class induk untuk menghitung luas lingkaran.
Dan untuk melihat hasilnya kita instantisasi class Luas menjadi object, kemudian kita set nilai diameternya=10 dan kita tampilkan hasil perhitungan dari method luas_lingkaran().
Jika benar maka script diatas akan menghasilkan tampilan :
Luas Lingkaran dengan diameter 10 = 78.5
Referensi :
0 komentar:
Posting Komentar