Thursday, April 12, 2012

Enkapsulasi pada Java & Contohnya

Apaan sih maksudnya enkapsulasi dalam pemrograman?
Konsep Enkapsulasi dalam pemrograman adalah pengkombinasian/pembungkusan antara data dan prosedur ataupun fungsi (method) yang memanipulasinya ke dalam sebuah object pada bagian yang terlindungi sehingga data-datanya tidak mudah diakses langsung dari luar. Manfaat dari enkapsulasi ialah kode sumber dari sebuah object dapat dikelola secara independen dari kode object yang lain. Selain itu, dengan enkapsulasi kita bisa menyembunyikan informasi-informasi yang tidak perlu diketahui oleh object lain. Enkapsulasi merupakan salah satu karakteristik utama dalam konsep OOP.
Konsep ini menentukan tingkat aksesibilitas dari masing-masing data dan method serta menyembunyikan detail implementasi dari luar yang dikenal dengan Information Hiding. Ada beberapa keuntungan menerapkan prinsip enkapsulasi, yaitu:
  1. Memiliki sifat bebas, sehingga dapat digunakan pada bagian manapun dari program tidak terkait pada bagian tertentu program.
  2. Memiliki sifat transparan, bila melakukan modifikasi maka perubahan akan dirasakan oleh bagian program yang menggunakan modul tersebut.
  3. Menghindari efek diluar perencanaan, dengan demikian akan mereduksi kemungkinan adanya hasil imbas pemrosesan yang di luar perencanaan semula.
Dua hal yang mendasar dalam enkapsulasi yakni :
Information hiding
Sebelumnya kita dapat mengakses anggota class baik berupa atribut maupun method secara langsung dengan menggunakan objek yang telah kita buat. Hal ini dikarenakan akses kontrol yang diberikan kepada atribut maupun method yang ada di dalam class tersebut adalah 'public'. Kita dapat menyembunyikan informasi dari suatu class sehingga anggota class tersebut tidak dapat diakses dari luar, caranya adalah hanya dengan memberikan akses kontrol 'private' ketika mendeklarasikan atribut atau method. Proses ini disebut dengan information hiding.

Interface to access data
Jika kita telah melakukan information hiding terhadap suatu atribut pada suatu class, lalu bagaimana cara melakukan perubahan terhadap atribut yang kita sembunyikan tersebut, caranya adalah dengan membuat suatu interface berupa method untuk menginisialisasi atau merubah nilai dari suatu atribut tersebut.

              Konsep enkapsulasi sangat penting dilakukan untuk menjaga kebutuhan program agar dapat diakses sewaktu-waktu, sekaligus menjaga program tersebut. Dalam kehidupan sehari hari enkapsulasi dapat dimisalkan sebagai arus listrik pada generator, dan sistem perputaran generator untuk menghasilkan arus listrik. Kerja arus listrik tidak mempengaruhi kerja dari sistem perputaran generator, begitu pula sebaliknya. Karena didalam arus listrik tersebut, kita tidak perlu mengetahui bagaimana kinerja sistem perputaran generator, apakah generator berputar kebelakang atau ke depan atau bahkan serong. Begitu pula dalam sistem perputaran generator, kita tidak perlu tahu bagaimana arus listrik, apakah menyala atau tidak.
           Begitulah konsep kerja dari enkapsulasi, dia akan melindungi sebuah program dari akses ataupun intervensi dari program lain yang mempengaruhinya. Hal ini sangat menjaga keutuhan program yang telah dibuat dengan konsep dan rencana yang sudah ditentukan dari awal.

Contoh program:
class Anggota{  //kelas anggota berisi atribut yang memiliki modifier sehingga kelas main memiliki akses langsung ke atribut kelas anggota
 private String nama;  //private digunakan suppaya objek tidak diakses sembarangan
             private String hobby;
 public Anggota(String n, String hobby) {  //menginisialisasi isi dari atribut dalam kelas anggota
 this.nama = n;
 this.hobby = hobby;
             }
 public String tampilkanNama() {
 return nama;
 }
 public String tampilkanHobby() {
 return hobby;
 }
 public void usia() {
 System.out.println("Usia : 20");
 }
 public void JK() {
 System.out.println("Jenis Kelamin : Perempuan");
 }}

public class main{
             public static void main(String[] args) {
             System.out.println("======Biodata Anggota=====");
             Anggota Diny = new Anggota("Diny", "Bermain Keyboard");  //bentuk inisialisasinya, memanggil nama kelas Anggota dengan nama Diny diikuti dengan menjalankan method Anggota untuk mengisi variabel nama dan hobby
 System.out.println("Nama \t : " + Diny.tampilkanNama()); 
 System.out.println("Hobby \t : " + Diny.tampilkanHobby());  //perintah mencetak diikuti variabel yang telah dideklarasikan dan memanggilnya
 Diny.usia();
 Diny.JK();
 System.out.println();

 Anggota Dyas = new Anggota("Dyas", "Menyanyi");
 System.out.println("Nama \t : " + Dyas.tampilkanNama());
 System.out.println("Hobby \t : " + Dyas.tampilkanHobby());
 Dyas.usia();
 Dyas.JK();
 System.out.println();
 System.out.println("======Maacih yaaaa=====");
 }}  //untuk memanggil dan mencetak

Kalau mau lihat outputnya, di bawah ini yaa….

 Output :

No comments:

Post a Comment