OOP Lanjutan di JavaScript: Encapsulation, Polymorphism, dan Static Method

By | 19 October 2025

Dalam pengembangan aplikasi skala besar, menulis kode yang rapi saja tidak cukup. Kamu perlu menerapkan prinsip Object-Oriented Programming (OOP) secara lebih mendalam agar kode mudah dipelihara, fleksibel, dan aman. Di tahap ini, tiga konsep penting yang wajib dipahami adalah Encapsulation, Polymorphism, dan Static Method.

Melalui penerapan OOP Lanjutan di JavaScript, pengembang dapat menciptakan sistem yang modular dan terkontrol, di mana setiap bagian kode memiliki tanggung jawabnya sendiri. Konsep ini sering diterapkan pada framework besar seperti React, Vue, dan Node.js untuk menjaga stabilitas dan efisiensi aplikasi.

Encapsulation (Enkapsulasi)

Encapsulation adalah cara melindungi data agar tidak dapat diakses atau diubah secara langsung dari luar class. Dengan konsep ini, data menjadi lebih aman karena hanya bisa diakses melalui metode tertentu.

Di JavaScript modern (ES2022 ke atas), enkapsulasi bisa dilakukan menggunakan private field yang diawali dengan tanda #.

Contoh:

class AkunBank {
  #saldo = 0; // properti private

  constructor(nama) {
    this.nama = nama;
  }

  setoran(jumlah) {
    this.#saldo += jumlah;
    console.log(`${this.nama} menabung Rp${jumlah}`);
  }

  tarik(jumlah) {
    if (jumlah > this.#saldo) {
      console.log("Saldo tidak cukup!");
    } else {
      this.#saldo -= jumlah;
      console.log(`${this.nama} menarik Rp${jumlah}`);
    }
  }

  lihatSaldo() {
    console.log(`Saldo ${this.nama}: Rp${this.#saldo}`);
  }
}

const akun1 = new AkunBank("Budi");
akun1.setoran(500000);
akun1.tarik(200000);
akun1.lihatSaldo();

Penjelasan:

  • #saldo adalah variabel private yang hanya bisa diakses di dalam class.

  • Data tidak bisa diubah langsung dari luar class (akun1.#saldo akan error).

  • Semua interaksi dilakukan melalui metode publik seperti setoran() dan tarik().

Encapsulation melindungi data dari akses langsung dan mencegah manipulasi yang tidak disengaja.

Polymorphism (Polimorfisme)

Polymorphism berarti satu metode bisa memiliki perilaku berbeda tergantung konteks objeknya. Dengan polimorfisme, kamu bisa menggunakan nama metode yang sama di class berbeda, namun hasilnya bisa disesuaikan dengan kebutuhan.

Contoh:

class Hewan {
  suara() {
    console.log("Hewan mengeluarkan suara...");
  }
}

class Kucing extends Hewan {
  suara() {
    console.log("Meow!");
  }
}

class Anjing extends Hewan {
  suara() {
    console.log("Guk guk!");
  }
}

const hewan1 = new Hewan();
const kucing1 = new Kucing();
const anjing1 = new Anjing();

hewan1.suara();
kucing1.suara();
anjing1.suara();

Output:

Hewan mengeluarkan suara...
Meow!
Guk guk!

Penjelasan:

  • Ketiga class memiliki metode suara(), tapi masing-masing menampilkan hasil berbeda.

  • Polymorphism membuat kode lebih fleksibel — kamu tidak perlu tahu tipe objeknya untuk memanggil metode yang sama.

Polimorfisme sangat berguna dalam aplikasi kompleks, misalnya ketika kamu memiliki berbagai tipe objek yang dapat diperlakukan secara seragam (misalnya sistem notifikasi, kendaraan, atau user role).

Static Method (Metode Statis)

Static Method adalah metode yang dapat dipanggil langsung dari class tanpa perlu membuat objek. Biasanya digunakan untuk fungsi utilitas atau logika umum yang tidak tergantung pada data instance.

Contoh:

class MathHelper {
  static tambah(a, b) {
    return a + b;
  }

  static kali(a, b) {
    return a * b;
  }
}

console.log(MathHelper.tambah(5, 3)); // Output: 8
console.log(MathHelper.kali(4, 2));   // Output: 8

Penjelasan:

  • Metode tambah() dan kali() dipanggil langsung melalui nama class (MathHelper).

  • Tidak perlu membuat instance (new MathHelper()).

  • Static method cocok untuk fungsi global, seperti validasi data, konversi format, atau perhitungan matematis.

Studi Kasus: Sistem Akun Pengguna

Mari gabungkan ketiga konsep OOP lanjutan ini ke dalam satu contoh nyata:

class Pengguna {
  #password; // encapsulation

  constructor(username, password) {
    this.username = username;
    this.#password = password;
  }

  login(inputPassword) {
    if (inputPassword === this.#password) {
      console.log(`${this.username} berhasil login.`);
    } else {
      console.log("Password salah!");
    }
  }

  static infoAplikasi() {
    console.log("Aplikasi Login Versi 1.0");
  }
}

class Admin extends Pengguna {
  login(inputPassword) {
    if (inputPassword === "admin123") {
      console.log(`Admin ${this.username} berhasil login dengan akses penuh.`);
    } else {
      console.log("Akses admin ditolak!");
    }
  }
}

// Menggunakan static method
Pengguna.infoAplikasi();

// Menggunakan enkapsulasi dan polimorfisme
const user1 = new Pengguna("andi", "12345");
const admin1 = new Admin("budi", "admin123");

user1.login("12345");
admin1.login("admin123");

Output:

Aplikasi Login Versi 1.0
andi berhasil login.
Admin budi berhasil login dengan akses penuh.

Manfaat Menerapkan OOP Lanjutan di JavaScript

  1. Keamanan data lebih baik (Encapsulation)
    Data sensitif terlindungi dari akses langsung.

  2. Kode fleksibel (Polymorphism)
    Satu metode bisa digunakan oleh berbagai class dengan perilaku berbeda.

  3. Struktur efisien (Static Method)
    Fungsi umum dapat digunakan tanpa membuat objek baru.

  4. Lebih mudah dikembangkan
    Cocok untuk proyek berskala besar dengan banyak class dan modul.

Pengembangan Lebih Lanjut

Kamu bisa mengembangkan konsep ini ke dalam:

  • Sistem autentikasi pengguna yang aman dengan hashing password.

  • Aplikasi berbasis class modular seperti sistem manajemen produk.

  • Pembuatan utility helper untuk validasi form, konversi data, atau kalkulasi.

Dengan memadukan OOP dasar dan lanjutan, JavaScript kamu akan lebih kuat, terorganisir, dan siap untuk proyek profesional.

Kesimpulan

Menerapkan OOP Lanjutan di JavaScript melalui Encapsulation, Polymorphism, dan Static Method adalah langkah penting untuk menjadi developer JavaScript tingkat lanjut. Konsep ini bukan hanya membuat kode lebih rapi, tapi juga meningkatkan keamanan, fleksibilitas, dan efisiensi aplikasi.

Mulailah berlatih dengan contoh-contoh kecil seperti di atas, lalu terapkan pada proyek nyata. Dengan memahami dasar dan lanjutan OOP, kamu akan menulis kode yang lebih profesional dan siap membangun aplikasi modern berbasis JavaScript.