Skip to main content

Pengertian Encapsulation dan Beberapa Method Dalam Pemrograman Berorientasi Objek

Pembungkusan (encapsulation) adalah sebuah proses mengabungkan data dan kode (method) menjadi satu. Pada situasi semacam ini, kita dapat menentukan tingkat akses dari data dan method tersebut menggunakan kata kunci private, public, maupun protected.
Dalam pemprograman objek, data pada umumnya didesain untuk bersifat private atau hanya dapat diakses oleh kelas yang memilikinya saja. Pengaksesan data dari bagian luar hanya dapat dilakukan melalui method-method yang ada. Ini artinya, method berperan sebagai antarmuka (interface). Maka dari itu, method pada umumnya bersifat public. Meskipun demikian, apabila kita ingin mendefinisikan method yang hanya dapat diakses oleh kelas itu sendiri, maka kita pun harus mendeklarasikannya dengan kata kunci private. Satu hal lagi, apabila kita menginginkan data dan method yang kita definisikan di dalam kelas dapat diakses oleh kelas-kelas turunan dari kelas bersangkutan, maka data dan method tersebut harus dideklarasikan dengan kata kunci protected.

Secara umum, pembungkusan data dan method dari suatu kelas dapat dituliskan seperti berikut:


Class namaKelas{ 
tingkat-akses data1; 
tingkat-akses data2; 
… 
tingkat-akses dataN; 
tingkat-akses method1(daftar-parameter){ 
// kode untuk method1 
} 
tingkat-akses method2(daftar-parameter){ 
// kode untuk method2 
} 
… 
tingkat-akses method(daftar-parameter){ 
// kode untuk method 
}

Dalam hal ini tingkat-akses adalah salah satu dari kata kunci private, public, maupun protected. Apabila kita tidak mencantumkan salah satu kata kunci tersebut pada saat mendeklarasikan data maupun method, maka secara default Java akan menganggapnya sebagai data atau method dengan sifat public. Perhatikan contoh berikut ini.


Class ContohTingkatAkses{ 
// menurut keadaan default, a bersifat public 
int a; 
// b dideklarasikan dengan sifat public 
public int b; 
// c bersifat private 
private char c; 
… 
// menurut keadaan default, method1() bersifat public 
int method1() {…} 
// method2() bersifat protected 
protected void method2() {…} 
// method3() bersifat private 
private char method3() {…} 
}

Seperti yang Anda lihat di atas, data a dideklarasikan tanpa menggunakan tingkat akses tertentu. Namun secara default, a akan dianggap sebagai data yang bersifat public. Begitu juga untuk method1(). Pada data b, secara eksplisit kita mendeklarasikannya dengan kata kunci public sehingga variable tersebut akan bersifat public pula. Adapun method2() kita deklarasikan dengan sifat protected sehingga hanya akan dikenali oleh kelas itu sendiri beserta dengan kelas-kelas turunannya saja. Terakhir, data c dan method3() kita deklarasikan dengan sifat private, yang berarti method tersebut hanya dapat diakses oleh kelas bersangkutan saja.

Berikut ini contoh program yang akan menunjukkan pengaruh dari tingkat akses public dan private di dalam suatu kelas. Tingkat akses protected baru akan kita bahas pada bagian lain, yaitu pada saat kita membahas mengenai pewarisan sifat terhadap kelas turunan.

PROGRAM

class TingkatAkses{ 
int a; 
public int b; 
private int c; 
public void setC(int nilai){ 
c=nilai; 
} 
public int getC(){ 
return c; 
} 
} 
class DemoPublicDanPrivate{ 
public static void main(String[] args){ 
TingkatAkses obj = new TingkatAkses(); 
obj.a=10; //BENAR, karena a secara default bersifat public 
obj.b=20; //BENAR, karena b bersifat public 
//obj.c=30; //SALAH, karena c bersifat private 
obj.setC(30); //BENAR, karena method setC() bersifat public 
System.out.println("Nilai obj.a : "+obj.a); 
System.out.println("Nilai obj.b : "+obj.b); 
System.out.println("Nilai obj.c : "+obj.getC()); 
} 
} 

Seperti yang Anda lihat di atas, data a dan b yang terdapat pada kelas TingkatAkses kita deklarasikan dengan sifat public sehingga data tersebut dapat diakses dari lingkungan luar (dalam hal ini pemanggilan dilakukan di dalam kelas DemoPublicDanPrivate). Namun, data c kita deklarasikan dengan sifat private sehingga tidak dapat diakses dari lingkungan luar. Maka dari itu, untuk mengakses data tersebut, kita perlu mendefinisikan method yang berfungsi sebagai antarmuka (interface), yaitu method setC() dan getC() yang keduanya bersifat public. Method setC() digunakan untuk mengisikan nilai terhadap data c, sedangkan method getC() digunakan untuk mendapatkan nilai c. dengan demikian, meskipun c bersifat private, akan tetapi secara tidak langsung lingkungan luar juga masih dapat mengakses data tersebut. Adapun hasil yang akan diperoleh apabila program di atas dijalankan sebagai berikut:

Nilai obj.a : 10 
Nilai obj.b : 20 
Nilai obj.c : 30

Karena bersifat public, maka nilai a dan b yang terdapat pada kelas TingkatAkses dapat kita panggil langsung dengan cara seperti berikut:

System.out.println("Nilai obj.a : "+obj.a); 
System.out.println("Nilai obj.b : "+obj.b); 

Namun, untuk data c, kita hanya dapat memanggil nilainya melalui method getC(), yaitu dengan cara berikut:

System.out.println("Nilai obj.c : "+obj.getC()); 
Comment Policy: Silahkan tuliskan komentar Anda yang sesuai dengan topik postingan halaman ini. Komentar yang berisi tautan tidak akan ditampilkan sebelum disetujui.
Buka Komentar
Tutup Komentar