Top Banner
Enkapsulasi Pemrograman Berorientasi Objek Georgius Rinaldo [email protected]
15

OOP - Enkapsulasi

Jul 08, 2015

Download

Engineering

KuliahKita

Konsep enkapsulasi pada pemrograman berorientasi objek
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: OOP - Enkapsulasi

EnkapsulasiPemrograman

Berorientasi Objek

Georgius Rinaldo

[email protected]

Page 2: OOP - Enkapsulasi

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.

Page 3: OOP - Enkapsulasi

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.

Page 4: OOP - Enkapsulasi

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.

Page 5: OOP - Enkapsulasi

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.

Page 6: OOP - Enkapsulasi

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.

Page 7: OOP - Enkapsulasi

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)

Page 8: OOP - Enkapsulasi

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.

Page 9: OOP - Enkapsulasi

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.

Page 10: OOP - Enkapsulasi

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.

Page 11: OOP - Enkapsulasi

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.

Page 12: OOP - Enkapsulasi

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

Page 13: OOP - Enkapsulasi

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

Page 14: OOP - Enkapsulasi

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.

Page 15: OOP - Enkapsulasi

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;

}

}