Jumat, 30 Maret 2012

Apa Itu Enkapulasi dalam OOP??

Enkapsulasi adalah suatu cara untuk menyembunyikan informasi detail dari suatu class. Dua hal yang mendasar dalam enkapsulasi yakni :
• Information hiding.
• Interface to access data.
  • 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.

Enkapsulasi menunjuk pada prinsip dari menyembunyikan desain atau mengimplementasikan informasi yang tidak sesuai pada object yang ada. Menyembunyikan elemen dari penggunaan sebuah class dapat dilakukan dengan pembuatan anggota yang ingin Anda sembunyikan secara private.
Contoh berikut menyembunyikan field secret. Catatan bahwa field ini tidak langsung diakses oleh program lain menggunakan method getter dan setter.

class Encapsulation {
private int secret; //field tersembunyi
public boolean setSecret(int secret) {
if (secret < 1 || secret > 100) {
return false; }
this.secret = secret;
return true;
}
public getSecret() {
return secret;
}
}
1. Accessor Methods

Untuk mengimplementasikan enkapsulasi, kita tidak menginginkan sembarangobject dapat mengakses data kapan saja. Untuk itu, kita deklarasikan atribut dariclass sebagai private. Namun, ada kalanya dimana kita menginginkan object lain untuk dapat mengakses data private. Dalam hal ini kita gunakan accessor methods.
Accessor Methods digunakan untuk membaca nilai variabel pada class, baik berupa instance maupun static. Sebuah accessor method umumnya dimulai dengan penulisan get<namaInstanceVariable>Method ini juga mempunyai sebuah return value.
Sebagai contoh, kita ingin menggunakan accessor method untuk dapat membaca nama, alamat, nilai bahasa Inggris, Matematika, dan ilmu pasti dari siswa.
Mari kita perhatikan salah satu contoh implementasi accessor method.
public class StudentRecord
{
     private String name;
     :
     :
   public String getName(){
      return name;
   }
}
dimana,
public - Menjelaskan bahwa method tersebut dapat diakses dari object luar class
String - Tipe data return value dari method tersebut bertipe String
getName - Nama dari method
() - Menjelaskan bahwa method tidak memiliki parameter apapun
Pernyataan berikut,
return name;
dalam program kita menandakan akan ada pengembalian nilai dari nama instance variable
ke pemanggilan method. Perhatikan bahwa return type dari method harus sama dengan
tipe data seperti data pada pernyataan return. Anda akan mendapatkan pesan kesalahan
sebagai berikut bila tipe data yang digunakan tidak sama :
StudentRecord.java:14: incompatible types
found : int
required: java.lang.String
return age;
^
1 error
Contoh lain dari penggunaan accessor method adalah getAverage,
public class StudentRecord
{
   private String name;
   :
   :
  public double getAverage(){
     double result = 0;
     result = ( mathGrade+englishGrade+scienceGrade )/3;
    return result;
  }
}
Method getAverage() menghitung rata – rata dari 3 nilai siswa dan menghasilkan nilai
return value dengan nama result.

2. Mutator Methods

Bagaimana jika kita menghendaki object lain untuk mengubah data? Yang dapat kita lakukan adalah membuat method yang dapat memberi atau mengubah nilai variable dalam
class, baik itu berupa instance maupun staticMethod semacam ini disebut dengan mutator
methods. Sebuah mutator method umumnya tertulisset<namaInstanceVariabel>.
Mari kita perhatikan salah satu dari implementasi mutator method :
public class StudentRecord
{
   private String name;
   :
   :
   public void setName( String temp ){
     name = temp;
   }
}
dimana,
public - Menjelaskan bahwa method ini dapat dipanggil object luar class
void - Method ini tidak menghasilkan return value
setName - Nama dari method
(String temp) - Parameter yang akan digunakan pada method
Pernyataan berikut :
name = temp;
mengidentifikasi nilai dari temp sama dengan name dan mengubah data padainstance variable name.
Perlu diingat bahwa mutator methods tidak menghasilkan return value. Namun berisi beberapa argumen dari program yang akan digunakan oleh method.

0 komentar:

Posting Komentar