Skip to content

Encapsulation

Girish encapsulation smell

Semua smell di dalam grup ini berkaitan dengan kesalahan dalam merancang enkapsulasi dalam interface/abstraksi.

Filosofi

Sebuah mobil mempunyai setir, pedal gas, dan pedal rem. Pedal rem berfungsi untuk melakukan pengereman mobil. Pengereman mobil sendiri mempunyai beberapa jenis, salah satunya adalah pengereman Anti-locking Braking System (ABS). Terkait terhadap kasus tersebut kita sebagai driver tentunya tidak perlu mengetahui detail mengenai sistem pengereman, karena kita cukup mengetahui pengereman tersebut melalui pedal rem kita sehingga detail sistem pengereman seperti ABS tidak diketahui secara langsung oleh kita.

Prinsip Encapsulation

Girish encapsulation principles

Menurut Girish Suryanarayana dkk, terdapat 2 prinsip encapsulation yaitu:

  • Hide implementation details - Class tidak perlu mengetahui detail implementasi member dan algoritma yang dimiliki oleh abstraksi.
  • Hide variations - Class tidak perlu mengetahui variasi-variasi yang dimiliki pada hierarki sehingga ia cukup mengetahui implementasi abstraknya saja.

Berdasarkan pada pengamatan abstraction smell, terdapat pelanggaran prinsip encapsulation antara lain:

Encapsulation smellPelanggaran prinsip encapsulationPenyebabMartin Fowler smells
Deficient EncapsulationHide implementation detailsAdanya akses terhadap member abstraksi, terutama jika access modifier publicInappropriate Intimacy
Leaky EncapsulationHide implementation details- List: Data diperoleh dengan swallow copy bukan deep copy
- Penamaan method yang mengandung detail implementasi
Inappropriate Intimacy
Missing EncapsulationHide variationsa. Tidak ada pembagian Class
b. Hierarki bucin alias ada hierarki kembar
Divergent Changes, Parallel Inheritence
Unexploited EncapsulationHide variationsPenggunaan if-else atau switch statement dalam object type checkingSwitch Statements

Repository ini hanyalah rangkuman dari buku Suryanarayana et al. dengan sedikit tambahan informasi lain. Diharapkan mahasiswa juga membaca sumber aslinya pada bab 4 halaman 61 - 91.

Created by Saugi