Mengenal Pemrograman Berorientasi Objek | Abstract Class

Secara umum class merupakan sebuah kerangka yang menyimpan berbagai hal, seperti variabel dan fungsi. 

Class adalah entitas dasar yang digunakan untuk mendefinisikan atribut (variabel) dan metode (fungsi) yang akan dimiliki oleh objek yang akan dibuat berdasarkan class tersebut.

Untuk membuat sebuah class cukup dengan :

namaClass {

... isi class ..

Kemudian kita masuk ke pembahasan di artikel ini, yaitu abstract class.

Abstract class merupakan sebuah class yang tidak bisa dijadikan sebuah objek. Class ini hanya merupakan kerangka dasar yang nantinya akan di implementasikan oleh class turunan ( class child ). Tidak ada perbedaan yang jauh dalam pembuatan class biasa dan abstract. Hanya saja di dalam penulisan nama class di awali dengan kata abstract dan untuk methodnya hanya memiliki nama dan parameter ( jika ada ). 

Format penulisan dari abstract class :

    abstract class namaClass {
        abstract public function namaMethod();
    }

Lebih jauh, method abstract tidak di izinkan memiliki body atau isi dalam { ... }

Lalu apa kegunaan dari abstract class ini ? Pertanyaan bagus!

Apa yang ada dalam pikiran jika mendengar kata "Hewan" ?  

Secara tidak langsung kita akan berpikiran tentang suara, jumlah kaki, cara jalan, cara makan dan hal lain. Kemudian, saat mendengar kata "Barang", apa yang muncul dalam bayangan ? Nanti akan terpikir umumnya bentuk, fungsi, berat dan lain-lain sebagainya.

Hewan dan Barang merupakan bentuk yang masih abstrak atau belum jelas. Maksudnya!?

Saat kita berkata tentang Hewan, tentunya bisa kita pertanyakan lebih jauh. Hewan apa!? Ada Sapi, Kambing, Ayam, Gajah, Merpati dan lain sebagainya. Kemudian hewan hewan-hewan itu memiliki karakteristik atau cara sendiri-sendiri, baik jalan dan cara makannya. Begitu juga dengan kata "Barang".

Tanpa menggunakan abstract class, kita akan menuliskan kode untuk masing-masing class kurang lebih seperti berikut :

    class Sapi { // class Sapi dengan 2 method
        public function caraJalan() {

        }

        public function caraMakan() {

        }
    }

    class Kambing { // class Kambing dengan 2 method
        public function caraJalan() {

        }

        public function caraMakan() {
           
        }
    }

    class Gajah { // class Gajah dengan 2 method
        public function caraJalan() {

        }

        public function caraMakan() {
           
        }
    }

    class Ayam { // class Ayam dengan 2 method
        public function caraJalan() {

        }

        public function caraMakan() {
           
        }
    }

Kita bisa membuat jumlah method yang berbeda, tidak akan ada masalah. Namun, terkadang kita menginginkan semua class yang kita punya memiliki method yang sama. Bagaimana caranya!? Nah, caranya yaitu menggunakan implementasi dari abstract class.

Dengan menerapkan abstract class, kita akan mendapatkan warning jika kita tidak mengimplementasikan method yang telah dibuat dalam class abstract dalam class child. Caranya!? Perhatikan baris kode dibawah ini!

<?php
    abstract class Hewan {
        abstract function caraJalan();

        abstract function caraMakan();
    }

    class Sapi extends Hewan {

    }

    class Kambing extends Hewan {

    }

    class Gajah extends Hewan {

    }

    class Ayam  extends Hewan {

    }
?>

Di kode tersebut, ada satu buah class abstract yaitu Hewan. Tandanya!? Terdapat kata abstract sebelum nama class kan.

Tapi, akan terdapat warning error sebenarnya dalam penulisan kode tersebut. 


Hal ini disebabkan class child harus menerapkan / mengimplementasikan method yang ada di dalam class abstract. Seperti disampaikan sebelumnya, bahwa dengan extends class terhadap class abstract maka wajib hukumnya mengimplementasikan isi dari method class abstract. Dalam kalimat singkatnya, kita harus menyamakan isi dari keseluruhan class anak yang meng-exteds class abstract.

Bagaimana cara implementasinya!? Sama seperti pada umumnya, kita menuliskan kembali nama method yang ada di dalam class abstract tanpa disertai dengan kata abstract sebelumnya.
    abstract class Hewan {
        abstract function caraJalan();

        abstract function caraMakan();
    }

    class Sapi extends Hewan {
        function caraJalan() {

        }

        function caraMakan() {
           
        }

    }

Ini akan menghilangkan warning, kita lihat di VS Code :

Di area class Sapi sekarang hilang garis merahnya 😊


Ahmad Istakim

Alumni dari jurusan Manajemen Informatika di Universitas Sains Al-Qur'an (UNSIQ ) Wonosobo. Tertarik dalam bidang pendidikan, teknologi komputasi dan disiplin ilmu keislaman ( Tafsir, Hadits, Arudl, Nahwu-Sharaf, Fiqh maupun Aqidah ) - https://s.id/blog-islamQ. Pernah juga mengenyam pendidikan di beberapa pesantren yang ada di Kab. Wonosobo dan Kab. Purworejo

Posting Komentar

Lebih baru Lebih lama