Polymorphisme

17
Polymorphisme Angela Christine H. (130533608098) Asnita Meydelia C. K. (130533608143) Devi Mega Risdiana (130533608) M. Lutfi Abror (130533608118) M. Wildan Triwahyu (130533608) Pranadya Bagus I. (130533608) Zahrina Data D. (130533608098) By : Kelompok 4

Transcript of Polymorphisme

Page 1: Polymorphisme

PolymorphismeAngela Christine H. (130533608098)

Asnita Meydelia C. K.(130533608143)

Devi Mega Risdiana (130533608)

M. Lutfi Abror (130533608118)

M. Wildan Triwahyu (130533608)

Pranadya Bagus I. (130533608)

Zahrina Data D.(130533608098)

By : Kelompok 4

Page 2: Polymorphisme

Definisi Polimorphism

Polymorphism adalah konsep yang memungkinkan mendefinisikan method pada class anak (sub class) yang memiliki definisi sama dengan method induk (super class)

Pendefinisian kembali method dalam class anak dengan nama yang sama dari metod class induk sering disebut OverRiding

Page 3: Polymorphisme

Misal :

public class Employee {public String nama;public String gaji;

void infoNama(){System.out.println(“Nama” + nama);

}}

public class Manajer extends Employee {public String departemen;

}

Manager adalah Employee

Page 4: Polymorphisme

KONSEP

Satu obyek hanya boleh mempunyai satu bentuk saja, yaitu bentuk yang diberikan ketika obyek dibuat.

Reference variabel bisa menunjuk ke bentuk yang berbeda.

Ex :

Employee emp = new Manager();Reference variabel dari emp adalah Employee.

Bentuk emp adalah Employee.

Page 5: Polymorphisme

Virtual Method Invocation(VMI)

Virtual method invocation merupakan suatu hal yang sangat penting dalam konsep polimorfisme.

Syarat terjadinya VMI adalah sebelumnya sudah terjadi polymorphism.

Pada saat obyek yang sudah dibuat tersebut memanggil overridden method pada parent class, kompiler Java akan melakukan invocation (pemanggilan) terhadap overriding method pada subclass, dimana yang seharusnya dipanggil adalah overridden.

Page 6: Polymorphisme

Contoh VMI

class Employee{}

class Manager extends Employee{}

Employee emp = new Manager();

emp.getDetails();

Page 7: Polymorphisme

VMI

Yang terjadi pada contoh: Obyek e mempunyai behavior yang sesuai dengan runtime

type bukan compile type. Ketika compile time e adalah Employee. Ketika runtime e adalah Manager. Jadi :

emp hanya bisa mengakses variabel milik Employee. emp hanya bisa mengakses method milik Manager

Pada pembentukan Employee e = new Manager();

Pertama kali akan menjalankan konstruktor Manager, ketika ketemu super() maka akan menjalankan konstruktor Employee (superclass), setelah semua statement dieksekusi baru kemudian menjalankan konstruktor Manager (subclass)

Page 8: Polymorphisme

Heterogenous

Array

Objek-objek dari kelas yg sama dapat disimpan didalam array. Ini disebut homogeneous array, contohnya sbb :

Mahasiswa[] mhs = new Mahasiswa[3];

mhs[0] = new Mahasiswa(“0572123”, “Anton”);

mhs[1] = new Mahasiswa(“0572070”, “Renny”);

mhs[2] = new Mahasiswa(“0572237”, “Benny”);

Page 9: Polymorphisme

Heterogenous

Array

Semua kelas di java adalah turunan dari kelas Object.

Hal ini menyebabkan dapat dibuatnya array dari objek2 yg berasal dari kelas yg berbeda2, sehingga disebut heterogenous array.

Employee[] staff = new Employee[3];staff[0] = new Employee();staff[1] = new Manager();staff[2] = new Engineer();

Page 10: Polymorphisme

Polymorphic Arguments

Dengan menggunakan Polymorphic Arguments, kita dapat membuat method yang dapat menerima generic object (parent objek) dan tetap dapat bekerja dengan baik menggunakan objek2 dari kelas turunannya.

Page 11: Polymorphisme

Polymorphic Arguments

//Polymorphic Arguments : Hitung.javapublic class Hitung {public double hitungSalary(Employee e) {

return e.salary;}

}//Polymorphic Arguments : TestPolyArg.javapublic class TestPolyArg {public static void main(String[ ] args) {

Employee p1 = new Employee();Manager p2 = new Manager();Hitung p3 = new Hitung();System.out.println("Salary p1 : " +

p3.hitungSalary(p1));System.out.println("Salary p2 : " +

p3.hitungSalary(p2));}

}

Page 12: Polymorphisme

Mengefisienkan pembuatan program

Misal Employee mempunyai banyak subclass.

Maka kita harus mendefinisikan semua method yang menangani behavior dari masing-masing subclass.

Dengan adanya polymorphic arguments kita cukup mendefinisikan satu method saja yang bisa digunakan untuk menangani behavior semua subclass.

Kenapa diperlukan polymorphic arguments?

Page 13: Polymorphisme

Operator Instaceof

Untuk mengetahui objek yang sebenarnya dari polymorphic Arguments, dapat digunakan operator instanceof :

//Polymorphic Arguments : Hitung2.java

public class Hitung2 {public double hitungSalary(Employee e) {

if (e instanceof Manager) {return e.salary*2;

} else {return e.salary;

}}

}

Page 14: Polymorphisme

Casting Object

Seringkali pemakaian instanceof diikuti dengan casting object dari tipe parameter ke tipe asal.

Tanpa adanya casting obyek, maka nilai yang akan kita pakai setelah proses instanceof masih bertipe parent class-nya, sehingga jika ia perlu dipakai maka ia harus di casting dulu ke tipe subclass-nya.

Page 15: Polymorphisme

Casting Object

…if (peg instanceof Manajer) {Manajer man = (Manajer) peg;…lakukan tugas-tugas manajer…} …

Page 16: Polymorphisme

Saatnya Bertanya

Page 17: Polymorphisme