Lompat ke konten Lompat ke sidebar Lompat ke footer

OOP (Object Oriented Programming) Pada JavaScript

JavaScript adalah bahasa yang unik. Di satu sisi bahasa ini memiliki karakteristik bahasa functional di mana function adalah first-class object. Di sisi lain, JavaScript mendukung konsep OOP yaitu turunan (inheritance) dalam bentuk prototype yang dikenal dengan istilah prototypal inheritance. Dalam bab ini kita akan belajar mengenai implementasi OOP dalam JavaScript.

OOP (Object Oriented Programming) Pada JavaScript

OOP(Object Oriented Programming) atau istilah dalam bahasa indonesianya adalah Pemograman Berorientasi Objek. OOP merupakan salah satu jenis dari sebuah Pradigma dalam bahasa pemograman yang berbasis Object, dimana suatu Object terdiri dari sekumpulan Properti dan Method didalamnya.

1 Object Properties & Methods

Kita bisa membuat objek baru di luar yang sudah ada (built-in) dalam JavaScript dengan menggunakan notasi object-literal atau function. Sebagai contoh, misalnya kita ingin membuat tipe data Car dengan notasi object-literal. Semua key dalam object ini disebut properti dari objek Car. Setelah objek ini dibuat kita bisa mengubah, menambah dan menghapus properti.
OOP (Object Oriented Programming) Pada JavaScript
OOP (Object Oriented Programming) Pada JavaScript
Manipulasi Object Literal 
Objek bisa memiliki properti berupa function. Dalam konteks OOP, properti ini disebut sebagai method.
OOP (Object Oriented Programming) Pada JavaScript

2 Constructor Function

Dari contoh sebelumnya bisa kita lihat bahwa semua properti dari objek yang dibuat dengan notasi object-literal tidak memiliki proteksi yang dikenal dengan nama access-modifier dalam bahasa lain. 

Hal ini tidak menjadi masalah kalau objek yang kita buat adalah objek yang hanya kita gunakan untuk menyimpan struktur data sederhana. Untuk objek yang lebih kompleks hal ini sangat tidak disarankan, terutama jika objek yang bersangkutan diakses di banyak bagian program yang lain. 

Selain itu, dengan menggunakan object-literal, kita tidak bisa membuat lebih dari satu objek tanpa melakukan copy-paste. Tentu sangat merepotkan jika suatu waktu kita ingin menambah atau menghapus properti, kita harus melakukannya berulang kali sesuai jumlah objek yang ada. 

Sebagai solusinya, kita bisa membuat class menggunakan constructor function. Class adalah cetak biru dari sebuah objek. Kita bisa membuat banyak objek dari satu class dengan menggunakan keyword new. 

Di bawah ini contoh implementasinya dalam pembuatan class Car dan cara membuat objek dari class ini. Untuk membuat properti dan function yang bisa diakses dari luar objek (public), kita harus menggunakan keyword this.
OOP (Object Oriented Programming) Pada JavaScript
Kita lihat constructor function sangat mempermudah pembuatan banyak objek dari class yang sama. Proses pembuatan objek dikenal dengan nama instansiasi dan objek yang dihasilkan disebut instance dari class yang bersangkutan. 

Masalahnya, dengan cara di atas, objek yang kita buat tetap tidak memiliki proteksi dalam bentuk private member ( variabel dan function) . Properti objek tetap bisa diubah dengan bebas oleh objek atau kode lain seperti object literal. Solusinya adalah : 
  • Menggunakan keyword var untuk private variable 
  • Membuat function yang merupakan child-function bukan properti 
Misalkan kita ingin membuat properti odometer sebagai private property yang hanya bisa dibaca namun tidak bisa diubah langsung dari luar. Nilai odometer hanya bisa berubah pada saat function drive dieksekusi. 

Perubahan kedua adalah penambahan private function brake() yang juga tidak bisa diakses langsung dari luar. Kita tahu dari pembahasan function yang lalu, bahwa child function tidak bisa diakses dari luar, jadi kita buat brake sebagai child function di dalam constructor. Class Car kita ubah seperti berikut.
 
OOP (Object Oriented Programming) Pada JavaScript

3 Inheritance

Inheritance atau turunan adalah objek yang dibuat berdasarkan objek lain sehingga objek yang turunan tersebut memiliki karakteristik yang serupa dengan objek asalnya. JavaScript tidak mendukung inheritance berdasar class tetapi berdasar objek. 

Class dalam JavaScript berbentuk function dan function adalah sebuah objek, jadi pada dasarnya kita membuat turunan dari sebuah objek bukan dari class objek tersebut. Ini berbeda dengan bahasa lain misalnya Java, PHP, dan ActionScript 3. 

Untuk membuat turunan sebuah objek, misalnya objek B sebagai turunan objek A, kita lakukan dua langkah: 
  1. Mengeset objek A sebagai prototype class B 
  2. Mereset constructor class B. 
Di bawah ini kode untuk membuat class baru yaitu Tank sebagai turunan class Car.
OOP (Object Oriented Programming) Pada JavaScript
Masih banyak materi mengenai OOP yang perlu kita pelajari misalnya prototype, mixin, parasitic inheritance, dan lain-lain. Tetapi materi-materi tersebut cukup kompleks dan termasuk kategori advanced dan saya pikir kurang sesuai untuk buku yang ditujukan untuk programmer JavaScript pemula seperti buku ini. Mungkin lain kali kalau ada kesempatan saya akan menulis buku khusus OOP dengan JavaScript. 
Student Terpelajar
Student Terpelajar Content Creator, Video Creator and Writer

Posting Komentar untuk "OOP (Object Oriented Programming) Pada JavaScript"