Encapsulation OOP


 

 Encapsulation adalah sebuah konsep Object Oriented Programming digunakan untuk membungkus data dan fungsi, untuk menjaga tetap terjaga agar tidak adanya penyalahgunaan. Konsep encapsulation menyebabkan sebuah konsep OOP yang bernama “Abstraction” atau “Data Hiding”. 
Encapsulation adalah sebuah teknik untuk membuat antar muka dan menyembunyikan mekanisme atau isi secara menyeluruh terhadap pengguna, dengan hal itu pengguna tidak diperbolehkan untuk mengakses data yang disembunyikan secara langsung. tapi bisa menggunakan dan memahami dengan mudah berdasarkan antar muka yang telah disediakan.
Pada dunia nyata kita dapat ambil contoh sebuah Remote TV untuk menggambarkan encapsulation. Apa yang kita liat pada Remote TV adalah sebuah bentuk dan banyak tombol di atasnya. Encapsulation pada Remote TV adalah dimana mesin atau mekanisme cara kerja dan data yang dimiliki Remote tersembunyi pada kulitnya yang keras, dan kita dilarang untuk membongkar, mengakses, memodifikasi secara langsung. Dan apa yang bisa kita gunakan adalah tombol-tombol yang telah disediakan untuk memberi perintah kepada Remote TV melakukan pekerjaanya.

Contoh program Encapsulation

#include <iostream>
using namespace std;
class remoteTV{
private:
    string tombolNo[10];
public:
    void setTombolNo(int i, string value){
        tombolNo[i] = value;
    }
    string getTombolNo(int i){
        return tombolNo[i];
    }
};
int main(){
    remoteTV ruangTamu;
    ruangTamu.setTombolNo(0, "Channel BCPP");
    ruangTamu.setTombolNo(1, "Channel BelajarCPP");
    ruangTamu.setTombolNo(2, "Channel CPP");
    ruangTamu.setTombolNo(3, "Channel C");
    cout<<ruangTamu.getTombolNo(0)<<endl;
    cout<<ruangTamu.getTombolNo(1)<<endl;
    cout<<ruangTamu.getTombolNo(2)<<endl;
    cout<<ruangTamu.getTombolNo(3)<<endl;
   return 0;

Pada contoh program di atas menggunakan konsep Encapsulation dimana kita tidak bisa dengan mudah mengakses variabel tombolNo secara langsung, dan harus menggunakan perantara menggunakan fungsi yang dinamakan teknik “Setter dan Getter”. 

Syarat Encapsulation

Setelah penulis contohkan di atas, untung mengimplementasikan sebuah konsep encapsulation, dibutuhkan syarat sebagai berikut: Data dan fungsi yang disembunyikan harus berlabel private atau protected(jika dibutuhkan untuk hubungan antar class), agar tidak bisa diakses secara sembarang dan disalahgunakan.
Data dan fungsi yang digunakan untuk antarmuka harus berlabel public.

Mengenal Getter and Setter pada Java programming

Getter dan setter digunakan untuk secara efektif melindungi data Anda, terutama saat membuat kelas. Untuk setiap variabel, metode get mengembalikan nilai, sedangkan metode set, meng set kan nilai. 
Getter mulai dengan get, lalu diikuti dengan nama variabel, dengan huruf pertama dari nama variabel dikapitalisasi.
Setter mulai dengan set, diikuti dengan nama variabel, dengan huruf pertama dari nama variabel dikapitalisasi. 

Contoh kelas pakai Getter dan Setter

 /**
@Author Firman Hidayat
 **/
public class ContohKelasPakaiGetterSetter {
    private String nim;
    private String nama;
    protected String alamat;
    protected String jurusan;
    public String getNim() {
        return nim;
    }
    public void setNim(String nim) {
        this.nim = nim;
    }
    public String getNama() {
        return nama;
    }
    public void setNama(String nama) {
        this.nama = nama;
    }
    public String getAlamat() {
        return alamat;
    }
    public void setAlamat(String alamat) {
        this.alamat = alamat;
    }
    public String getJurusan() {
        return jurusan;
    }
    public void setJurusan(String jurusan) {
        this.jurusan = jurusan;
    }
}

Contoh kelas pemanggil Getter dan Setter

/**
@Author Firman Hidayat
 **/
public class KelasPemanggilGetterSetter {
    public static void main(String[] buaya) {
        // Mengeset nilai atribut objek-objek instance kelas
        // ContohKelasPakaiGetterSetter
        ContohKelasPakaiGetterSetter objekKelas_1 = new ContohKelasPakaiGetterSetter();
        objekKelas_1.setNim("AAA111");
        objekKelas_1.setNama("PAK BEYE");
        objekKelas_1.setAlamat("Cigondewah");
        objekKelas_1.setJurusan("Ilmu Palak");
        ContohKelasPakaiGetterSetter objekKelas_2 = new ContohKelasPakaiGetterSetter();
        objekKelas_2.setNim("BBB222");
        objekKelas_2.setNama("ANI YUDO");
        objekKelas_2.setAlamat("Cikawao");
        objekKelas_2.setJurusan("Ilmu Pertanian");
        // Mengambil nilai atribut dari objek-objek instanc kelas
        // ContohKelasPakaiGetterSetter
        String nim_1 = objekKelas_1.getNim();
        String nama_1 = objekKelas_1.getNama();
        String alamat_1 = objekKelas_1.getAlamat();
        String jurusan_1 = objekKelas_1.getJurusan();
        String nim_2 = objekKelas_2.getNim();
        String nama_2 = objekKelas_2.getNama();
        String alamat_2 = objekKelas_2.getAlamat();
        String jurusan_2 = objekKelas_2.getJurusan();
        // Tampilkan output nilai atribut setiap objek
        System.out.println("NIM  : " + nim_1 + "\tNAMA  : " + nama_1
                + "\tALAMAT  : " + alamat_1 + "\tJURUSAN  : " + jurusan_1);
        System.out.println("NIM  : " + nim_2 + "\tNAMA  : " + nama_2
                + "\tALAMAT  : " + alamat_2 + "\tJURUSAN  : " + jurusan_2);
    }
}

Bila kelas KelasPemanggilGetterSetter ini dieksekusi, menghasilkan output seperti ini:
NIM  : AAA111   NAMA  : PAK BEYE    ALAMAT  : Cigondewah    JURUSAN  : Ilmu Palak
NIM  : BBB222   NAMA  : ANI YUDO    ALAMAT  : Cikawao   JURUSAN  : Ilmu Pertanian

Coba kita tinjau kelas ContohKelasPakaiGetterSetter. Dalam kelas ini terdapat tiga buah atribut:
nim           –> akses level: private
nama        –> akses level: private
alamat      –> akses level: protected
Jurusan   –> akses level: protected

Kemudian terdapat method getter dan setter yang akses levelnya diset public.
public String getNim()            —> ngambil nilai atribut nim
public String getNama()         —> ngambil nilai atribut nama
public String getAlamat()       —> ngambil nilai atribut alamat
public String getJurusan()     —> ngambil nilai atribut Jurusan
public void setNim(String nim)               —> mengeset nilai atribut nim
public void setNama(String nama)         —> mengeset nilai atribut nama
public void setAlamat(String alamat)    —> mengeset nilai atribut alamat
public void setJurusan(String jurusan)  —> mengeset nilai atribut Jurusan

Sekarang kita perhatikan kelas KelasPemanggilGetterSetter. Kelas ini tidak secara langsung mengakses atribut pada kelas ContohKelasPakaiGetterSetter. Untuk mengaksesnya digunakan method getter dan setter yang sudah disediakan di kelas ContohKelasPakaiGetterSetter. Ini contohnya:
ContohKelasPakaiGetterSetter objekKelas_1 = new ContohKelasPakaiGetterSetter();
objekKelas_1.setNim(“AAA111”);
objekKelas_1.setNama(“PAK BEYE”);
objekKelas_1.setAlamat(“Cigondewah”);
objekKelas_1.setJurusan(“Ilmu Palak”);

Untuk mengambil nilai atribut digunakan method getter:
String nim_1 = objekKelas_1.getNim();
String nama_1 = objekKelas_1.getNama();
String alamat_1 = objekKelas_1.getAlamat();
String jurusan_1 = objekKelas_1.getJurusan();

Komentar