oop - enkapsulasi

Post on 08-Jul-2015

177 Views

Category:

Engineering

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

Konsep enkapsulasi pada pemrograman berorientasi objek

TRANSCRIPT

EnkapsulasiPemrograman

Berorientasi Objek

Georgius Rinaldo

dodo@kuliahkita.com

Pendahuluan

Maksud dari enkapsulasi adalah pembungkusan.

Sama seperti kapsul obat. Obat dibungkus di dalam kapsul supaya tidak terurai dan rapi. Obat kapsul juga menyembunyikan isinya yang membuat kita tidak tahu apa isi di dalamnya.

Begitu juga dengan enkapsulasi pada pemrograman berorientasi objek.

Enkapsulasi pada Pemrograman

Tujuan enkapsulasi pada pemrograman adalah pembungkusan data teknis (atribut dan method) dari pengguna, bukan penyembunyian (information hiding).

Data teknis ini dibungkus dalam sebuah unit yang telah dijelaskan sebelumnya yaitu kelas atau class.

Jadi bisa dianalogikan bahwa data teknis adalah obat, dan kelas adalah kapsulnya sehingga menjadi rapi.

Enkapsulasi pada Pemrograman - 2

Dengan enkapsulasi dalam sebuah kelas inilah yang membuat pemrograman berorientasi objek lebih fleksibel untuk memodelkan kasus nyata.

Penggunaan kembali kelas-kelas menjadi lebih mudah dibanding dengan pendefinisian fungsi-fungsi di pemrograman berparadigma prosedural.

Enkapsulasi dan Penyembunyian Informasi

Inti dari enkapsulasi adalah membungkus (bundling) data dan method, bukan menyembunyikan informasi.

Enkapsulasi memang memfasilitasi penyembunyian informasi, tetapi tidak menjamin keamanan data.

Penyembunyian informasi berusaha melindungi kelas klien (client class) dari kerja internal kelas, berbeda dengan makna enkapsulasi sebenarnya.

Konsep Enkapsulasi

Dinbandingkan penyembunyian informasi, konsep ini lebih berhubungan dengan modularitas dan abstraksi.

Setiap program yang baik memiliki abstraksi dan modularitas terhadap bagian-bagian tertentu pada kelas / objeknya.

Abstraksi

Jika menganalogikan abstraksi dengan mobil, terdapat setir, pedal gas, rem, dll. Kita dapat menggunakannya, tapi kita tidak tahu tepatnya bagaimana komponen tersebut bekerja. Itulah abstraksi pada dunia nyata.

Begitu juga program, terdapat sebuah kelas yang terdiri dari berbagai fungsi dan prosedur. Kita bisa memakainya, tetapi kita belum tentu bisa mengetahui cara kerja dari fungsi atau prosedur tersebut dengan berinteraksi dengan antarmuka saja (interface)

Contoh Abstraksi

Contoh abstraksi paling sederhana adalah getter dan setter. Tujuannya masing-masing adalah untuk mengambil dan menetapkan nilai dari data pada sebuah objek.

Contoh: Terdapat sebuah class Bola dengan atribut berat dan diameter. Maka terdapat 2 getter yaitu getBerat dan getDiameter. Begitu juga terdapat 2 setter yaitu setBerat dan setDiameter.

Modularity

Modularity adalah sebuah konsep yang memisah-misah menjadi beberapa modul kecil dengan fungsi spesifiknya untuk mempermudah pemakaian kembali (reusability).

Contoh: Pemisahan fungsi hitungLuas dengan hitungKeliling pada kelas BangunDatar.

Mengapa Enkapsulasi?

Selain merapikan, Kita mencegah modifikasi data secara langsung, bukan penyembunyian datanya.

Dalam kasus ini memang tetap membuat atribut dari data menjadi tidak dapat diakses dari luar (private), sehingga data tersembunyi dan hanya boleh diakses atau dimodifikasi oleh method pada kelas tersebut.

Mengapa Enkapsulasi? - 2

Mengapa perlu perlindungan terhadap akses langsung?

Asumsikan seperti ini:Kita punya 2 objek: objek “Jahat” dan objek “Akun”. Kita akan memanggil keduanya. Misalkan objek Akun memiliki atribut “saldo”. Jika atribut tidak dibuat privat (public), Kita dapat menggunakan objek jahat untuk memanipulasi data “saldo” pada objek Akun.

Dengan metode ini, berarti objek Jahat hanya bisa memakai metode pada objek Akun untuk memanipulasi data. Misal objek Akun memiliki method “tambahSaldo” dan dipanggil oleh objek Jahat yang ingin memanipulasi dengan menambah saldo negatif sehingga berkurang.

Objek Jahat Objek Akun-500000

Mengapa Enkapsulasi? - 3

tambahSaldo()

saldo = 1000000

fungsiJahat()

dataJahat

Karena enkapsulasi, Objek Jahat memang tetap bisa mengirimkan nilai untuk melakukan “tambahSaldo” dari objek Akun, tetapi objek Jahat tidak tahu logika operasi metode tambahSaldo (abstraksi) bahwa jika saldo yang ditambah kurang dari 0, maka tidak akan dilakukan.

Objek Jahat Objek Akun-500000

Mengapa Enkapsulasi? - 4

tambahSaldo()

saldo = 1000000

fungsiJahat()

dataJahat

Pesan (Message)

Untuk berkomunikasi antara objek satu dengan lainnya, dikirimkan pesan.

Pesan itu dikirimkan melalui metode yang ada pada sebuah objek atau ketika pembuatan sebuah objek.

Contoh Implementasipublic class Hewan { // kelas yang terenkapsulasi baik

private String nama; // data atribut di set privat

private int umur; // data yang bersifat privat tidak bisa diakses sembarang dari luar

public int getUmur() { // pembentukan getter dan setter merupakan bentuk abstraksi

return umur; // terdapat getter untuk tiap data atribut

} // getter ini untuk mengambil data dari kelas yang ada

public String getNama() {

return nama;

}

public void setUmur(int umurBaru) { // terdapat juga setter untuk tiap data atribut

umur = umurBaru;

}

public void setNama(String namaBaru) {

nama = namaBaru;

}

}

top related