Lampung Dev – Pemrograman Berbasis Objek (Object-Oriented Programming, OOP) adalah paradigma pemrograman yang menggunakan “objek” untuk merepresentasikan data dan metode. OOP membantu dalam membuat kode yang lebih modular, terorganisir, dan mudah dipelihara. Dalam artikel ini, kita akan membahas konsep dasar OOP dan bagaimana mengimplementasikannya menggunakan JavaScript.

Baca juga: Cara Menggunakan Foreach di Node.js?

Konsep Dasar Pemrograman Berbasis Objek

  1. Objek Objek adalah entitas yang memiliki atribut (properti) dan perilaku (metode). Objek adalah instansiasi dari sebuah kelas.
    • Contoh: Mobil memiliki atribut seperti warna dan model, serta metode seperti bergerak dan berhenti.
  2. Kelas (Class) Kelas adalah cetak biru atau template untuk membuat objek. Kelas mendefinisikan atribut dan metode yang akan dimiliki oleh objek.
    • Contoh: Kelas Mobil mendefinisikan atribut seperti warna dan model, serta metode seperti bergerak() dan berhenti().
  3. Enkapsulasi (Encapsulation) Enkapsulasi adalah konsep menyembunyikan detail implementasi dari pengguna dan hanya mengekspos metode dan properti yang diperlukan. Ini membantu dalam melindungi data dan memastikan integritas objek.
    • Contoh: Menggunakan metode getter dan setter untuk mengakses dan mengubah nilai properti secara aman.
  4. Pewarisan (Inheritance) Pewarisan adalah mekanisme dimana sebuah kelas dapat mewarisi properti dan metode dari kelas lain. Ini memungkinkan penggunaan kembali kode dan memperluas fungsionalitas kelas yang ada.
    • Contoh: Kelas MobilBalap mewarisi dari kelas Mobil dan menambahkan properti atau metode tambahan.
  5. Polimorfisme (Polymorphism) Polimorfisme memungkinkan objek untuk menggunakan metode yang sama dengan cara yang berbeda. Ini bisa dicapai melalui overloading (menimpa) metode di kelas anak.
    • Contoh: Metode bergerak() bisa diimplementasikan berbeda di kelas Mobil dan MobilBalap.

Implementasi OOP dengan JavaScript

Mari kita lihat bagaimana konsep-konsep ini dapat diimplementasikan dalam JavaScript.

1. Membuat Kelas dan Objek

class Mobil {
    constructor(merk, model, tahun) {
        this.merk = merk;
        this.model = model;
        this.tahun = tahun;
    }

    bergerak() {
        console.log(`${this.merk} ${this.model} bergerak.`);
    }

    berhenti() {
        console.log(`${this.merk} ${this.model} berhenti.`);
    }
}

// Membuat objek dari kelas Mobil
const mobilSaya = new Mobil('Toyota', 'Corolla', 2020);
mobilSaya.bergerak(); // Output: Toyota Corolla bergerak.
mobilSaya.berhenti(); // Output: Toyota Corolla berhenti.

Penjelasan:

  • Di sini, class Mobil mendefinisikan sebuah kelas dengan konstruktor yang menerima merk, model, dan tahun sebagai parameter.
  • Mobil memiliki dua metode: bergerak dan berhenti, yang mencetak pesan ke konsol.
  • const mobilSaya membuat instance baru dari kelas Mobil dengan nilai atribut yang diberikan dan kemudian memanggil metode bergerak dan berhenti.

Baca juga: Cara Install XAMPP (Apache, MariaDB, PHP dan Perl) pada Windows

2. Enkapsulasi dengan Getter dan Setter

class Mobil {
    constructor(merk, model, tahun) {
        this._merk = merk;
        this._model = model;
        this._tahun = tahun;
    }

    get merk() {
        return this._merk;
    }

    set merk(merkBaru) {
        this._merk = merkBaru;
    }

    bergerak() {
        console.log(`${this._merk} ${this._model} bergerak.`);
    }

    berhenti() {
        console.log(`${this._merk} ${this._model} berhenti.`);
    }
}

const mobilSaya = new Mobil('Honda', 'Civic', 2019);
mobilSaya.bergerak(); // Output: Honda Civic bergerak.
mobilSaya.merk = 'Nissan';
console.log(mobilSaya.merk); // Output: Nissan

Penjelasan:

  • Enkapsulasi diterapkan dengan menggunakan underscore (_) di depan nama properti (_merk, _model, _tahun) untuk menandai bahwa properti tersebut bersifat privat.
  • get merk dan set merk adalah metode akses (getter dan setter) yang memungkinkan kita mengakses dan mengubah nilai properti merk dengan cara yang aman.
  • Objek mobilSaya dibuat dengan merk awal ‘Honda’, yang kemudian diubah menjadi ‘Nissan’ menggunakan setter merk.

3. Pewarisan

class Mobil {
    constructor(merk, model, tahun) {
        this.merk = merk;
        this.model = model;
        this.tahun = tahun;
    }

    bergerak() {
        console.log(`${this.merk} ${this.model} bergerak.`);
    }

    berhenti() {
        console.log(`${this.merk} ${this.model} berhenti.`);
    }
}

class MobilBalap extends Mobil {
    constructor(merk, model, tahun, kecepatanMaksimum) {
        super(merk, model, tahun);
        this.kecepatanMaksimum = kecepatanMaksimum;
    }

    bergerak() {
        console.log(`${this.merk} ${this.model} bergerak dengan kecepatan tinggi!`);
    }

    tampilkanKecepatanMaksimum() {
        console.log(`Kecepatan maksimum ${this.merk} ${this.model} adalah ${this.kecepatanMaksimum} km/jam.`);
    }
}

const mobilBalapSaya = new MobilBalap('Ferrari', 'F8', 2022, 340);
mobilBalapSaya.bergerak(); // Output: Ferrari F8 bergerak dengan kecepatan tinggi!
mobilBalapSaya.tampilkanKecepatanMaksimum(); // Output: Kecepatan maksimum Ferrari F8 adalah 340 km/jam.

Penjelasan:

  • class MobilBalap mewarisi dari class Mobil menggunakan kata kunci extends.
  • Konstruktor MobilBalap memanggil konstruktor Mobil menggunakan super untuk menginisialisasi properti yang diwarisi.
  • MobilBalap menambahkan properti baru kecepatanMaksimum dan metode tampilkanKecepatanMaksimum.
  • bergerak di MobilBalap menimpa (override) metode bergerak di Mobil untuk mencetak pesan yang berbeda.

Baca juga: Bagaimana Prospek Karir Jurusan Teknik Informatika?

4. Polimorfisme

class Mobil {
    constructor(merk, model, tahun) {
        this.merk = merk;
        this.model = model;
        this.tahun = tahun;
    }

    bergerak() {
        console.log(`${this.merk} ${this.model} bergerak.`);
    }

    berhenti() {
        console.log(`${this.merk} ${this.model} berhenti.`);
    }
}

class MobilBalap extends Mobil {
    constructor(merk, model, tahun, kecepatanMaksimum) {
        super(merk, model, tahun);
        this.kecepatanMaksimum = kecepatanMaksimum;
    }

    bergerak() {
        console.log(`${this.merk} ${this.model} bergerak dengan kecepatan tinggi!`);
    }
}

const mobilBiasa = new Mobil('Toyota', 'Corolla', 2020);
const mobilBalapSaya = new MobilBalap('Ferrari', 'F8', 2022, 340);

mobilBiasa.bergerak(); // Output: Toyota Corolla bergerak.
mobilBalapSaya.bergerak(); // Output: Ferrari F8 bergerak dengan kecepatan tinggi!

Penjelasan:

  • class Mobil dan class MobilBalap mendefinisikan metode bergerak masing-masing dengan implementasi berbeda.
  • mobilBiasa adalah instance dari Mobil, sedangkan mobilBalapSaya adalah instance dari MobilBalap.
  • Ketika bergerak dipanggil pada mobilBiasa, ia menggunakan implementasi dari Mobil. Sebaliknya, ketika bergerak dipanggil pada mobilBalapSaya, ia menggunakan implementasi dari MobilBalap, menunjukkan konsep polimorfisme.

Kesimpulan

Pemrograman Berbasis Objek (OOP) menawarkan banyak manfaat seperti modularitas, kemudahan dalam pemeliharaan kode, dan fleksibilitas dalam pengembangan perangkat lunak. Dengan memahami konsep dasar seperti objek, kelas, enkapsulasi, pewarisan, dan polimorfisme, pengembang dapat menulis kode yang lebih efisien dan dapat diandalkan. JavaScript, sebagai bahasa pemrograman yang fleksibel, mendukung paradigma OOP dan memungkinkan pengembang untuk menerapkan prinsip-prinsip ini dalam pengembangan aplikasi mereka.

Share.

Seorang profesional teknologi yang berfokus pada pengembangan aplikasi (web & Android), DevOps, teknologi data, serta spesialisasi dalam Natural Language Processing (NLP) dan pengembangan ChatBot berbasis NLP. Memiliki keahlian mendalam di ekosistem Node.js dan aktif berkontribusi pada berbagai proyek open-source melalui library JavaScript di NPM. Rutin menulis artikel dan panduan teknis seputar pemrograman di LampungDev.com, berbagi wawasan seputar tren teknologi terbaru dan solusi pemrograman inovatif.

Exit mobile version