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
- 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.
- Kelas (Class) Kelas adalah cetak biru atau template untuk membuat objek. Kelas mendefinisikan atribut dan metode yang akan dimiliki oleh objek.
- Contoh: Kelas
Mobilmendefinisikan atribut sepertiwarnadanmodel, serta metode sepertibergerak()danberhenti().
- Contoh: Kelas
- 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.
- 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
MobilBalapmewarisi dari kelasMobildan menambahkan properti atau metode tambahan.
- Contoh: Kelas
- 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 kelasMobildanMobilBalap.
- Contoh: Metode
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 Mobilmendefinisikan sebuah kelas dengan konstruktor yang menerimamerk,model, dantahunsebagai parameter. Mobilmemiliki dua metode:bergerakdanberhenti, yang mencetak pesan ke konsol.const mobilSayamembuat instance baru dari kelasMobildengan nilai atribut yang diberikan dan kemudian memanggil metodebergerakdanberhenti.
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: NissanPenjelasan:
- Enkapsulasi diterapkan dengan menggunakan underscore (
_) di depan nama properti (_merk,_model,_tahun) untuk menandai bahwa properti tersebut bersifat privat. get merkdanset merkadalah metode akses (getter dan setter) yang memungkinkan kita mengakses dan mengubah nilai propertimerkdengan cara yang aman.- Objek
mobilSayadibuat denganmerkawal ‘Honda’, yang kemudian diubah menjadi ‘Nissan’ menggunakan settermerk.
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 MobilBalapmewarisi dariclass Mobilmenggunakan kata kunciextends.- Konstruktor
MobilBalapmemanggil konstruktorMobilmenggunakansuperuntuk menginisialisasi properti yang diwarisi. MobilBalapmenambahkan properti barukecepatanMaksimumdan metodetampilkanKecepatanMaksimum.bergerakdiMobilBalapmenimpa (override) metodebergerakdiMobiluntuk 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 Mobildanclass MobilBalapmendefinisikan metodebergerakmasing-masing dengan implementasi berbeda.mobilBiasaadalah instance dariMobil, sedangkanmobilBalapSayaadalah instance dariMobilBalap.- Ketika
bergerakdipanggil padamobilBiasa, ia menggunakan implementasi dariMobil. Sebaliknya, ketikabergerakdipanggil padamobilBalapSaya, ia menggunakan implementasi dariMobilBalap, 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.

