Created
September 22, 2025 01:49
-
-
Save ReadTheFuckingManual/89f02096da70349d08735c31c37dea9b to your computer and use it in GitHub Desktop.
Revisions
-
ReadTheFuckingManual created this gist
Sep 22, 2025 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,57 @@ # 📌 Penerapan Pilar OOP pada Aplikasi Absensi ## 1. Encapsulation (Enkapsulasi) **Definisi:** Menyembunyikan detail data atau cara kerja internal dari sebuah objek, dan hanya membuka akses seperlunya. **Contoh pada aplikasi absensi:** - Data absensi menyimpan informasi sensitif seperti **lokasi GPS** dan **ID perangkat**. - HR hanya butuh melihat **jam masuk** dan **keterlambatan**. - Dengan enkapsulasi, detail teknis disembunyikan, hanya data relevan yang ditampilkan di dashboard. --- ## 2. Inheritance (Pewarisan) **Definisi:** Sebuah class dapat mewarisi atribut dan method dari class lain. **Contoh pada aplikasi absensi:** - Class `Karyawan` memiliki atribut dasar: **nama**, **ID**, **divisi**. - Dari class ini diturunkan: - `KaryawanWFO` → wajib validasi lokasi kantor saat absen. - `KaryawanWFH` → cukup absen melalui aplikasi tanpa validasi lokasi. - Dengan inheritance, kita tidak perlu menulis ulang atribut dasar karyawan. --- ## 3. Polymorphism (Polimorfisme) **Definisi:** Satu interface atau method bisa memiliki banyak perilaku berbeda. **Contoh pada aplikasi absensi:** - Method `kirimNotifikasi()` bisa memiliki perilaku berbeda tergantung jenis notifikasi: - Email → mengirim pesan ke alamat email. - Push Notification → mengirim alert ke aplikasi di smartphone. - WhatsApp → mengirim pesan ke nomor WA. - HR cukup memanggil satu fungsi umum, hasil akhirnya bergantung pada jenis media. --- ## 4. Abstraction (Abstraksi) **Definisi:** Menyembunyikan detail implementasi yang rumit, hanya menampilkan konsep utamanya. **Contoh pada aplikasi absensi:** - Setiap divisi punya aturan keterlambatan berbeda: - Divisi A → telat jika lewat 5 menit. - Divisi B → telat jika lewat 15 menit. - Divisi C → jam fleksibel. - Dengan abstraksi, sistem hanya mendefinisikan **“aturan keterlambatan”** secara umum. - Implementasi detail masing-masing divisi dibuat sesuai kebijakan masing-masing. --- ## ✨ Ringkasan Tabel | Pilar OOP | Definisi | Contoh Aplikasi Absensi | |-----------------|--------------------------------------------|-----------------------------------------------------------------------------------------| | Encapsulation | Menyembunyikan detail internal | GPS & device ID disembunyikan, HR hanya lihat jam masuk & keterlambatan | | Inheritance | Pewarisan atribut & method | Class `KaryawanWFO` dan `KaryawanWFH` mewarisi atribut dasar dari `Karyawan` | | Polymorphism | Satu method, banyak perilaku | `kirimNotifikasi()` bisa berupa email, push notification, atau WhatsApp | | Abstraction | Menyederhanakan konsep, sembunyikan detail | Aturan keterlambatan berbeda per divisi, tapi sistem hanya pakai “aturan keterlambatan” |