Salah satu teknik pemrograman berbasis objek adalah generalisasi dan inheritance. Konsep ini dapat dianalogikan dengan induk dan anak dimana anak akan mewarisi sifat induknya. Untuk mempermudah pemahaman ada baiknya kita coba untuk mempraktekkannya dengan bahasa Java dengan IDE Netbeans.
Buat project baru dengan cara File – New Project. Pilih kategori Java dan pilih Java Application pada kolom yang kanan.
Anda akan diminta memberi nama serta lokasi tempat penyimpanan dengan cara mengklik “Browse“. Jika direktori tidak muncul klik “Desktop” agar memunculkan seluruh direktori yang ada di komputer.
Setelah diklik “Computer” akan terlihat seluruh direktori yang ada. Cari folder yang Anda inginkan. Jika sudah, beri nama project Anda, misalnya “Generalisasi“.
Setelah di klik “Finish” berarti Anda telah siap membuat project. Perhatikan Netbeans memberikan satu kelas secara default dengan nama “Main“. Berikutnya kita akan membuat dua kelas baru yaitu kelas persegiPanjang dan kelas Balok. Cara membuat kelas baru adalah sebagai berikut:
Pada paket “Generalisasi” klik kanan kemudian pilih New – Java Class. Beri nama “persegiPanjang“. Dengan cara yang sama buat juga kelas berikutnya yaitu kelas “Balok“.
Dobel klik kelas persegiPanjang dan tulis program yang menghitung luas persegi panjang dari masukan panjang dan lebar dengan cara objek. Walaupun beberapa literatur bisa juga membuat program Java secara terstruktur, alangkah baiknya Java dibuat dengan basis Objek. Perlu diketahui bahwa tiap objek memeliki nama, atribut dan operasi. Lihat listing persegiPanjang berikut ini.
Perhatikan, pada kelas persegiPanjang terdapat dua atribut yaitu panjang dan lebar yang bertipe double. Script baris ke 15 bermaksud merubah variabel panjang yang diterima lewat masukan tertentu (nanti menggunakan form) menjadi double, dilanjutkan dengan script ke 18 yang menangkap variabel itu ke kelas yang bersangkutan lewat mekanisme “this“. Diakhiri dengan methode getPanjang yang menginstruksikan Java bahwa variabel panjang harus disimpan. Penjelasan yang sama untuk setLebar dan getLebar. Operasi terakhir adalah getLuas yang memerintahkan Java untuk menyimpan hasil perkalian panjang dan lebar.
Berikutnya kita membuat kode program balok. Karena balok merupakan anak dari persegi panjang (Inheritance) maka pada awal program perlu ditambahkan extends dan dilanjutkan nama kelas induknya (lihat baris ke-12). Saat menghitung volume, kita tinggal memanggil “getLuas” dari induknya (persegi panjang) dengan mengetik instruksi “super“. Perhatikan, saat diketik titik, harusnya ada bantuan getLuas, jika tidak, mungkin Anda belum menulis “extends” di awal program, atau getLuas di persegiPanjang bertipe “private“, oleh karena itu ganti menjadi “public“.
Buat kelas baru dengan nama formBalok dengan tipe Jframe Form. Buat rancangan Graphic User Interface (GUI) seperti gambar di atas. Buat programnya dengan mendobel klik “Hitung“.
Perhatikan, baris pertama bermaksud membuat suatu instance baru bernama “b“. Instance adalah objek yang dibuat dari suatu kelas, dalam hal ini kelas “Balok“. Karena dibuat dari kelas balok maka seluruh operasi pada kelas balok diterapkan juga di objek “b” tersebut, seperti setPanjang, setLebar, dan setTinggi. Methode getText() sudah tersedia di Java, yang bermaksud menangkap text dari inputan pada Text Field (jTextField1, jTextField2, dan jTextField3). Disarankan untuk memberi nama baru pada variabel tersebut, karena nama tersebut merupakan nama bawaan Netbeans. Instruksi “setText” merupakan kebalikan dari getText, yaitu mengirimkan Text ke Text Field tertentu (dalam hal ini jTextField4). Klik kanan pada Form Balok, pilih Run File, hasilnya harus seperti ini.
Selamat Mencoba
Rahmadya Trias Handayanto
jawabannya kok null pak ?
sepertinya ada yg tidak bertipe Double
mohon maaf pak, hasil nya kok null pak ya, padahal sudah bertipe double semua?
sepertinya salah satu variabel (p,l,t,luas) tidak tertangkap (NULL), bisa copas kodenya di komentar?
ini saya coba versi luas dan volume kerucut pak..
package pajuts;
/**
*
* @author unoze
*
*/
class kerucut1
{
protected double tinggi;
protected double jari2;
protected double phi = 3.14;
public double hasil;
public void setTinggi(String t)
{
tinggi=Double.parseDouble(t);
}
public void setTinggi(double tinggi)
{
this.tinggi=tinggi;
}
public double getTinggi()
{
return tinggi;
}
public void setJari(String r)
{
jari2=Double.parseDouble(r);
}
public void setJari(double jari2)
{
this.jari2=jari2;
}
public double getJari()
{
return jari2;
}
public double getVolume ()
{
return 1/3*phi*Math.pow(jari2, 2)*tinggi;
}
}
class kerucut2 extends kerucut1
{
private double sisi;
public double hasil2;
public void setSisi(String s)
{
sisi=Double.parseDouble(s);
}
public void setSisi(double sisi)
{
this.sisi=sisi;
}
public double getSisi()
{
return sisi;
}
public double getLuas()
{
return phi*jari2*(jari2+sisi);
}
}
Itu running ok kan?
kalau menerapkan prinsip inheritance harusnya volume itu melibatkan induknya (luas). Misalnya volume balok=luas*tinggi, walaupun bisa saja dengan rumus volume balok=panjang*lebar*tinggi, tapi itu tidak menerapkan prinsip inheritance pada objek
iya pak bisa running, sudah saya ubah pak, hasil nya tetap null
sudah bisa pak terima kasih, tadi kurang teliti