Rabu, 17 Oktober 2012

INHERITANCE

INHERITANCE DALAM BAHASA PEMROGRAMAN JAVA

Pewarisan (inheritance) adalah salah satu konsep terpenting dalam OOP dan mempunyai dampak langsung pada cara merancang dan menulis kelas. Pewarisan adalah proses penciptaan kelas baru dengan mewarisi karakteristik kelas yang telah ada, ditambah karakteristik unik kelas baru itu. Pewarisan adalah mekanisme ampuh yang memungkinkan kelas mewarisi fungsionalitas kelas yang telah ada. Untuk menciptakan kelas baru, kita hanya perlu menspesifikasikan cara kelas itu berbeda dari kelas yang telah ada. Pewarisan merupakan mekanisme yang ampuh dan alami untuk mengorganisasikan program.
Subkelas mewarisi semua metode dan variable dan superkelasnya. Secara praktis berarti jika superkelas telah mendefinisikan perilaku yang diperlukan, maka kita tidak perlu mendefinisi ulang perilaku itu, kita cukup membuat kelas yang merupakan subkelas dari superkelas yang dimaksud. Superkelas memberi perilaku nya ke subkelas dari superkelas secara otomatis. Superkelas itu memperoleh perilaku superkelas-superkelasnya diatasnya. Dengan demikian, subkelas akan merupakan gabungan dari seluruh fitur kelas-kelas diatasnya di hirarki perwarisan ditambah fitur kepunyaannya sendiri.

Dengan pewarisan, dimungkinkan penciptaan klasifikasi berhirarki. Dengan pewarisan, kita dapat menciptakan kelas umum yang mendefinisikan perilaku umum dari item-item yang saling berhubungan. Kelas ini kemudian dapat diwarisi kelas-kelas yang lain. Kelas lebih spesifik menambahkan hal-hal yang unik di kelas itu. Dalam terminologi Java, kelas yang diwarisi disebut superclass, sedang kelas yang mewarisi disebut subclass. Dengan demikian, subclass adalah versi spesial dari superclass.
Java hanya memungkinkan pewarisan tunggal (single inheritance). Pewarisan di Java dapat dilakukan terhadap bentukan class dan interface. Dimungkinkan pewarisan pada interface karena internface dapat dipandang sebagai class yang implementasinya sepenuhnya ditunda. Di Java pewarisan jamak (multiple inheritance) di rancangan orientasi object dapat diselesaikan menggunakan bentukan interface.
Pewarisan di Java dilakukan dengan kelas dapat mewarisi kelas lain dengan keyword extends. Bila kelas tidak dikehendaki untuk diwarisi maka dapat diberi keyword final.

Contoh kode program Inheritance :

Simpan dengan nama PERSEGI.java
class PERSEGI {
protected double panjang, lebar ;
public PERSEGI(){
setPL (1 , 1);
}

public PERSEGI(double p, double l){
if (p>0 && l>0){
panjang = p ;
lebar = l ;
}else{
panjang = 2.0 ;
lebar = 1.0 ;
}
}

public void setPL(double p, double l){
if(p>0 && l>0){
panjang = p ;
lebar = l ;
}
}

public double getPanjang(){
return panjang ;
}

public double getLebar(){
return lebar ;
}

public double hitungLuas(){
return (panjang * lebar) ;
}

public double hitungKel(){
return (2*(panjang+lebar)) ;
}
}

Simpan dengan BALOK.java


public class BALOK extends PERSEGI{
private double tinggi ;

public BALOK(){
setPL(1,1) ;
setTinggi(1) ;
}

public BALOK(double p, double l, double t){
setPL(p,l) ;
setTinggi(t) ;
}

public void setTinggi(double t){
if(t>0){
tinggi = t ;
}
}

public double getTinggi(){
return(tinggi) ;
}

public double hitungLuas(){
return(super.hitungLuas()*4.0 + super.getLebar() * tinggi * 2.0) ;
}

public double hitungVol(){
return(super.hitungLuas()* tinggi) ;
}

}

Simpan dengan nama LatInheritance.java


public class LatInheritance {

public static void main(String[] args) {
PERSEGI kotak = new PERSEGI(4.5, 3.5);
System.out.println("Deskripsi PERSEGI kotak");
System.out.println("Panjang : "+ kotak.getPanjang() + " meter");
System.out.println("Lebar : "+ kotak.getLebar() + " meter");
System.out.println("Luas : "+ kotak.hitungLuas() + " meter persegi");
System.out.println("Keliling : "+ kotak.hitungKel() + " meter");
System.out.println("");

double p = kotak.getPanjang() ;
double l = kotak.getLebar() ;

BALOK kubus = new BALOK(p, l, 3.0) ;
System.out.println("Deskripsi Balok Kubus");
System.out.println("Panjang :"+ kubus.getPanjang()+ " meter");
System.out.println("Lebar :"+ kubus.getLebar()+ " meter");
System.out.println("Tinggi :"+ kubus.getTinggi()+ " meter");
System.out.println("Luas : "+ kubus.hitungLuas() + " meter persegi");
System.out.println("Volume : "+ kubus.hitungVol() + " meter kubik");
}
}

Semua file disimpan dalam satu folder dengan nama LatInheritance, ketika file java tersebut dikompile lalu dijalankan maka outputnya dapat kita lihat seperti  di bawah ini :
Deskripsi PERSEGI kotak
Panjang : 4.5 meter
Lebar : 3.5 meter
Luas : 15.75 meter persegi
Keliling : 16.0 meter

Deskripsi Balok Kubus
Panjang :4.5 meter
Lebar :3.5 meter
Tinggi :3.0 meter
Luas : 84.0 meter persegi
Volume : 47.25 meter kubik
Press any key to continue . .