Rabu, 14 April 2010

Polymorphisme

Polymorphisme artinya bersifat poly morphy
(memiliki banyak bentuk).
Method-method overloading masih dalam kelas yang
sama, namun contoh berikut memvisualisaikan method
respon() nama sama, namun pada kelas yang berbeda
dapat memilki isi method yang berbeda pula tergantung
kelasnya.

Contoh pertama :
class EkspresiWajah{
public String respons() {
return(´Perhatikan ekspresi wajah saya´);
}
}
class Gembira extends EkspresiWajah{
public String respons() {
return(´ha ha ha«´);
}
}
class Sedih extends EkspresiWajah{
public String respons() {
return(´hik hik ngeee ngeee ngeee´);
}
}
class Marah extends EkspresiWajah{
public String respons() {
return(´Hai kurang ajar«_´);
}
}
class MainEkspresiWajah{
public static void main(String args[]) {
EkspresiWajah objEkspresi = new EkspresiWajah();
Gembira objGembira = new Gembira();
Sedih objSedih = new Sedih();
Marah objMarah = new Marah();
EkspresiWajah[] arrEkspresi = new EkspresiWajah[4];
arrEkspresi[0] = objEkspresi;
arrEkspresi[1] = objGembira;
arrEkspresi[2] = objSedih;
arrEkspresi[3] = objMarah;
System.out.println(´Ekspresi[0] : ´+arrEkspresi[0].respons());
System.out.println(´Ekspresi[1] : ´+arrEkspresi[1].respons());
System.out.println(´Ekspresi[2] : ´+arrEkspresi[2].respons());
System.out.println(´Ekspresi[3] : ´+arrEkspresi[3].respons());
}
}

Contoh kedua :
public class Employee {
private String name;
private double salary;
protected Employee(String n, double s) {
name = n;
salary = s;
}
protected String getDetails() {
return ´Name : ´+name+ ´\nSalary : ´+salary;
}
public void cetak() {
System.out.println(´coba di Employee´);
}
}
public class Manager extends Employee {
private String department;
public Manager(String nama, double salary, String dep) {
super(nama, salary);
department = dep;
}
public String getDepartment() {
return department;
}
public String getDetails() {
return super.getDetails()+ ´\nDepartment : ´+getDepartment();
}
public void cetak() {
System.out.println(´Coba di Manager´);
}
}
public class View {
public static void main(String[] args) {
Employee e = new Employee(´Ali´,1200000);
Employee em = new Manager(´Ali´,1200000,´Informatika´);
System.out.println(´Data employee :\n´+e.getDetails());
System.out.println(´Data manager :\n´+em.getDetails());
em.cetak();
}
}




Inheritance

Semua attribute dan method dari suatu kelas super
dapat diwariskan ke subkelas.
Dalam hirarki kelas, jika kelas C merupakan turunan
kelas B, dan kelas B merupakan turunan kelas A, maka
otomatis attribute dan method kelas A juga diwariskan
kelas C.

Bentukpewarisan :

[modifier] class namaSubKelas extend namaKelasSuper {
// classBody
}



Information Hiding dan Encapsulation

Information Hiding adalah menyembunyikan
attribute suatu objek dari objek lain.
Encapsulation adalah menyembunyikan method
suatu objek dari objek lain.
Attribute maupun method disembunyikan dengan
cara memberikan modifier private.
Method dalam kelas yang sama, yang memberikan
nilai pada attribute private disebut method setter,
sedangkan method masih dalam kelas yang sama, yang
mengambil nilai dari attribute private disebut getter.

// Contoh program Information Hiding dan Encapsulation
public class PersegiPanjang{
private double panjang; // attribute yg di hide
private double lebar; // attribute yg di hide
private double tinggi; // attribute yg di hide
public PersegiPanjang() {
panjang = 0;
lebar = 0;
}
private double luas(double p, double l) { // di encap
return p*l;
}
public void setPanjang(double panjang) {
this.panjang = panjang;
}
public void setLebar(double lebar) {
this.lebar = lebar;
}
public double getPanjang() {
return panjang;
}
public double getLebar() {
return lebar;
}
public double getLuas() {
return luas(panjang, lebar);
}
}
public class MainPersegiPanjang {
public static void main(String[] srgs) {
PersegiPanjang pp = new PersegiPanjang();
pp.setPanjang(10);
pp.setLebar(20);
System.out.println(´Panjang : ´+ pp.getPanjang());
System.out.println(´Lebar : ´+ pp.getLebar());
System.out.println(´Luas : ´+ pp.getLuas());
}
}