Banner Java

Mengkonstruksi Obyek Dari Kelas Java

Mengkonstruksi Obyek.

Di artikel Mendefinisikan Kelas Java, Anda tahu bagaimana cara mendefinisikan sebuah kelas Java, misalnya kelas PersegiPanjang. Anda baru bisa menggunakan sebuah kelas Java di dalam program apabila obyek (object) dari kelas tersebut telah dibuat atau dikonstruksi. Sebagai contoh, untuk mengkonstruksi obyek kelas PersegiPanjang, Anda dapat menggunakan salah satu konstruktor dari kelas tersebut, didahului dengan kata kunci (keyword) new. Berikut ini adalah sintaksis untuk mengkonstrusi obyek sebuah kelas:

   new nama-kelas(parameter);

Dua pernyataan di bawah ini adalah sintaksis untuk membuat obyek dari kelas PersegiPanjang menggunakan konstruktor berbeda:

   new PersegiPanjang();
   new PersegiPanjang(5.5, 3.5);

Baris pertama, new PersegiPanjang(), membuat obyek dengan menggunakan kontruktor pertama. Dengan mengkonstruksi obyek menggunakan konstruktor pertama, maka nilai data filed panjang adalah 1.0 dan lebar adalah 1.0. Baris kedua, new PersegiPanjang(5.5, 3.5) membuat obyek dengan menggunakan kontruktor kedua. Dengan menggunakan konstruktor kedua ini, nilai panjang adalah 5.5 dan lebar adalah 3.5.

Sebuah kelas normalnya menyediakan konstruktor tanpa argumen. Baris pertama adalah contoh konstruktor tanpa argumen. Konstruktor semacam ini sering disebut dengan no-argument constructor. Anda juga dimungkinkan untuk mendefinisikan sebuah kelas tanpa konstruktor sama sekali. Dalam kasus semacam ini, no-argument constructor dengan blok kosong (empty body) secara implisit dideklarasikan di dalam kelas. Konstruktor seperti ini disebut dengan default constructor dan disediakan secara otomatis apabila tidak ada satupun konstruktor yang secara eksplisit dideklarasikan di dalam kelas.

Variabel Acuan ke Obyek.

Sebuah kelas merupakan definisi yang akan digunakan untuk mendeklarasikan dan membuat obyek dari kelas tersebut. Kelas adalah cetak biru (blue print) untuk obyek yang dibuat. Anda dapat membuat sebanyak mungkin obyek (instance of class) dari sebuah kelas. Proses membuat obyek dari sebuah kelas disebut dengan instantiation. Anda dapat mengakses data field dan metoda dari obyek yang telah dibuat dengan mengunakan variabel yang mengacu ke obyek (object reference variable atau reference variable). Berikut ini adalah sintaksis untuk mendeklarasikan variabel yang mengacu ke obyek.

   nama-kelas variable-acuan;

Sebuah kelas mendefinisikan sebuah tipe yang disebut dengan tipe acuan (reference type). Variabel yang mempunyai tipe kelas dapat mengacu ke obyek yang dibuat dari kelas tersebut. Anda dapat membuat variabel bangunDatar1 dengan tipe kelas PersegiPanjang agar variabel tersebut dapat mengacu ke obyek yang dibuat dari kelas PersegiPanjang dengan pernyataan sebagai berikut:

   PersegiPanjang bagunDatar1;

Variabel bangunDatar1 dapat mengacu ke obyek yang telah dibuat dari kelas PersegiPanjang. Anda dapat mengkombinasikan sekaligus pendeklarasian sebuah variabel yang mengacu ke obyek kelas, membuat obyek dan memberi variabel tersebut acuan ke obyek dengan sintaksis sebagai berikut:

   nama-kelas variable-acuan = new nama-kelas(parameter);

contoh,

   PersegiPanjang bangunDatar1 = new PersegiPanjang();

Pernyataan di atas mendeklarasikan variabel bangunDatar1 yang mengacu ke obyek dari kelas PersegiPanjang, membuat obyek dari kelas PersegiPanjang menggunakan konstruktor pertama (konstruktor tanpa argumen) serta memberi variabel bangunDatar1 tersebut acuan ke obyek PersegiPanjang. Anda juga dapat membuat obyek dari kelas PersegiPanjang dengan menggunakan konstruktor kedua. Berikut ini adalah pernyataan untuk mendeklarasikan variabel acuan bangunDatar2, membuat obyek dari kelas PersegiPanjang menggunakan konstruktor kedua dan memberi variabel bangunDatar2 acuan ke obyek kelas:

   // Menggunakan konstruktor kedua
   PersegiPanjang bangunDatar2 = new PersegiPanjang(4.5, 8.3);

Semua obyek di Java dibuat atau dikonstruksi dengan didahului oleh kata kunci new. Di contoh program sebelumnya, Anda juga sudah diperkenalkan pada deklarasi variabel, membuat obyek dari kelas dan memberi variabel tersebut acuan ke obyek kelas. Anda juga telah menggunakan kelas DecimalFormat untuk membuat obyek dari kelas DecimalFormat, kelas JTextArea untuk membuat obyek dari kelas JTextArea dan juga membuat obyek dari beberapa kelas yang lain.

Mengakses data dan metoda melalui variabel acuan.

Obyek terlebih dahulu harus dibuat sebelum data dan metoda dari obyek tersebut dapat diakses. Berikut ini adalah sintaksis untuk mengakses data dari obyek PersegiPanjang.

   // Mengakses data obyek
   variable-acuan.data;

contoh,

   bangunDatar1.panjang; // Mengacu ke variabel panjang di obyek PersegiPanjang
   bangunDatar1.lebar; // Mengacu ke variabel lebar di obyek PersegiPanjang

untuk mengakses metoda di obyek PersegiPanjang, Anda dapat menggunakan sintak sebagai berikut:

   // Meminta atau memanggil metoda obyek
   variable-acuan.nama-metoda();

contoh,

   // Memanggil metoda mencariKelilingPP di obyek PersegiPanjang
   bangunDatar1.mencariKelilingPP;

   // Memanggil metoda mencariLuasPP di obyek PersegiPanjang
   bangunDatar1.mencariKelilingPP;

Data field panjang dan lebar juga sering disebut dengan instance variabel karena tergantung pada masing-masing obyek yang dibuat. Sedangkan metoda mencariKelilingPP dan mencariLuasPP juga sering disebut dengan instance method karena hanya dapat diminta atau dipanggil melalui masing-masing obyek.

<

Contoh berikut ini adalah program membuat obyek dari kelas PersegiPanjang dengan menggunakan konstruktor pertama dan konstruktor kedua. Data filed panjang dan lebar dari obyek yang dibuat dengan konstruktor pertama kemudian dimodifikasi.

// Nama field : MengujiPersegipanjang.java
// Melakukan pengujian kelas persegiPanjang

// Mengimpor kelas
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import java.text.DecimalFormat;

// Deklarasi kelas berisi metoda main
public class MengujiPersegiPanjang {

   // metoda main
   public static void main(String[] args) {
      
      String tampilan;
      DecimalFormat duaAngka = new DecimalFormat("0.00");
  
      // Membuat objek PersegiPanjang dengan konstruktor pertama
      PersegiPanjang bangunDatar1 = new PersegiPanjang();
      tampilan = "Menggunakan Kelas PersegiPanjang\n\n" +
                 "Panjang = " + duaAngka.format(bangunDatar1.panjang) +
                 ", Lebar = " + duaAngka.format(bangunDatar1.lebar) +
                 "\nKeliling = " + duaAngka.format(bangunDatar1.mencariKelilingPP()) +
                 "\nLuas = " + duaAngka.format(bangunDatar1.mencariLuasPP());

      // Membuat objek PersegiPanjang dengan konstruktor ketiga
      PersegiPanjang bangunDatar3 = new PersegiPanjang(5.5, 7.5);
      tampilan += "\n\nPanjang = " + duaAngka.format(bangunDatar3.panjang) +
                  ", Lebar = " + duaAngka.format(bangunDatar3.lebar) +
                  "\nKeliling = " + duaAngka.format(bangunDatar3.mencariKelilingPP()) +
                  "\nLuas = " + duaAngka.format(bangunDatar3.mencariLuasPP());

      // Memodifikasi panjang dan lebar
      bangunDatar1.panjang = 2.5;
      bangunDatar1.lebar = 4.5;
      tampilan += "\n\nPanjang = " + duaAngka.format(bangunDatar1.panjang) +
                  ", Lebar = " + duaAngka.format(bangunDatar1.lebar) +
                  "\nKeliling = " + duaAngka.format(bangunDatar1.mencariKelilingPP()) +
                  "\nLuas = " + duaAngka.format(bangunDatar1.mencariLuasPP());

      // Menampilkan hasil
      JTextArea areaTampilan = new JTextArea();
      areaTampilan.setText(tampilan);
      JOptionPane.showMessageDialog(null, areaTampilan, "Bangun Datar",
         JOptionPane.INFORMATION_MESSAGE);

      // Mengakhiri aplikasi
      System.exit(0);

   } // Akhir blok metoda main
} // Akhir blok kelas MengujiPersegiPanjang
         
// Mendefinisikan kelas PersegiPanjang
class PersegiPanjang {

   // Data field PersegiPanjang
   double panjang = 1.0;
   double lebar = 1.0;

   // Konstruktor pertama
   PersegiPanjang() {
   }

   // Konstruktor kedua
   PersegiPanjang(double x) {
      panjang = x;
   }

   // Konstruktor kedua
   PersegiPanjang(double x, double y) {
      panjang = x;
      lebar = y;
   }
   
   // Metoda mencari keliling
   double mencariKelilingPP() {
      return 2 * (panjang + lebar);
   }

   // Metoda memcari
   double mencariLuasPP() {
      return panjang * lebar;
   }
}

Kode program di atas mempunyai dua buah kelas yaitu kelas MengujiPersegiPanjang (baris nomor 10 – 51) dan kelas PersegiPanjang (baris nomor 54 – 83). Kelas MengujiPersegiPanjang berisi metoda main yang digunakan untuk menguji kelas kedua (PersegiPanjang). Java runtime system akan meminta metoda main setiap kali program atau aplikasi Java dijalankan. Metoda main yang berada di kelas MengujiPersegiPanjang membuat dua buah obyek dari kelas PersegiPanjang menggunakan konstruktor pertama dan konstruktor kedua.

Konstruktor pertama digunakan untuk membuat obyek PersegiPanjang dengan data field pajang bernilai 1.0 dan lebar bernilai 1.0 dan memberi variabel bangunDatar1 acuan ke obyek tersebut (baris nomor 19). Konstruktor kedua digunakan untuk membuat obyek PersegiPanjang dengan data field panjang bernilai 7.5 dan lebar bernilai 5.5 dan memberi variabel bangunDatar2 acuan ke obyek tersebut (baris nomor 27). Dua buah obyek yang telah dibuat mempunyai nilai data berbeda (different state) tetapi tetap menggunakan metoda yang sama secara bersama-sama (same behavior).

Nilai data dari obyek pertama (diacu oleh variabel bangunDatar1) kemudian dimodifikasi dengan mengganti nilai data field panjang menjadi 4,5 dan lebar menjadi 2.5 (baris nomor 34 dan 35). Setelah data field di obyek pertama dimodifikasi, kemudian dihitung kembali keliling dan luas obyek PersegiPanjang pertama dengan memanggil metoda mencariKelilingPP dan mencariLuasPP.

 Mengkonstruksi obyek dari kelas Java

Untuk memperbaiki mutu konten, Anda dapat berpartisipasi dengan cara melaporkan apabila menemukan kesalahan ketik, kata-kata rangkap, redaksi kurang pas (jelas), gambar pendukung tidak ada dan sebagainya melalui form Kontak Kami untuk mendapatkan perbaikan. Terima kasih atas kerjasamanya.

Hindro HindriantoHindro adalah pendiri sekaligus admin termasmedia.com dan topikit.com, blog online yang mengulas teknologi informasi. Dunia web mulai ditekuni tahun 2012 dengan mempelajari CMS Joomla dan Wordpress. Beberapa buku yang sekarang dipelajari antara lain PHP, HTML5, ASP.NET 4.5, JavaScript, CSS3, MySQL, Adobe Dreamweaver, Adobe Photoshop dan Adobe Flash.