Mengenal Pemrograman Berorientasi Objek | Modifier

Modifier 

Apa maksudnya ? Mari kita bahas pelan-pelan!

Modifier merupakan sebuah cara bagaimana data diperlakukan. Apakah data tersebut bisa diakses bebas atau tidak dan apakah data itu hanya bisa di akses oleh bagian-bagian tertentu saja dsb. Modifier berada di sebelah kiri sebelum deklarasi pembuatan properties dan methods dari class.

Dalam pemrograman berbasis Object Oriented Programming, dikenal tiga buah modifier. Ketiga modifier tersebut yaitu :

  • Public
  • Private
  • Protected
Mari kita praktikkan! 😎

Pertama, kita buka kembali hasil praktik kita seperti di artikel sebelumnya terkait dengan setter-getter. Kita sudah memiliki kode :

<?php
    class Buku {
        var $nama;
        var $penulis;
        var $penerbit;
        var $tahunTerbit;  

        public function setNama($nama, $penulis, $penerbit, $tahunTerbit) {
            $this->nama = $nama;
            $this->penulis = $penulis;
            $this->penerbit = $penerbit;
            $this->tahunTerbit = $tahunTerbit;
        }

        public function getNama() {
            echo "DATA BUKU <br>";
            echo "Nama Buku : ".$this->nama;
            echo "<br>Penulis : ".$this->penulis;
            echo "<br>Penerbit : ".$this->penerbit;
            echo "<br>Tahun Terbit : ".$this->tahunTerbit;
        }
    }

    $bukuSejaran = new Buku();
    $bukuSejaran->setNama("Sejarah Komputer Awal", "Ahmad Istakim", "Divapress", "2025");
    $bukuSejaran->getNama();

?>

Kita hilangkan semua method kita sehingga menjadi :

<?php
    class Buku {
        var $nama;
        var $penulis;
        var $penerbit;
        var $tahunTerbit;  
    }

    $bukuSejaran = new Buku();

?>

Sip. Kita kembali ke awal artikel terkait oop kita ini. Kita memiliki class Buku {}, beberapa properties ( $nama, $penulis, $penerbit dan $tahunTerbit ) dan sebuah objek $bukuSejarah.

Dimana modifiernya ? Belum!

Tapi sebenarnya secara tidak langsung, dalam baris kode tersebut telah ada yang dinamakan modifier. Kata var yang berada di sebelah kiri properti menunjukkan bawa properti tersebut bersifat public

Sekarang mari kita bahas satu per satu modifier ini...

Pertama, Public

Merupakan modifier yang memungkinkan sebuah member class dapat di akses bebas. Baik dari dalam class ataupun dari luar class.

Kedua, Private

Merupakan modifier yang membuat sebuah member hanya dapat di akses dari dalam class dan objek yang dibuat dari class turunan, tidak diperkenankan untuk mengakses member class dari objek yang di instance langsung dari class induk ( error ).

Ketiga, Protected

Merupakan modifier yang dimana membernya hanya dapat diakses menggunakan method setter dan getter di kelas itu sendiri dan sub class / turunan dari class tersebut.

Untuk lebih jelasnya, mari kita praktikkan langsung dengan. Kita beri properti $nama sebuah modifier public sehingga menjadi :

    class Buku {
        public $nama; // beri modifier public
        var $penulis;
        var $penerbit;
        var $tahunTerbit;  
    }

Dengan objek yang ada yaitu $bukuSejarah, kita panggil langsung property $nama untuk diberi nilai dan tampilkan hasilnya dengan perintah echo.

    $bukuSejaran = new Buku();
    $bukuSejaran->nama = "Belajar Modifier";
    echo $bukuSejaran->nama;

Mari lanjutnya kita lihat hasilnya di browser!


Tampil dan biasa aja ya 😄

Kode lengkap :

<?php
    class Buku {
        public $nama;
        var $penulis;
        var $penerbit;
        var $tahunTerbit;  
    }

    $bukuSejaran = new Buku();
    $bukuSejaran->nama = "Belajar Modifier";
    echo $bukuSejaran->nama;

?>


Selanjutnya, mari kita lakukan uji dengan menambahkan modifier private di property $penulis

        private $penulis;

Lakukan hal yang sama seperti property $nama, yaitu berikan value kemudian tampilkan dengan echo. Kode kita menjadi :

    $bukuSejaran = new Buku();
    $bukuSejaran->nama = "Belajar Modifier";
    echo $bukuSejaran->nama."<br>";
    $bukuSejaran->penulis = "Ahmad Istakim Sy";
    echo $bukuSejaran->penulis;

Sampai disini, kita cek kode kita dengan melihat hasilnya di browser. Bagaimana hasilnya ?

Wah, error 😖
Yap benar! Memang begitulah seharusnya, karena kita memanggil property $penulis di luar scoop class Buku {}. Dua baris kode ini :
    $bukuSejaran->penulis = "Ahmad Istakim Sy";
    echo $bukuSejaran->penulis;

Berada di luar wilayah class Buku yang dibatasi oleh kurung kurawal {}, beda dengan modifier sebelumnya ( public ). Dimana dengan membuat member class public akan bisa di akses baik melalui dalam class atau luar scoop class.

Coba baca kembali terkait dengan modifier private diatas

Sampai sini sudah ada gambaran terkait perbedaan public dan private ? Kalau belum coba baca kembali kemudian sambil di praktikkan artikel dari awal. Lalu bagaimana solusinya supaya tidak muncul :

Uncaught Error: Cannot access private property Buku::$penulis

Padahal ingin tetap menggunakan modifier private!? Disinilah kita bisa memfungsikan adanya method setter dan getter. Dengan setter kita memberikan nilai pada $penulis dan dengan getter kita menampilkannya.

Kita buat setter terlebih dahulu untuk $penulis :

        public function setPenulis($penulis) {
            $this->penulis = $penulis;
        }

Selanjutnya, kita buat getter :

        public function getPenulis() {
            echo $this->penulis;
        }

Di bagian pemanggilan dengan objek ini :

    $bukuSejaran->penulis = "Ahmad Istakim Sy";
    echo $bukuSejaran->penulis;

Kita ganti dengan memanggil setter diikuti dengan getter menjadi :

    $bukuSejaran->setPenulis("Ahmad Istakim Sy");
    $bukuSejaran->getPenulis();

Nah sekarang coba cek dengan browser!


Yeeee, berhasil! 😎

Baca kembali : Mengenal Setter | Menggenal Getter

Perlu diingat! Bahwa setter dan getter yang digunakan untuk mengolah property dengan modifier private haruslah memiliki modifier public. Bagaimana jika dibuat private pula ? Coba saja dan cek bagaimana hasilnya :)

Buktikan ya, ubah modifier method dengan private :

        private function setPenulis($penulis) {
            $this->penulis = $penulis;
        }

        private function getPenulis() {
            echo $this->penulis;
        }

Hasilnya :

Yaaaa muncul lagi kalimat :

Fatal error: Uncaught Error: Call to private method Buku::setPenulis() from global scope in...

Paham sampai sini ? 

ℹ Method yang mengakses member class yang private untuk di tampilkan usahakan untuk selalu memiliki modifier public

Kode lengkap :

<?php
    class Buku {
        public $nama;
        private $penulis;
        var $penerbit;
        var $tahunTerbit;  

        public function setPenulis($penulis) {
            $this->penulis = $penulis;
        }

        public function getPenulis() {
            echo $this->penulis;
        }
    }

    $bukuSejaran = new Buku();
    $bukuSejaran->nama = "Belajar Modifier";
    echo $bukuSejaran->nama."<br>";
    $bukuSejaran->setPenulis("Ahmad Istakim Sy");
    $bukuSejaran->getPenulis();
?>


Terakhir, kita bahas terkait dengan Protected

Sekarang mari kita ubah member dari class Buku {}, yaitu $penerbit memiliki modifier protected.

        protected $penerbit;

Bentuk class Buku {} menjadi :

        public $nama;
        private $penulis;
        protected $penerbit;
        var $tahunTerbit;  

Lengkap dengan tiga modifier. Mari kita akses property $penerbit langsung :

    $bukuSejaran->penerbit = "Penerbit Books";
    echo $bukuSejaran->penerbit;

Hasilnya :


Error juga ya. Nah, solusinya kita bisa lakukan hal yang sama seperti mengakses property dengan modifier private. Dengan membuat setter dan getter.
        public function setPenerbit($penerbit) {
            $this->penulis = $penerbit;
        }

        public function getPenerbit() {
            echo $this->penerbit;
        }

Kemudian kita ubah pengaksesannya :
    $bukuSejaran->setPenerbit("Penerbit Books");
    $bukuSejaran->getPenerbit();

Di bagian bawah objek $bukuSejarah baris kode lengkapnya :
    $bukuSejaran = new Buku();
    $bukuSejaran->nama = "Belajar Modifier";
    echo $bukuSejaran->nama."<br>";
    $bukuSejaran->setPenulis("Ahmad Istakim Sy");
    $bukuSejaran->getPenulis();
    echo "<br>";
    $bukuSejaran->setPenerbit("Penerbit Books");
    $bukuSejaran->getPenerbit();

Cek hasilnya :

Yap. Berhasil, tidak ada error kemudian berhasil menampilkan value dari property $penerbit. Lalu apa bedanya antara private dan protected !? Keduanya di akses dengan moda sama, yaitu dengan setter dan getter.

Kita akan bahas di artikel berikutnya ya 😊
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