JavaScript dan Object Oriented Programming (OOP) Bagian 2

Pada catatan mengenai pemrograman berorientasi objek, sudah dijelaskan cara untuk menciptakan object dan mengakses property-nya dengan menggunakan dot notation.

nama_object.nama_property

Selain itu, juga bisa dengan menggunakan bracket notation.

nama_object["nama_property"]

Perbedaannya adalah bracket notation bisa diisi dengan variabel yang nilainya adalah nama dari property.

var nama_object = {
  nama_property: nilai_property
};

var nama = "nama_property";
nama_object[nama];

Baris terakhir pada contoh di atas sama dengan nama_object["nama_property"]. Contoh kasus yang membutuhkan bracket notation adalah pada perulangan for-in. Bentuk dasarnya adalah sebagai berikut.

for (var nama_property in nama_object) {}

Kemudian dengan menggunakan bracket notation, cetak semua property yang ada pada suatu object.

var Anjing = function(umur_anjing_saya, warna_anjing_saya) {
  this.umur = umur_anjing_saya;
  this.warna = warna_anjing_saya;
};

var heli = new Anjing(5, "putih");

var nama_property;
for (nama_property in heli) {
  console.log(heli[nama_property]);
}

Untuk menciptakan object “Anjing”, maka digunakan custom constructor seperti pada potongan kode di atas. Namun sebenarnya itu adalah cara untuk mendefinisikan suatu class. Class bisa dianalogikan sebagai tipe pada suatu object sama halnya seperti tipe data pada variabel.

Sebagai contoh pada kode “Anjing” di atas. Dalam hal ini, “heli” adalah object dari class “Anjing”. Class adalah hal yang sangat penting dalam pemrograman berorientasi objek. Hal itu karena class menyediakan informasi tentang suatu object. Jadi bisa dikatakan object adalah “instansi” dari class.

Sampai sejauh ini sudah dibahas tentang konsep dasar OOP, yaitu enkapsulasi. Satu hal yang tidak boleh terlupakan pada konsep enkapsulasi adalah masalah privasi. Analogi pada dunia nyata adalah seperti ini, katakan ada seekor “Anjing” bernama “heli” yang berumur 5 tahun dan berwarna “putih”. Anjing lain bernama “luki” bisa memiliki property dan method yang berbeda dengan “heli”. Anjing “luki”, sebagai sebuah object yang kompleks dan mandiri, tentu saja tidak boleh sekedar mencontek “property” dan “method” yang ada pada Anjing “heli”. Alasannya, meskipun bisa saja memiliki “umur” dan “warna” yang sama, tetapi tidak mungkin dengan property seperti misalnya susunan DNA yang sama.

Contoh lain, analogikan object sebagai sebuah televisi. Televisi memiliki method antara lain: on/off, pindah saluran, dan ubah volume suara. Method lain seperti fungsi-fungsi elektronik yang ada di dalamnya dibuat private sehingga tidak bisa diakses, yang bisa mengaksesnya adalah seorang ahli yang memiliki pengetahuan tentang televisi.

var Anjing = function(umur_anjing_saya, warna_anjing_saya) {
  this.umur = umur_anjing_saya;
  this.warna = warna_anjing_saya;
};

var heli = new Anjing(5, "putih");
var luki = heli.warna;
console.log(luki);

Dapat dilihat pada contoh di atas, property “warna” dari object “heli” bisa diakses oleh variabel “luki” yang berada di luar class “Anjing”. Lalu bagaimana untuk menyembunyikan informasi agar tidak bisa diakses di luar class? Definisikan property dengan menggunakan kata kunci var. Dengan kata lain, ini adalah sebuah private property.

var Anjing = function(umur_anjing_saya, warna_anjing_saya) {
  var umur = umur_anjing_saya;
  var warna = warna_anjing_saya;
};

var heli = new Anjing(5, "putih");
var luki = heli.warna;
console.log(luki);

Dengan menggunakan kata kunci var, property tidak akan bisa diakses dari luar class. Pada contoh di atas, console akan mengeluarkan “undefined error“.

Meskipun tidak bisa diakses dari luar class, ada satu cara untuk bekerja menggunakan property ini, yaitu melalui sebuah public method. Public method akan mengembalikan nilai dari private property.

var Anjing = function(umur_anjing_saya, warna_anjing_saya) {
  var umur = umur_anjing_saya;
  var warna = warna_anjing_saya;
  this.suara = function() {
    return "Umur saya " + umur + " tahun dan berwarna " + warna;
  };
};

var heli = new Anjing(5, "putih");
console.log(heli.suara());

Tidak hanya property, method juga bisa dibuat private. Caranya sama seperti membuat private property.

var Anjing = function(umur_anjing_saya, warna_anjing_saya) {
  var umur = umur_anjing_saya;
  var warna = warna_anjing_saya;
  var suara = function() {
    return "Umur saya " + umur + " tahun dan berwarna " + warna;
  };
  this.guk = function() {
    return suara();
  };
};

var heli = new Anjing(5, "putih");
console.log(heli.guk());

Pada catatan ini telah dibahas mengenai perbedaan dot notation dengan bracket notation, class, dan private property & private method. Berikutnya masih ada satu konsep dasar OOP dengan JavaScript yang juga penting, pewarisan (inheritance).

About Sibudi

Ubuntu user | Loves books | Blogger | Web Developer | Learn PHP, JavaScript, Ruby & Python the hard way

06. March 2012 by Sibudi
Categories: JavaScript | Tags: , | 2 comments

Comments (2)

  1. Pingback: JavaScript dan Object Oriented Programming (OOP) Bagian 3 | Sibudi </>

  2. sangat bermanfaat
    ijin ngopi gan 😀

Leave a Reply to okesip Cancel reply

Required fields are marked *