Jumat, 13 Maret 2015

Class dan Object dalam Java


Class
merupakan suatu blueprint atau cetakan untuk menciptakan suatu instant dari object. Class juga merupakan grup suatu object dengan kemiripan attributes/properties, behaviour dan relasi ke object lain.

Contoh : Class Person, Vehicle, Tree, Fruit dan lain-lain.

Kelas adalah sebuah tipe data abstrak yang merupakan pemodelan dari objek yang berisi atribut(data) dan tingkah laku(method) yang dimiliki oleh objek tersebut.

Sebuah kelas menyerupai sebuah struktur yang merupakan tipe data sendiri, misalkan tipe data titik yang terdiri dari koordinat x dan y. Bahasa Java telah menggunakan sebuah kelas untuk menyatakan tipe data titik karena bahasa pemrograman Java merupakan bahasa pemrograman berorientasi objek murni sehingga tidak mengenal struktur tapi mengenal apa yang disebut dengan kelas.

Perbedaan sebuah kelas dengan sebuah struktur adalah sebuah kelas dapat berdiri sendiri dan dapat digunakan untuk berbagai keperluan kelas-kelas yang lain, sedangkan sebuah struktur tidak dapat berdiri sendiri. Sebuah kelas lebih fleksibel untuk digunakan oleh kelas lain tanpa harus membongkar kode program utama, sedangkan jika digunakan struktur maka kode program harus dibongkar unuk disalin bagian strukturnya ke kode program utama yang lain. Sebuah file dapat terdiri dari berbagai kelas, namun biasanya pada bahasa pemrograman Java sebuah file hanya terdiri dari satu kelas yang disimpan dengan nama kelas, misal file List.java berisi kelas List. Namun jika kelas yang dibuat misalnya public class nama_kelas, maka kelas itu harus disimpan dalam satu file hanya untuk satu kelas. Setelah dilakukan kompilasi maka pada Java akan ada sebuah file ”.class” yang berisi bytecode dari setiap kelas. Jika sebuah file terdiri dari dua kelas maka setelah dikompilasi akan dihasilkan dua buah file ”.class” yang nantinya akan dibaca oleh interpreter Java saat program dieksekusi.
Sebuah kelas saat program dieksekusi dan perintah new dijalankan, maka akan dibuat sebuah objek. Objek adalah elemen pada saat runtime yang akan diciptakan, dimanipulasi dan dihancurkan saat eksekusi sehingga sebuah objek hanya ada saat sebuah program dieksekusi, jika masih dalam bentuk kode, disebut sebagai kelas jadi pada saat runtime (saat sebuah program dieksekusi), yang kita punya adalah objek, di dalam teks program yang kita lihat hanyalah kelas.
Isi dari kelas ada tiga bagian yaitu:
1.      Variabel/properti/atribut
Atribut adalah karateristik yang dimiliki oleh objek. Dibagian itu kita dapat mendeklarasikan atribut-atribut yang dibutuhkan kelas untuk membentuk objek. Sebagai contoh perhatikan kode dibawah ini:
private String nama;
2.      Konstruktor
Konstruktor adalah method yang berfungsi untuk menginisialisasi variabel-variabel instans yang akan dimiliki oleh objek. Method konstruktor harus memiliki nama yang sama dengan nama kelas. Konstruktor ini dipanggil pada saat proses instalasi kelas menjadi objek. Kegunaan konstruktor:
·         Mengalokasikan ruang bagi sebuah kelas dalam objekMemberikan nilai awal terhadap anggota data suatu objek.
·         Membentuk tugas-tugas umum lainya.
·         Perlu diketahui:
Konstruktor tidak mempunyai nilai balik(bahkan tanpa void)
Konstruktor harus diletakkan pada bagian public. Sebagai contoh perhatikan kode dibawah ini:
public Mobil(){}
3.      Method
Method merupakan tingkahlaku yang dimiliki oleh objek. Method ini bisa berbentuk prosedur maupun fungsi. Contoh penulisannya perhatikan kode dibawah ini:
public void cetakInfo(){
System.out.println(“Nama Mobil : ” + getNama() );
}

Object
Pada saat kita mendefinisikan suatu kelas, kita hanya membuat tipe data baru, bukan membuat objek baru. Untuk membuat objek baru dari tipe kelas yang telah didefinisikan, secara eksplisit kita perlu melakukan dua tahap.
1.    Pertama, kita perlu mendeklarasikan variabel yang digunakan sebagai referensi ke objek dari kelas bersangkutan.
2.    Kedua, kita perlu menginstansiasi kelas dengan menggunakan operator new dan memasukkan instance-nya ke dalam variabel referensi yang baru saja dideklarasikan.

Berikut ini ilustrasi dua tahap proses tersebut :

// Mendeklarasikan variabel k bertipe Kotak 
Kotak k;
// Melakukan instansiasi dan memasukkan referensi ke variabel k
k = new Kotak();

Baris pertama (Tahap I) berguna untuk mendeklarasikan variabel k yang berperan sebagai referensi ke objek dari tipe Kotak. Pada tahap ini, variabel k akan bernilai null, yang berarti referensi tersebut belum menunjuk ke objek aktual manapun. Segala bentuk usaha untuk menggunakan variabel k disaat seperti ini akan menyebabkan kesalahan pada saat proses kompilasi program. Alasannya adalah karene variable k masih bernilai null.

Selanjutnya baris kedua (Tahap II) digunakan untuk mengalokasikan sebuah objek baru dan memasukkan referensinya ke dalam variabel k.

Pada prakteknya, dua tahap di atas biasanya ditulis dalam satu baris, seperti berikut :

// Mendeklarasikan variabel k bertipe Kotak dan
// Melakukan instansiasi dan memasukkan referensi ke variabel k

Kotak k = new Kotak();


Contoh Program :

package demoreferensi1;
class Kotak {
double panjang;
double lebar;
double tinggi;
}

public class DemoReferensi1 {
public static void main(String[] args) {
double volume1, volume2;
Kotak k1, k2;
k1 = new Kotak();
k2 = k1;

// Mengisikan nilai ke dalam objek k1
k1.panjang = 4;
k1.lebar = 3;
k1.tinggi = 2;

// Menghitung isi/volume dari objek k1
volume1 = k1.panjang * k1.tinggi * k1.lebar;

// Menghitung isi/volume dari objek k2
volume2 = k2.panjang * k2.tinggi * k2.lebar;

// Menampilkan nilai volume k1 dan k2 ke layar monitor
System.out.println("Volume k1 = " + volume1);
System.out.println("Volume k2 = " + volume2);
}
}

Tampak jelas pada kode di atas bahwa kita hanya memasukkan nilai untuk objek k1, namun pada saat kita memanggil nilai dari volume2, hasil yang diberikan adalah sama seperti nilai yang dihasilkan oleh volume1. Hal ini disebabkan karena k1 dan k2 sebenarnya menunjuk ke objek yang sama.

Hasilnya :
Volume k1 = 24.0
Volume k2 = 24.0

Sebagai catatan penting, meskipun keduanya menunjuk objek yang sama, akan tetapi tidak terdapat
hubungan antara variabel k1 dan k2. Artinya, kita bisa saja melepas salah satu variabel tersebut untuk menunjuk ke objek lain, tanpa berpengaruh terhadap variabel lainnya.

Tidak ada komentar:

Posting Komentar