Konsep Oop Encapsulation


Encapsulation biasa disebut dengan Information Hidding. Encapsulation merupakan kombinasi dari data dan method pada paket suatu kelas dan menyembunyikan implementasi detail dari user terhadap object. Hak jalan masuk diatur dalam sebuah access modifier yang diantaranya yakni :

- private : hanya sanggup diakses oleh kelas itu sendiri
- protected : hanya sanggup diakses dalam package dan kelas turunannya
- public : sanggup diakses dimanapun
- default : hanya sanggup diakses dalam package saja

Manfaat dari encapsulation :
- Modularitas : Source code dari sebuah class sanggup dikelola secara independen dari source code class yang lain. Perubahan internal pada sebuah class tidak akan besar lengan berkuasa bagi class yang menggunakannya.
- Information Hiding : Penyembunyian gosip yang tidak perlu diketahui objek lain.

Untuk mengakses gosip sanggup memakai mediator method yang dikenal dengan setter dan getter.
Sebagai contoh, buatlah 3 kelas masing-masing di package yang berbeda.

Kelas berdiri berada di package1, atributnya diberi jalan masuk modifier protected

package package1;  /**  *  * @author Wim Sonevel  */ public class berdiri {     protected String nama;      public bangun(String nama){         this.nama = nama;     }      public String getNama(){         return nama;     } } 

Kelas duaD berada di package1 juga dengan atributnya diberi jalan masuk modifier private dan subclass dari kelas bangun

package package1;  /**  *  * @author Wim Sonevel  */ public class duaD extends bangun{     private int panjang;     private int lebar;     private int sisi;      public duaD(String nama, int sisi){         super(nama);         this.sisi = sisi;     }      public duaD(String nama, int panjang, int lebar){         super(nama);         this.panjang = panjang;         this.lebar = lebar;     }      protected void hitungLuasPersegi(){         int luas = sisi * sisi;         System.out.println("Luas = "+luas);     }     protected void hitungLuasPersegiPanjang(){         int luas = panjang * lebar;         System.out.println("Luas = "+luas);     }     protected void hitungKelilingPersegi(){         int keliling = 4 * sisi;     }     protected void hitungKelilingPersegiPanjang(){         int keliling = 2 * (panjang+lebar);     }      public int getSisi(){         return sisi;     }     public int getPanjang(){         return panjang;     }     public int getLebar(){         return lebar;     } } 

Kelas TigaD berada di package2 dengan atribut diberi jalan masuk modifier private dan subclass dari kelas duaD. Karena kelas duaD ada di package1 maka kita perlu import untuk memanggil kelas tersebut.

package package2;  import package1.*;  /**  *  * @author Wim Sonevel  */ public class tigaD extends duaD{     public int tinggi;      public tigaD(String nama, int sisi){         super(nama, sisi);     }      public tigaD(String nama, int panjang, int lebar, int tinggi){         super(nama, panjang, lebar);         this.tinggi = tinggi;     }      public void hitungVolumeKubus(){         int volume = (int) Math.pow(getSisi(),2);         System.out.println("Volume Kubus = "+volume);     }          public void hitungVolumeBalok(){         int volume = getPanjang() * getLebar() * tinggi;         System.out.println("Volume Balok = "+volume);     } } 

Terakhir kelas mainApp berada di package3. Kelas ini merupakan main class yang akan dipakai untuk memanggil kelas lainnya.

package package3;  import package1.duaD; import package2.tigaD;  /**  *  * @author Wim Sonevel  */ public class mainApp {     public static void main(String[]args){         duaD dua = new duaD("Persegi", 4);         //this is protected, so it can't be access         //dua.hitungLuasPersegi();         tigaD tiga = new tigaD("Kubus", 4);         tiga.hitungVolumeKubus();         tigaD tiga2 = new tigaD("Balok", 3, 4, 5);         tiga2.hitungVolumeBalok();     } } 

Untuk melihat akibatnya silahkan jalankan kelas mainApp.

Output :
Volume Kubus = 16
Volume Balok = 60

Sekian dan biar bermanfaat.
Happy Coding :)

Comments

Popular posts from this blog

Implementasi Basis Data

(Tutorial Ios) Custom Uitableviewcell In Uitableview

(Tutorial Android) Image Loader Using Glide