POLIMORFISME 2
-
Upload
prescott-west -
Category
Documents
-
view
104 -
download
4
description
Transcript of POLIMORFISME 2
![Page 1: POLIMORFISME 2](https://reader033.fdocument.pub/reader033/viewer/2022061518/568135b5550346895d9d1acf/html5/thumbnails/1.jpg)
01
POLIMORFISME 2Imam Fahrur Rozi
![Page 2: POLIMORFISME 2](https://reader033.fdocument.pub/reader033/viewer/2022061518/568135b5550346895d9d1acf/html5/thumbnails/2.jpg)
Topik
• Virtual Method Invocation• Polymorphic arguments• Operator instanceof• Casting & Convertion Objects
![Page 3: POLIMORFISME 2](https://reader033.fdocument.pub/reader033/viewer/2022061518/568135b5550346895d9d1acf/html5/thumbnails/3.jpg)
Virtual Method Invocation
• 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 4: POLIMORFISME 2](https://reader033.fdocument.pub/reader033/viewer/2022061518/568135b5550346895d9d1acf/html5/thumbnails/4.jpg)
Contoh Virtual Method Invocation
class Employee{}
class Manager extends Employee{}
…
Employee emp = new Manager();
emp.getDetails();
![Page 5: POLIMORFISME 2](https://reader033.fdocument.pub/reader033/viewer/2022061518/568135b5550346895d9d1acf/html5/thumbnails/5.jpg)
Virtual Method InvocationYang 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
![Page 6: POLIMORFISME 2](https://reader033.fdocument.pub/reader033/viewer/2022061518/568135b5550346895d9d1acf/html5/thumbnails/6.jpg)
Virtual Method Invocation• Bagaimana dengan konstruktor yang dijalankan?• 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 7: POLIMORFISME 2](https://reader033.fdocument.pub/reader033/viewer/2022061518/568135b5550346895d9d1acf/html5/thumbnails/7.jpg)
![Page 8: POLIMORFISME 2](https://reader033.fdocument.pub/reader033/viewer/2022061518/568135b5550346895d9d1acf/html5/thumbnails/8.jpg)
Virtual Method Invocation pada C++
Pada method yang akan dilakukan VMI harus ditandai dengan kata virtual.
![Page 9: POLIMORFISME 2](https://reader033.fdocument.pub/reader033/viewer/2022061518/568135b5550346895d9d1acf/html5/thumbnails/9.jpg)
Polymorphic Arguments
Polymorphic arguments adalah tipe data suatu argumen pada suatu method yang bisa menerima suatu nilai yang bertipe subclass-nya.
![Page 10: POLIMORFISME 2](https://reader033.fdocument.pub/reader033/viewer/2022061518/568135b5550346895d9d1acf/html5/thumbnails/10.jpg)
Polymorphic Arguments
![Page 11: POLIMORFISME 2](https://reader033.fdocument.pub/reader033/viewer/2022061518/568135b5550346895d9d1acf/html5/thumbnails/11.jpg)
class Pegawai {…
}
class Manajer extends Pegawai {…
}
public class Tes {public static void Proses(Pegawai peg) {
…}
public static void main(String args[]) {Manajer man = new Manajer();Proses(man);
}}
![Page 12: POLIMORFISME 2](https://reader033.fdocument.pub/reader033/viewer/2022061518/568135b5550346895d9d1acf/html5/thumbnails/12.jpg)
Operator instanceof
Pernyataan instanceof sangat berguna untuk mengetahui tipe asal dari suatu polymorphic arguments
![Page 13: POLIMORFISME 2](https://reader033.fdocument.pub/reader033/viewer/2022061518/568135b5550346895d9d1acf/html5/thumbnails/13.jpg)
Operator instanceof
![Page 14: POLIMORFISME 2](https://reader033.fdocument.pub/reader033/viewer/2022061518/568135b5550346895d9d1acf/html5/thumbnails/14.jpg)
…class Kurir extends Pegawai {
…}
public class Tes {public static void Proses(Pegawai peg) {
if (peg instanceof Manajer) { … lakukan tugas-tugas manajer…
} else if (peg instanceof Kurir) { … lakukan tugas-tugas kurir…
} else { … lakukan tugas-tugas lainnya…
}}
public static void main(String args[]) {Manajer man = new Manajer();Kurir kur = new Kurir();Proses(man);Proses(kur);
}}
![Page 15: POLIMORFISME 2](https://reader033.fdocument.pub/reader033/viewer/2022061518/568135b5550346895d9d1acf/html5/thumbnails/15.jpg)
Casting object
• Seringkali pemakaian instanceof diikuti dengan casting object dari tipe parameter ke tipe asal.
![Page 16: POLIMORFISME 2](https://reader033.fdocument.pub/reader033/viewer/2022061518/568135b5550346895d9d1acf/html5/thumbnails/16.jpg)
• 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 17: POLIMORFISME 2](https://reader033.fdocument.pub/reader033/viewer/2022061518/568135b5550346895d9d1acf/html5/thumbnails/17.jpg)
…if (peg instanceof Manajer) {
Manajer man = (Manajer) peg;
…lakukan tugas-tugas manajer…}
…
![Page 18: POLIMORFISME 2](https://reader033.fdocument.pub/reader033/viewer/2022061518/568135b5550346895d9d1acf/html5/thumbnails/18.jpg)
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.
![Page 19: POLIMORFISME 2](https://reader033.fdocument.pub/reader033/viewer/2022061518/568135b5550346895d9d1acf/html5/thumbnails/19.jpg)
Tanpa polymorphic arguments
…public class Tes {
public static void ProsesManajer() {…lakukan tugas-tugas manajer…
}
public static void ProsesKurir() {…lakukan tugas-tugas kurir…
}…
}