Nurul Imam Studio

Belajar HTML, CSS, JavaScript, PHP & MySQL untuk pemula & tingkat lanjut

Jasa Pembuatan Website Profesional

Aksesbilitas Property & Method dengan Encapsulation

Pada tutorial sebelumnya kita sudah membahas tentang Pengenalan Constructor dan Destructor. Pada Tutorial Sesi ini kita akan membahas tentang Encapsulation dalam OOP. Apa itu Encapsulation ? Encapsulation adalah istilah yang terkait dengan aksesbilitas property dan method dalam suatu class. Dengan encapsulation ini kita bisa mengatur sebuah property dan method. Apakah sebuah property dan method ini hanya bisa diakses didalam class saja atau bisa diakses diluar class.

Dalam encapsulation ini terbagi menjadi 3 bagian. yaitu :

  • Public => Property atau method bisa diakses dimanapun (Diluar Class)
  • Private => Property atau method hanya bisa diakses didalam class saja.
  • Protected => Property atau method hanya bisa diakses didalam class dan class turunannya saja.

Masih bingung ? Coba praktekan dibawah ini.

<?php
/*
* Aksesbilitas Property & Method dengan Encapsulation
*/
class Mahasiswa
{
  public $nim;
  private $nama;
  protected $nilai;

  function __construct($nim, $nama, $nilai)
  {
    $this->nim = $nim;
    $this->nama = $nama;
    $this->nilai = $nilai;
  }

  private function StatusNilai()
  {
    if ($this->nilai >= 70) {
      $status = "Lulus";
    } else {
      $status = "Gagal";
    }
    return $status;
  }
  public function BacaStatus()
  {
    echo $this->StatusNilai;
  }
}

$mahasiswa = new Mahasiswa(11212262, 'Nurul Imam', 90);
echo "NIM : ".$mahasiswa->nim."<br />";
echo "Nama : ".$mahasiswa->nama."<br />";
echo "Nilai : ".$mahasiswa->nilai."<br />";
echo "Status : ".$mahasiswa->StatusNilai()."<br />";
?>

Coba jalankan script PHP diatas, pasti ada keterangan error seperti ini.

Fatal error: Cannot access private property Mahasiswa::$nama in /.../.../

Keterangan tersebut dikarenakan kita tidak dapat memanggil property $mahasiswa->nama yang sifatnya private dan hanya bisa diakses didalam class saja. Lalu bagaimana cara memanggilnya ? Oke kita perbaiki error tersebut seperti dibawah ini.

<?php
/*
* Perbaikan Private Property
*/
class Mahasiswa
{
  public $nim;
  private $nama;
  protected $nilai;

  function __construct($nim, $nama, $nilai)
  {
    $this->nim = $nim;
    $this->nama = $nama;
    $this->nilai = $nilai;
  }

  protected function StatusNilai()
  {
    if ($this->nilai >= 70) {
      $status = "Lulus";
    } else {
      $status = "Gagal";
    }
    return $status;
  }

  // Membuat Method Untuk Memanggil Property Private ($nama)
  public function BacaNama()
  {
    return $this->nama;
  }
  // Membuat Method Untuk Memanggil Property Private ($nama)
  public function BacaNilai()
  {
    return $this->nilai;
  }
}

$mahasiswa = new Mahasiswa(11212262, 'Nurul Imam', 90);
echo "NIM : ".$mahasiswa->nim."<br />";
echo "Nama : ".$mahasiswa->BacaNama()."<br />";
echo "Nilai : ".$mahasiswa->BacaNilai()."<br />";
echo "Status : ".$mahasiswa->StatusNilai()."<br />";
?>

Setelah itu kita jalankan dan property $mahasiswa->nama bisa dibaca dengan method public $mahasiswa->BacaNama(). Namun ternyata masih ada error seperti ini.

Fatal error: Call to protected method Mahasiswa::StatusNilai() from context '' in /.../.../

Itu menandakan method $mahasiswa->StatusNilai() bersifat protected yang hanya bisa dibaca di dalam class dan class turunan classnya saja. Lalu bagaimana cara membaca method tadi di class turunan ? Buatlah class turunan mahasiswa seperti dibawah ini.

<?php
/*
* Perbaikan Protected Method
*/
class Mahasiswa
{
  public $nim;
  private $nama;
  protected $nilai;

  function __construct($nim, $nama, $nilai)
  {
    $this->nim = $nim;
    $this->nama = $nama;
    $this->nilai = $nilai;
  }

  protected function StatusNilai()
  {
    if ($this->nilai >= 70) {
      $status = "Lulus";
    } else {
      $status = "Gagal";
    }
    return $status;
  }

  // Membuat Method Untuk Memanggil Property Private ($nama)
  public function BacaNama()
  {
    return $this->nama;
  }
  // Membuat Method Untuk Memanggil Property Private ($nama)
  public function BacaNilai()
  {
    return $this->nilai;
  }
}

/**
* Class Turunan Mahasiswa dengan nama class Nilai
*/
class Nilai extends Mahasiswa
{
  public $status;

  public function BacaStatus()
  {
    $this->status = $this->StatusNilai();
    return $this->status;
  }
}

$turunan = new Nilai(11212262, 'Nurul Imam', 90);

echo "NIM : ".$turunan->nim."<br />";
echo "Nama : ".$turunan->BacaNama()."<br />";
echo "Nilai : ".$turunan->BacaNilai()."<br />";
echo "Status : ".$turunan->BacaStatus()."<br />";
?>

Bagaimana hasilnya ? Apakah masih ada error ? Disini sudah tidak ada error karena property dan method yang bersifat private atau protected sudah bisa dipanggil oleh method yang bersifat public yang ada di class turunan. Source Code Pembelajaran Sesi Aksesbilitas Property & Method dengan Encapsulation ini bisa dilihat demonya dan di download dibawah ini.

Demo   Download

Demikianlah sesi pembelajaran Aksesbilitas Property & Method dengan Encapsulation. Untuk pembahasan lebih lanjut tentang class turunan ini akan dibahas diartikel selanjutnya dalam sesi Inheritance / Pewarisan Dalam Class OOP. Terus pantengin yah Daftar Pembelajaran PHP OOP ini.

2 Comments

  1. alhiratechnologies.cReply

    oke gan, makasih atas informasinya

  2. alhiratechnologies.cReply

    sangat bermanfaat banget informasi ini gan

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>