Proteksi Variabel Field pada Objek Java (1)

Posted by: on Apr 9, 2006 | No Comments

Design Pattern, atau dikenal juga dengan Refactoring, adalah salah satu cabang ilmu komputer (Software Design) yang membuat code kita lebih mapan, mudah ditelusuri, mudah dibaca, dan reusable. Nah, kali ini aku akan nulis yang agak berat, namun tingkatannya cukup pemula bagi programmer/mahasiswa yang baru saja masuk ke dunia Objek Oriented Programming, khususnya Java.

Enkapsulasi/Pembungkusan Objek pada Java direpresentasikan dalam bentuk class-class. Sedangkan semua properti objek dinyatakan dalam method dan field (variabel dalam class). Misalnya,

public class MyClass {

   private int myField1 = 0;

   public double mySecondField = 0;

   private void thisIsPrivateMethod( int parameters ) {

      // do something here...

   }

   public int getComputation() {

   // how to get some value from outer class...

   }

}

Proteksi data dalam sebuah class dinyatakan dalam sintaks public, private, dan default. Public artinya suatu data dalam class dapat diakses dan dimodifikasi dari luar class. Private berarti data sama sekali tidak dapat terlihat dan tidak dapat diubah dari luar class. Data ini hanya terlihat oleh class itu sendiri. Default artinya, data hanya bisa dilihat oleh class-class yang memiliki package yang sama (Aduh, opo meneh package iku?).

Oke, sekarang kita bahas package. Dalam dunia coding, penamaan objek dengan nama yang sama persis seringkali terjadi. Bagaimana satu objek dengan objek yang lain yang memiliki nama yang sama tetap dapat dibedakan? Java menyelesaikannya dengan solusi yang cerdas: package. Package membungkus objek-objek (class-class) dalam bundel yang sama sehingga, objek dengan nama sama dapat dibedakan dengan memberikan nama package yang berbeda. Misalnya, java.awt, javax.swing, com.mysql.jdbc, dan nama-nama lainnya. Tentu saja, pemberian nama yang sama dalam package yang sama tidak diperkenankan.

[bersambung ke JavaBean (2)]

Java Bean (2)

Posted by: on Apr 9, 2006 | 3 Comments

JavaBean sebenarnya hanyalah sebuah class yang hanya terdiri dari beberapa field private dan dengan method setter untuk menset field dari luar class dan getter untuk mendapatkan nilai dari field. Adanya JavaBean memudahkan kita untuk melakukan refactoring karena JavaBean sebenarnya adalah representasi semua objek apapun di dunia ini. Misalnya,

public class MyJavaBean {

   private int myField1 = 0;

   private double mySecondField = 0;

   // getter

   public int getMyField1() {

      return this.myField1;

   }

   public double getMySecondField() {

      return this.mySecondField;

   }

   // setter

   public void setMyField1( int val ) {

      this.myField1 = val;

   }

   public void setMySecondField( double val ) {

      this.mySecondField = val;

   }

}

Ciri utama dari JavaBean adalah method-method-nya yang selalu diawali dengan kata get/set diikuti nama field dengan huruf pertama dari nama field adalah huruf besar. Lihat caraku menulis di contoh di atas. Ada field bernama myField1, maka setter dan getter-nya adalah setMyField1 dan getMyField1.

Nah, sampai di sini tentunya pertanyaannya menjadi begini: Jika field bertipe private, yang artinya tidak bisa diakses dari luar class, kenapa harus ada method getter dan setter yang bertipe public, yang akhirnya class luar bisa memodifikasi lewat dua method ini? Kenapa tidak field-nya saja yang diberi proteksi public? Toh sama saja kan akhirnya?

Pertanyaan dan argumen di atas memang sangat benar. Tapi di sinilah konsep design pattern itu! Dengan membuat field private dengan dua setter/getter public, kita tidak dapat sembarangan mengubah-ubah isi objek dari luar dengan statement namaClass.namaField = 2; tetapi harus melalui sebuah mekanisme yang mudah terlihat. Dengan menjadikan field tersebut public, kita benar-benar kehilangan konsep object oriented-nya (Properti suatu objek hanya dapat diubah melalui method-nya). Dengan mekanisme yang jelas, maka kode program akan lebih terbaca, lebih mudah ditelusuri, dan terkonsep dengan baik. That’s! inti dari sebuah Design Pattern. (*)

Curhat: Sori yah, ngomongnya bikin banyak orang nggak nyambung, soalnya lagi be-te banget.. program TA gw nggak jalan-jalan

Switch to our mobile site