OOP Praktis – Encapsulation (Java)

This entry is part 4 of 5 in the series OOP Java

Artikel-artikel tentang OOP sebelumnya, berfokus pada class dan object melalui fields/attribut maupun method penyusunnya.

Pada artikel kali ini, akan dibahas teknik melakukan encapsulation/data hiding, yakni teknik membatasi akses pada fields sebuah object dari luar object tersebut.

Encapsulation dengan getter dan setter

Teknik encapsulation pada bahasa pemrograman java dilakukan dengan menutup akses langsung pada fields yang dimiliki sebuah object dari luar object bersangkutan. Caranya adalah dengan menggunakan private access modifier. Misalkan pada class Buku yang memiliki field judul, deklarasi field tersebut mendapatkan tambahan private di depannya sehingga menjadi private String judul;.

Jika akses langsung ditutup, lantas darimana kita bisa membaca atau mengganti nilai fields pada object bersangkutan? Caranya adalah dengan menyediakan method getter dan setter untuk masing-masing field.

Getter adalah method yang disediakan untuk mengakses nilai field tertentu pada object. Penamaan method getter diawali dengan get diikuti dengan nama field yang bersangkutan dengan mengikuti kaidah camel case. Misalkan, class Buku yang memiliki fields judul, pengarang, dan tahunTerbit akan memiliki method getJudul(), getPengarang(), dan getTahunTerbit().

Setter adalah method yang disediakan untuk mengganti nilai field tertentu pada object. Penamaan method setter diawali dengan set diikuti dengan nama field yang bersangkutan dengan mengikuti kaidah camel case. Misalkan class Buku yang sama akan memiliki method setJudul(), setPengarang(), dan setTahunTerbit()

class Buku {
  private String judul;
  private String pengarang;
  private int tahunTerbit;

  //constructor
  public Buku(String judul,String pengarang,int tahunTerbit) {
    this.judul = judul;
    this.pengarang = pengarang;
    this.tahunTerbit = tahunTerbit;
  }

  public String getJudul() {
    return this.judul;
  }

  public void setJudul(String judul) {
    this.judul = judul;
  }

  public String getPengarang() {
    return this.pengarang;
  }

  public void setPengarang(String pengarang) {
    this.pengarang = pengarang;
  }

  public int getTahunTerbit() {
    return this.tahunTerbit;
  }

  public void setTahunTerbit(int tahun) {
    this.tahunTerbit = tahun;
  }
}

Perhatikan kode disamping.

  1. Pada baris 2 s.d 4, setiap field dari class bersangkutan memiliki access modifier bertipe private
  2. Setiap field memiliki getter masing masing yakni pada baris 13, 21, dan 29
  3. Setiap field juga memiliki setter masing-masing yakni pada baris 17, 25, dan 33

Cara menggunakan class tersebut, termasuk menggunakan getter (baris 4 dan 6) dan setter(baris 5) dapat dilihat pada contoh kode di bawah.

class Main {
  public static void main(String[] args) {
    Buku b = new Buku("Laskar Pelangi","Andrea Hirata",2005);
    System.out.println(b.getJudul());
    b.setJudul("Rainbow Troops");
    System.out.println(b.getJudul());
  }
}

Manfaat Encapsulation

Secara praktis, teknik encapsulation memiliki beberapa manfaat yakni

  1. Menjaga perubahan langsung pada field object, ini dapat berguna saat nilai baru sebuah field perlu divalidasi terlebih dahulu (lihat contohnya pada artikel encapsulation untuk validasi).
  2. Menyembunyikan representasi internal sebuah object, dan hanya mengekspos apa yang relevan dilihat dari luar. Kompleksitas internal pada object bersangkutan tidak perlu terekspos pada tempat lain.
  3. Menjaga agar method dengan hak akses public pada class tidak perlu ikut berubah saat field/method internal class bersangkutan berubah, sehingga bagian program di tempat lain yang menggunakan object dari class tersebut tidak perlu ikut berubah.
  4. Memudahkan debugging, titik-titik pada getter dan setter adalah kandidat yang tepat untuk menjadi debugging breakpoint.

Setiap manfaat di atas akan lebih mudah dipahami dengan contoh kasus yang sesuai, yang akan dibahas pada kesempatan yang lain.

Semoga bermanfaat

Series Navigation<< OOP Praktis – Instance Method (Java)OOP Praktis – Inheritance (Java) >>

You may also like...

2 Responses

  1. Rabiatun hadawiah says:

    Assalamualaikum wr wb
    Saya Rabiaton Hadawiah ingin bertanya pak,apa yang di maksut dengan debugging breakpoint?

    • Alza says:

      Debugging breakpoint itu adalah titik dimana program kita dihentikan sementara (paused) saat sedang berjalan. Manfaatnya, kita bisa melihat nilai variabel tertentu pada saat itu, untuk membantu memeriksa apakah program berjalan sesuai yang kita inginkan.

Berikan komentar