Polymorphism Materi ke-8 Pemrograman Berbasis Objek
Pengertian Polymorphism = polimorfisme Poly (banyak) + morphos (bentuk) : banyak bentuk Kemampuan untuk menghandle banyak bentuk Kemampuan untuk memproses objek-objek yang berbeda
jenis dan class melalui satu interface yang seragam. Sehingga, listing code implementasinya berbeda
Contoh Ada kelas A yang diturunkan menjadi kelas B,C, dan D. Dengan konsep Polimorfisme, anda dapat menjalankan
method – method yang terdapat pada kelas B,C, dan D hanya dari objek yang diinstansiasi dengan kelas A. Polimorfisme memungkinkan anda mengenali kesamaam diantara kelas yang berbeda.
Keuntungan Kelas yang dibuat (super class) dan kelas baru berdasar super
class dapat digunakan dengan karakteristik yang lebih khusus dari behaviour umum yang dimiliki super class Dapat dibuat super class yang hanya mendefinisikan behaviour namun tidak memberikan implementasi dari metode-metode yang ada Menghindari duplikasi object
Tipe Polymorphism Static Polymorphism Dynamic Polymorphism
Static Polymorphism Contoh pada method overloading Method overloading : penggunaan satu nama untuk beberapa
method yang berbeda parameter Pada overload method, tidak diharuskan menggunakan inheritance, karena dapat digunakan secara public asalkan parameter dan argumennya sesuai
Aturan Overload 1. 2. 3. 4.
5.
Method yang mengoverload HARUS merubah argument list. Method yang mengoverload BOLEH merubah return type. Method yang mengoverload BOLEH merubah access modifier. Method yang mengoverload BOLEH melempar checked exception yang lebih luas atau baru sama sekali dari method yang dioverload. Suatu method dapat dioverload di class tersebut atau di subclassnya.
Contoh Static Polymorphism Tanpa inheritance
Contoh Static Polymorphism Dengan inheritance
Dynamic Polymorphism Contoh pada method overriding Method overriding : method dalam class turunan yang
memiliki nama, return type argumen method yang sama dengan fungsi dalam class induk Pada override method, diharuskan menggunakan inheritance, agar dapat digunakan pada tiap-tiap class. Dengan overriding, kita dapat memiliki pengenal method yang sama persis dengan dengan pengenal method yang ada di super class, tapi berbeda behavior.
Memanggil method yang dioverride di super class Kita dapat memanggil method yang dioverride di superclass
dengan keyword super. Penggunaan keyword super hanya dapat memanggil method di superclassnya langsung. Tidak dapat memanggil method di superclass dari superclass.
Contoh Dynamic Polymorphism Contoh 1
Contoh Dynamic Polymorphism
Contoh Dynamic Polymorphism
Contoh Dynamic Polymorphism Contoh 2
Contoh Dynamic Polymorphism Hasil Tampilan
Abstract Class dan Interface Materi ke-9 Pemrograman Berbasis Objek
Abstract Class
Abstract Class Abstract class adalah class yang mempunyai setidaknya satu
abstract method. Abstract method adalah method yang tidak memiliki body (hanya deklarasi method). Abstract class tidak bisa dibuat obyeknya. Obyek hanya bisa dibuat dari non-abstract class (concrete class). Konsekuensinya suatu abstract class haruslah diturunkan dimana pada subclass tersebut berisi implementasi dari abstract method yang ad di ladi super class-nya.
Contoh Class Abstract
Abstract Bila sub class yang diturunkan dari abstract class tidak
mengimplementasikan isi semua method abstrak parent class, maka subclass tersebut harus tetap dideklarasikan abstract. Dan deklarasi method abstract pada subclass tersebut boleh tidak dituliskan kembali.
Aturan pada Abstract Class 1. Jika sebuah kelas memiliki method abstrak maka kelas itu
harus menjadi kelas abstrak. 2. Jika sebuah kelas abstrak diturunkan menjadi kelas konkret, maka semua method abstrak dari kelas abstrak haruslah ditulis ulang / dibuat ulang di kelas konkretnya dan diberi detail dari methodnya. 3. Jika method abstrak di turunkan dan kelas turunannya adalah kelas abstrak, maka tidak perlu menulis ulang method yang abstrak.
Contoh Untuk membuat superclass yang umum, dapat dibuat
suatu superclass yang memiliki beberapa metode dengan implementasi dan beberapa tidak. Class ini disebut abstract class.
Secara umum, abstract class adalah class yang tak dapat
diinstansiasi. Biasanya abstract class berada dalam hierarki tertinggi dalam PBO (pemrograman berorientasi objek). Metode di dalam abstract class yang tidak berisi kode program adalah abstract method (metode abstract). Nantinya, method ini harus di-override oleh subclass-nya. Jadi, hanya ditulis deklarasi method tanpa tubuh metode dan memakai keyword abstract.
Deklarasi Method ini disebut sebagai prototype method.
Suatu metode yang sudah dideklarasikan abstract harus
diakhiri tanpa memakai tubuh program. Jika ditulis seperti ini:
Maka akan terjadi error seperti berikut:
Ketika sebuah class dibuat sebagai subclass dari class
LivingThing, class itu harus meng-override metode abstract walk(). Jika tidak, class tersebut tidak akan dapat dikompilasi dan akan terjadi error.
Contoh pembuatan subclass yang benar:
Jika class Human tidak meng-override metode walk(),
maka akan muncul pesan error. Tapi, walau class Human tidak meng-override metode yang lain seperti breath() dan eat() (yang tidak abstract) tidak akan terjadi error. Jadi, fungsi abstract class tak lain adalah untuk membuat prototype bagi class di tingkatan paling atas dalam hierarki class dan subclass-nya yang menyediakan detail implementasi dari abstract class tersebut.
Kegunaan Class Abstract Class Abstract berisi beberapa method dan beberapa method
abstract. Class Abstract berisi sebagian implementasi dan subclass yang melengkapi implementasinya. Dengan kata lain Class Abstract memiliki beberapa kesamaan (Bagian yang diimplementasikan oleh subclass) dan memiliki perbedaan (method yang dimiliki sendiri oleh class abstract). Deklarasikan method abstract, jika ada satu atau lebih subclass yang diharapkan mempunyai fungsionalitas yang sama tapi implementasi berbeda. Gunakan class abstract untuk mendefinisikan behavior secara umum sebagai superclass, sedangkan subclass menyediakan implementasi detail. Jika class abstract semua method merupakan method abstract, sebaiknya class abstract tersebut diganti menjadi Interface.
Interface
Interface Hanya memuat deklarasi dan struktur method tanpa
memuat detail implementasinya. Keyword yang digunakan adalah interface.
Interface Outputnya:
I/O Java BufferedReader JOptionPane
I/O Java BufferedReader
I/O Java BufferedReader
I/O Java JOptionPane
I/O Java JOptionPane