Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Polymorphisme
1. 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
2. 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
3. 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
4. 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.
5. 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.
6. Contoh
VMI
class Employee{}
class Manager extends Employee{}
…
Employee emp = new Manager();
emp.getDetails();
7. 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)
8. 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”);
9. 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();
10. 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.
11. Polymorphic
Arguments
//Polymorphic Arguments : Hitung.java
public class Hitung {
public double hitungSalary(Employee e) {
return e.salary;
}
}
//Polymorphic Arguments : TestPolyArg.java
public 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));
}
}
12. Kenapa diperlukan
polymorphic arguments?
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.
13. 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;
}
}
}
14. 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.
15. Casting
Object
…
if (peg instanceof Manajer) {
Manajer man = (Manajer) peg;
…lakukan tugas-tugas
manajer…
}
…