Enkapsulasi

Materi Enkapsulasi dalam Pemrograman Berorientasi Objek

1. Konsep Dasar

  • Enkapsulasi atau information hiding : konsep dalam OOP yang menyembunyikan detail internal suatu objek dari pengguna.
  • Contoh: sepeda dan vacuum cleaner, pengguna cukup menekan tuas atau tombol tanpa perlu memahami proses teknis di baliknya. Hal ini memudahkan interaksi karena pengguna hanya berfokus pada fungsinya, bukan cara kerjanya

2. Konstruktor

  • Nama Kelas: Nama konstruktor harus sama dengan nama class
  • Atribut: Konstruktor tidak memiliki tipe data return
  • Metode: Konstruktor tidak boleh menggunakan modifier abstract, static, final, dan syncronizedNote: Di java kita dapat memiliki konstruktor dengan modifier private, protected, public or default.

3. Deklarasi Kelas dalam Java

  • Mahasiswa(String namaInput, int umurInput) adalah konstruktor
  • Konstruktor ini otomatis dijalankan saat objek mhs1 dibuat dengan keyword new.
  • Konstruktor menginisialisasi atribut nama dan umur berdasarkan input yang diberikan.
  • Contoh deklarasi:
       public class Mahasiswa {
           String nama;
           int umur;

               // Konstruktor
           public Mahasiswa(String namaInput, int umurInput) {
           nama = namaInput;
           umur = umurInput;
        }

            // Method untuk menampilkan data
          public void tampilkanInfo() {
          System.out.println("Nama: " + nama);
          System.out.println("Umur: " + umur);
       }

           // Method main untuk menjalankan program
         public static void main(String[] args) {
          // Membuat objek Mahasiswa, konstruktor akan otomatis dipanggil
         Mahasiswa mhs1 = new Mahasiswa("Budi", 20);
         mhs1.tampilkanInfo();
      }
}

5. Akses Modifier

  • Berguna untuk mengatur akses method, class, dan constructor
  • Terdapat 4 akses modifier :
    • private (hanya bisa di akses di kelas yang sama). 
    • default – hanya dapat diakses di dalam package yang sama.
    • protected – dapat diakases di luar package menggunakan subclass (membuat inheritance)
    • public – dapat diakases dari mana saja.
  • Modifier Kelas Sendiri Package Sama Subclass Luar Package Kelas Luar
    private
    (default)
    protected
    public

6. Getter Dan Setter

  • private menyembunyikan atribut dari luar kelas (enkapsulasi).
  • Setter (setNama, setUmur) digunakan untuk memberi nilai ke atribut.
  • Getter (getNama, getUmur) digunakan untuk membaca nilai atribut.
  • Contoh deklarasi:

    public class Mahasiswa {
        // Atribut dibuat private agar tidak bisa diakses langsung dari luar
        private String nama;
        private int umur;

        // Setter: digunakan untuk mengatur nilai atribut
        public void setNama(String nama) {
            this.nama = nama;
        }

        public void setUmur(int umur) {
            this.umur = umur;
        }

        // Getter: digunakan untuk mengambil nilai atribut
        public String getNama() {
            return nama;
        }

        public int getUmur() {
            return umur;
        }

        // Method main untuk menjalankan program
        public static void main(String[] args) {
            Mahasiswa mhs = new Mahasiswa();
            
            // Mengatur data menggunakan setter
            mhs.setNama("Ani");
            mhs.setUmur(19);

            // Mengambil data menggunakan getter
            System.out.println("Nama: " + mhs.getNama());
            System.out.println("Umur: " + mhs.getUmur());
        }
    }

7. Final

  • final adalah non-access modifier di Java yang digunakan untuk mencegah perubahan lebih lanjut terhadap variabel, method, maupun class.
  • Jika suatu variabel dideklarasikan sebagai final, maka nilainya tidak dapat diubah setelah diberi nilai pertama kali (bersifat konstan).
  • Method yang diberi modifier final tidak bisa di-override oleh subclass.
  • Contoh deklarasi pada method :

    class Hewan {
        public final void suara() {
            System.out.println("Hewan bersuara");
        }
    }

    class Kucing extends Hewan {
        public void suara() {           // Error! Tidak bisa override method final
            System.out.println("Meong");
        }
    }

  • Contoh deklarasi pada variabel:

    final int MAX_UMUR = 60;
    MAX_UMUR = 70; // Error! Nilai tidak bisa diubah