Skip to content

Instantly share code, notes, and snippets.

@ReadTheFuckingManual
Created September 22, 2025 01:49
Show Gist options
  • Save ReadTheFuckingManual/89f02096da70349d08735c31c37dea9b to your computer and use it in GitHub Desktop.
Save ReadTheFuckingManual/89f02096da70349d08735c31c37dea9b to your computer and use it in GitHub Desktop.

Revisions

  1. ReadTheFuckingManual created this gist Sep 22, 2025.
    57 changes: 57 additions & 0 deletions OOP.md
    Original 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” |