Encapsulation

Enkapsulasi/pengkapsulan(Encapsulation)

Enkapsulasi adalah pembungkus, pembungkus disini dimaksudkan untuk menjaga suatu proses program agar tidak dapat diakses secara sembarangan atau di intervensi oleh program lain. Konsep enkapsulasi sangat penting dilakukan untuk menjaga kebutuhan program agar dapat diakses sewaktu-waktu, sekaligus menjaga program tersebut.

Enkapsulasi juga merupakan suatu cara untuk menyembunyikan informasi detail dari suatu class. Dua hal yang mendasar dalam enkapsulasi yakni :

  • Information hiding.
  • Interface to access data.
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 dalam program
Belajar.Java
class belajar{
public String x =”Pintar”;
private String y = “Java”;
}
Pintar.Java
public class Pintar{
public static void main(String[]args){
Coba panggil = new Belajar();
System.out.println(“Panggil X : “+panggil.x);
System.out.println(“Panggil Y : “+panggil.y);
}}

Tipe public dan private mempunyai fungsi yang berbeda. Fungsi public yang terdapat dalam class Coba pada variable x, memungkinkan nilai dari variable x dapat diakses oleh class Belajar. Sedangkan variable y yang menggunakan fungsi private tidak dapat dipanggil didalam class Belajar.

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.

Contoh program sederhana Enkapsulasi pada Csharp :

</pre>
using System;

 namespace encap2
 {
 class baru
 {
 int alas;
 int tinggi;

 public baru()
 {
 Console.WriteLine(".....Property.....");
 Console.WriteLine();
 }
 public int Alas
 {
 set {alas = value;}
 get {return alas;}
 }
 public int Tinggi
 {
 set {tinggi = value;}
 get {return tinggi;}
 }
 public void nilai()
 {
 Console.WriteLine("Alas Segitiga = {0}", Alas);
 Console.WriteLine("Tinggi Segitiga = {0}", Tinggi);
 }
 public void Luas()
 {
 Console.WriteLine("Luas Segitiga = {0}",Alas*Tinggi/2);

 }
 }
 class Program
 {
 public static void Main(string[] args)
 {
 int alas = 5;
 int tinggi = 10;

 baru yup = new baru();
 yup.Alas = alas;
 yup.Tinggi = tinggi;

 yup.nilai();
 yup.Luas();

 Console.WriteLine();
 Console.Write("Press any key to continue . . . ");
 Console.ReadKey(true);
 }
 }
 }
<pre>

hasilnya ::encapc

note : bahwa field ini tidak langsung diakses oleh program lain
menggunakan method getter dan setter.

 

 

:: JAVA


</pre>
package encapsulation;
 import java.util.Set;

 class baru
 {
 int alas;
 int tinggi;

 public baru()
 {
 System.out.println(".....Property.....");
 System.out.println();
 }

 //set alas
 public void setAlas(int a)
 {
 this.alas = a;
 }
 //get panjang
 public int getAlas()
 {
 return alas;
 }
 //set tinggi
 public void setTinggi(int a)
 {
 this.tinggi = a;
 }
 public int getTinggi()
 {
 return tinggi;
 }
 public void Nilai()
 {
 System.out.println("Alas Segitiga : "+getAlas());
 System.out.println("Tinggi Segitiga : "+getTinggi());
 System.out.println();
 }
 public void Luas()
 {
 System.out.println("Luas Segitiga = "+getAlas()*getTinggi()/2);
 }
 }

 public class Main
 {
 public static void main(String[] args)
 {
 int alas = 8;
 int tinggi = 5;

 baru oyy = new baru();
 oyy.setAlas(alas);
 oyy.setTinggi(tinggi);

 oyy.Nilai();
 oyy.Luas();

 }
<pre>

::Hasilnya encapjava

::C++

</pre>
#include <iostream>

 using namespace std;

class baru
 {
 int alas;
 int tinggi;

 public : baru()
 {
 cout<<"....Luas Segitiga....."<<endl;
 cout<<endl;
 }
 //set alas
 public : void setAlas(int b)
 {
 alas = b;
 }
 public : int getAlas()
 {
 return alas;
 }
 //set tinggi
 public : void setTinggi(int b)
 {
 tinggi = b;
 }
 public : int getTinggi()
 {
 return tinggi;
 }
 public : void Nilai()
 {
 cout<<"Alas Segitiga : "<<getAlas()<<endl;
 cout<<"Tinggi Segitiga : "<<getTinggi()<<endl;
 cout<<endl;
 }
 public : void Luas()
 {
 cout<<"Luas Segitiga : "<<getAlas()*getTinggi()/2<<endl;
 }
 };


 int main(int argc, char *argv[])
 {
 int alas = 4;
 int tinggi = 5;

 baru yuk;
 yuk.setAlas(alas);
 yuk.setTinggi(tinggi);

 yuk.Nilai();
 yuk.Luas();

 cout<<endl;
 return 0;
 }

Hasilnya encap+

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s