POLYMORPHISM (Overloading) Pemrograman Berorientasi Objek
Pengantar Polymorphism adalah keadaan suatu entitas yang memiliki banyak bentuk. Contoh: Seorang wanita bisa mempunyai banyak peran, di kantor ia adalah karyawati, bagi suami ia berperan sebagai istri, bagi anak-anak ia adalah ibu Dalam OOP, polymorphism diimplementasikan dalam konsep Overloading dan Overriding CS 3213 2
Gambaran Polymorphism CS 3213
Overloading Method Suatu kelas dapat mengandung beberapa method dengan nama yang sama tetapi dengan komposisi argumen yang berbeda. Perhatikan Contoh berikut CS 3213 4
//file : LumbungPadi.java public class LumbungPadi{ public int persediaan = 0; public int padiDisimpan = 0; public int padiDiambil = 0; public void hitungPersediaan( ){ persediaan = padiDisimpan - padiDiambil; } public void simpanPadi(int tambahanPadi){ padiDisimpan = padiDisimpan + tambahanPadi; public void ambilPadi (int beratPadiYangDiambil){ padiDiambil = padiDiambil + beratPadiYangDiambil; public int hitungPersediaanPadi( ){ return persediaan; public void cetakPersediaan( ){ int persediaanPadiTerakhir = hitungPersediaanPadi( ); System.out.println("Persediaan di lumbung = " + persediaanPadiTerakhir); CS 3213
public int beratPanenan; public LumbungPadi lumbung; //file : Petani.java public class Petani{ public int beratPanenan; public LumbungPadi lumbung; public void lakukanPanen ( ){ beratPanenan = 150; } public void simpanPanenanDiLumbung(){ lumbung.simpanPadi(50); // overloading method public void simpanPanenanDiLumbung(int jumlahPanenan ){ lumbung.simpanPadi(jumlahPanenan); public void simpanPanenanDiLumbung(int jumlahPanenan, LumbungPadi lb){ lb.simpanPadi(jumlahPanenan); public void ambilPanenanDariLumbung(int panenanDiambil){ lumbung.ambilPadi( panenanDiambil); CS 3213
//file : KegiatanPanen.java public class KegiatanPanen{ public static void main(String[ ] args){ LumbungPadi lumbungDesaSukatani = new LumbungPadi ( ); LumbungPadi lumbungDesaSukamaju = new LumbungPadi( ); Petani pakBakri = new Petani( ); Petani daengBaso = new Petani( ); pakBakri.lumbung = lumbungDesaSukamaju; daengBaso.lumbung = lumbungDesaSukatani; pakBakri.lakukanPanen(); pakBakri.simpanPanenanDiLumbung(10); pakBakri.simpanPanenanDiLumbung(); pakBakri.simpanPanenanDiLumbung(40, lumbungDesaSukatani); pakBakri.ambilPanenanDariLumbung(10); daengBaso.lakukanPanen( ); daengBaso.simpanPanenanDiLumbung(90); lumbungDesaSukatani.cetakPersediaan( ); lumbungDesaSukamaju.cetakPersediaan( ); } CS 3213
Pada contoh di atas, pada kelas Petani Pada contoh di atas, pada kelas Petani.java terdapat overloading method yaitu: simpanPanenanDiLumbung(), yang akan melakukan proses penambahan nilai variabel padiDisimpan pada lumbung padi default sebesar 50 (kilogram); simpanPanenanDiLumbung(int jumlahPanenan) yang akan melakukan proses penambahan nilai variabel padiDisimpan pada lumbung padi default sebesar nilai yang dilewatkan ke method ( nilai variabel jumlahPanenan ); - simpanPanenanDiLumbung(int jumlahPanenan, LumbungPadi lb) yang akan melakukan proses penambahan nilai variabel padiDisimpan pada lumbung padi lb (belum tentu merujuk ke lumbung padi default). CS 3213
Aturan Overloading Method Nama method yang digunakan sama Komposisi argumen (tipe atau jumlah argumen) berbeda. Lihat contoh berikut: public set(int x){} public set(int x, String s){} public set(int y, String b){} Bentuk terakhir bukan overloading method karena komposisi argumennya sama dengan method bentuk kedua CS 3213
Overloading Konstruktor Konstruktor (konstruktor) adalah struktur mirip method yang berfungsi untuk membentuk suatu obyek. Konstruktor mempunyai ciri yaitu: o Mempunyai nama yang sama dengan nama class o Tidak mempunyai return type (seperti void, int, double, dan lain-lain) CS 3213
Overloading Konstruktor Contoh: public class Siswa { private int nrp; private String nama; public Siswa(int n, String m){ nrp=n; nama=m; } CS 3213
Overloading Konstruktor Suatu class dapat mempunyai lebih dari 1 konstruktor dengan syarat daftar parameternya tidak boleh ada yang sama. CS 3213
Overloading Konstruktor public class Siswa{ private int nim; private String nama; public Siswa(String m){ nim = 0; nama = m; } //overloading konstruktor public Siswa(int n, String m){ nim = n; CS 3213
Coba implementasikan diagram kelas berikut ke dalam kode program Latihan: Coba implementasikan diagram kelas berikut ke dalam kode program CS 3213
Coba implementasikan diagram kelas berikut ke dalam kode program Latihan: Coba implementasikan diagram kelas berikut ke dalam kode program CS 3213