My Weblog

Just another WordPress.com weblog

Encapsulation

Encapsulation

Sebuah class yang baik tidak akan menyatakan/memperlihatkan semua informasi mengenai dirinya kepada pihak luar. Class yang baik akan memilah setiap informasi di dalam dirinya. Mana informasi yang tidak boleh diketahui pihak luar, mana informasi yang boleh diketahui pihak luar, mana data yang boleh diubah dari luar, mana data yang tidak boleh diubah, dan sebagainya.

Contoh:
Misalkan terdapat class Manusia yang memiliki 3 buah field, yaitu nama, tahun lahir, dan umur. Dari class ini kita dapat menentukan field mana yang seharusnya dapat diakses dan mana yang tidak boleh. Field nama dan tahun lahir, boleh dibaca dan diubah dari luar class tersebut (jika ternyata ada kesalahan input nama atau tahun lahir). Sedangkan field umur hanya dapat dibaca dan tidak boleh diubah dari luar class tersebut. Mengapa? Karena jika ada seseorang yang secara tidak sengaja mengubah umur dari sebuah object Person, maka akan terjadi ketidakkonsistenan antara tahun lahir dan umur yang disimpan.

Agar data-data suatu class dapat dilindungi, maka perlu dilakukan enkapsulasi (pembungkusan) terhadap setiap field milik class tersebut. Selain melindungi data suatu class dari pihak luar, enkapsulasi juga bermanfaat untuk melakukan validasi.

Contoh:
Jika hak akses semua field class Person adalah public, maka pihak luar dapat mengisi tahun lahir atau umur dengan nilai negatif. Hal ini tentu saja akan menyebabkan kesalahan. Anda mungkin akan berkata, “Saya akan melakukan validasi terhadap nilai yang diinput sebelum akhirnya saya memasukkan nilai tersebut ke dalam field umur/tahun lahir.” Hal ini mungkin saja Anda lakukan, tapi coba bayangkan jika dalam program yang Anda buat, Anda harus mengganti nilai sebuah field yang dengan syarat tertentu sebanyak 100 kali. Anda juga harus melakukan validasi sebanyak 100 kali, dan besar kemungkinannya akan ada validasi yang terlupakan oleh Anda.

Dengan enkapsulasi, sebuah object akan dapat menyaring sendiri nilai yang ia peroleh dan mengganti nilai field dirinya sesuai dengan ketentuan yang seharusnya.
Bagaimana Melakukan Enkapsulasi

Ada 2 langkah yang diperlukan untuk melakukan enkapsulasi:

1. Hak akses dari setiap field di dalam class tersebut diubah menjadi private.
2. Buatlah getter dan setter method sesuai dengan kebutuhan. Hak akses dari getter/setter method ini harus public agar dapat dipanggil dari luar class.

Getter/Setter Method

Getter method adalah method perantara yang berfungsi untuk mengambil nilai dari sebuah field tertentu di dalam class. Setter method adalah method perantara yang berfungsi untuk mengganti nilai sebuah field tertentu dengan nilai yang diberikan dari luar class (tentu saja setelah disaring terlebih dahulu oleh setter method yang bersangkutan).

public class Manusia {
    //Hak akses private
    private String  Nama;
    private int TahunSekarang, TahunLahir, Umur;
   //Getter Method untuk nama
   public String GetNama()
   {
      return Nama;
   }
   //Setter Method untuk nama
   public void SetNama(String N) {
      Nama = N;
   }
   //Getter Method untuk tahun Sekarang
    public int GetTahunSekarang() {
        return TahunSekarang;
    }
    //Settter Method untuk tahun Sekarang
    public void SetTahunSekarang (int TS) {
        TahunSekarang = TS;
    }
   //Getter Method untuk tahun lahir
   public int GetTahunLahir() {
      return TahunLahir;
   }
   //Setter Method untuk tahun lahir
   public void SetTahunLahir(int Tahun) {
      if(Tahun < 1900)
         TahunLahir = 1900;
      else
         TahunLahir = Tahun;
   }
   void Umur(){
       Umur = TahunSekarang - TahunLahir;
       System.out.println ("Umur = " + Umur);
   }
}

    public static void main(String[] args) {
        // TODO code application logic here

        Manusia data1=new Manusia ();

        data1.SetNama("Rajim");
        data1.SetTahunSekarang(2009);
        data1.SetTahunLahir(1970);

        System.out.println ("Nama = "+ data1.GetNama());
        System.out.println ("Tahun Lahir = "+ data1.GetTahunLahir());

        data1.Umur();

    }

}

Kesimpulan

Dalam pembahasan di atas, kita dapat menyimpulkan setidaknya ada 2 buah manfaat enkapsulasi, yaitu:

1. Membatasi hak akses terhadap data/informasi di dalam sebuah class.
2. Melakukan validasi terhadap nilai yang akan di-assign pada field sebuah class.

Ref : http://erico-khewanxing.spaces.live.com
** program java nya aku edit dikit2 ya bos🙂 **

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: