Tuesday 23 August 2011

Enkapsulasi

Dalam sebuah objek yang mengandung variabel-variabel dan method-method, dapat ditentukan hak akses pada sebuah variabel atau method dari objek. Pembungkusan variabel dan method dalam sebuah objek dalam bagian yang terlindungi inilah yang disebut dengan enkapsulasi. Jadi, enkapsulasi dapat diartikan sebagai bungkusan (wrapper) pelindung program dan data yang sedang diolah.

Sehingga pengguna (user) tidak perlu mengetahui isi dari method (fungsi) dan data yang digunakan. Pengguna (user) hanya cukup mengetahui tipe data, dan mengisi variable (atau membuat variable baru) sesuai dengan tipe data dari obyek yang bersangkutan. Hal tersebut dapat terlihat jelas jika kita membandingkan antara bahasa pemrograman yang prosedural (misalnya pascal) dengan bahasa yang Object Oriented (misalnya delphi).

Pada pemrograman Pascal, kita harus menuliskan semua instruksi untuk membentuk suatu fungsi atau data. Sedangkan pada pemrograman Delphi kita sudah disediakan obyek-obyek (komponen) yang tinggal menggunakan saja. Pembungkus ini mendefinisikan perilaku dan melindungi program dan data yang sedang diolah agar tidak diakses sembarangan oleh program lain. Manfaat dari proses enkapsulasi adalah :

1. Modularitas
Kode sumber dari sebuah objek dapat dikelola secara independen dari kode sumber objek yang lain.
2. Information Hiding
Kita dapat menentukan hak akses sebuah variabel/method dari objek, dengan demikian kita bisa menyembunyikan informasi yang tidak perlu diketahui objek lain.

Latihan 1. PersegiPanjang.java

public class PersegiPanjang{
private double panjang; // attribute yg di encap
private double lebar; // attribute yg di encap
private double tinggi; // attribute yg di encap
public PersegiPanjang() {
panjang = 0;
lebar = 0;
}
private double luas(double p, double l) { // di hide
return p*l;
}
public void setPanjang(double panjang) {
this.panjang = panjang;
}
public void setLebar(double lebar) {
this.lebar = lebar;
}
public double getPanjang() {
return panjang;
}
public double getLebar() {
return lebar;
}
public double getLuas() {
return luas(panjang, lebar);
}
}

//MainPersegiPanjang.java
public class MainPersegiPanjang {
public static void main(String[] srgs) {
PersegiPanjang pp = new PersegiPanjang();
pp.setPanjang(10);
pp.setLebar(20);
System.out.println(“Panjang : “+ pp.getPanjang());
System.out.println(“Lebar : “+ pp.getLebar());
System.out.println(“Luas : “+ pp.getLuas());
}
}

Keterangan :
Dari latihan 1, kita mencoba untuk membuat sebuah class dari suatu obyek persegi panjang. Class persegi panjang tersebut mempunyai method (fungsi) :

- luas (double p, double l), method ini digunakan untuk menghitung luas berdasarkan data dari variable panjang dan lebar.
- setPanjang(double panjang), method ini digunakan untuk mengisi variable panjang dengan tipe data double.
- setLebar(double lebar), method ini digunakan untuk mengisi variable lebar  dengan tipe data double.
- getPanjang() , method ini digunakan untuk mengambil data dari variable panjang dengan tipe data double.
- getLebar(), method ini digunakan untuk mengambil data dari variable lebar dengan tipe data double.
- getLuas(), method ini digunakan untuk mengambil hasil perhitungan luas.

Program utama dari contoh di atas berada pada class MainPersegiPanjang yang ditandai dengan pernyataan public static void main(String[] srgs). Obyek/Class PersegiPanjang dipanggil dengan nama pp (PersegiPanjang pp = new PersegiPanjang();). nama panggilan “pp” adalah bebas tetapi harus ada pernyataan bahwa pp adalah implementasi dari PersegiPanjang (new PersegiPanjang).

Instruksi pp.setPanjang(10); artinya memanggil class PersegiPanjang (dng nama pp), dan diikuti dengan menjalankan method setPanjang(10), hal ini dimaksudkan untuk mengisi variable panjang dengan data 10 (integer).

Instruksi pp.setLebar(20); artinya memanggil class PersegiPanjang (dng nama pp), dan diikuti dengan menjalankan method setLebar(20), hal ini dimaksudkan untuk mengisi variable lebar dengan data 20 (integer).

Instruksi System.out.println(“Panjang : “+ pp.getPanjang()); artinya menampilkan tulisan “Panjang : ” diikuti dengan menampilkan isi dari variable panjang.
Instruksi System.out.println(“Lebar : “+ pp.getLebar()); artinya menampilkan tulisan “Lebar : ” diikuti dengan menampilkan isi variable lebar.
Instruksi System.out.println(“Luas : “+ pp.getLuas()); artinya menampilkan tulisan “Luas : ” diikuti dengan menampilkan hasil perhitungan panjang*lebar.

Prinsip enkapsulasi pada contoh di atas, adalah sebagai berikut :

- Dalam pembuatan program utama (void main), kita tidak perlu mengetahui isi (instruksi-instruksi dan data yang menyusun) method-method yang disediakan, yaitu setPanjang, setLebar, getPanjang, getLebar, Luas, dan getLuas. Yang kita lakukan hanyalah memanggil obyek/class yang akan digunakan (nama panggilan bebas, tetapi harus ada pernyataan bahwa obyek yg dipanggil tersebut merupakan implementasi dari suatu class yang tersedia). Selanjutnya kita hanya dituntut untuk mengisi nilai variable-variable yang dibutuhkan sesuai dengan tipe data yang sudah ditentukan (yaitu setPanjang dan setLebar). Untuk mengetahui hasilnya kita tinggal memanggil method yang sesuai (yaitu getPanjang, getLebar dan getLuas).


Pustaka :
Terima Kasih banyak dan lebih lanjut hubungi :
http://masjont.wordpress.com/2009/11/04/enkapsulasi

No comments:

Post a Comment

x