Thursday, October 5, 2017

Polymorphism

Assalamu'alaikum

Selamat pagi sobat My Study semua, bagaimana kabarnya hari ini ? semoga dalam keadaan baik-baik saja yahhh...

Sudah lama tidak memposting lagi, dan kali ini mimin ingin kembali posting mengenai Polymorphism pada Pemrograman Berbasis Objek Java, dan selain itu postingan ini juga ditujukan untuk menyelesaikan tugas kuliah mimin dan kelompok juga sih hehe...

Ok, mari kita masuk ke dalam materinya yahhh, sebelum kita bahas terlalu mendalam, hal pertama yang harus dipahami ialah

apa itu polymorphism ?
dan ada apa saja di dalam polymorphism ?

Karakteristik dari polymorphism yaitu memungkinkan suatu objek dapat memiliki berbagai bentuk atau banyak bentuk. Bentuk dari objek ini bisa sebagai Object dari Classnya sendiri atau Object dari
superClassnya.
atau
suatu aksi yang memungkinkan pemrogram menyampaikan pesan tertentu keluar dari hirarki obyeknya, dimana obyek yang berbeda memberikan tanggapan/respon terhadap pesan yang sama sesuai dengan sifat masing-masing obyek.

Contoh code Program Method Overriding :
DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
  1. //Buat Class Binatang
  2. public class Binatang {
  3.  
  4.     public void tampilSuara(){
  5.      //membuat method tampil suara ()
  6.     System.out.println("Tampil Suara Binatang ");
  7.      //statement  dari perilaku yaitu menampilkan pesan text
  8.       }
  9. }
  10. //Buat Class Anjing
  11. public class Anjing extends Binatang {
  12.    
  13.     public void tampilSuara(){
  14.         //membuat method tampilSuara() yang sama dengan class Binatang
  15.     System.out.println("Suara Anjing : Guk Guk Guk ");
  16.        //statement  dari perilaku yaitu menampilkan pesan text
  17.        // berbeda dari class binatang
  18.    }
  19. }
  20. //Buat Class Kucing
  21. public class Kucing extends Binatang
  22. {
  23.   public void tampilSuara(){
  24.      //membuat method tampilSuara() yang sama dengan class Binatang
  25.     System.out.println("Suara Kucing : Meow Meow");
  26.      //statement  dari perilaku yaitu menampilkan pesan text
  27.        // berbeda dari class binatang
  28.        
  29.    }
  30.    
  31. }
  32. //Main Class
  33. public class Cetak {  
  34.     //Main Class
  35.     public static void main(String[] okedroid) {  //method void main utama
  36.    Anjing object = new Anjing();
  37.    Kucing object2 = new Kucing();
  38.    object.tampilSuara(); //memanggil method sama namun dengan hasil berbeda
  39.    object2.tampilSuara(); //memanggil method sama namun dengan hasil berbeda
  40.     }
  41. }



Output :

Suara Anjing : Guk Guk Guk 
Suara Kucing : Meow Meow


Kemampuan method sama namun dengan paramater yang berbeda-beda ,ini juga bisa disebut method Overloading. Method ini juga menganut konsep dari Polymorphism.

Contoh code Program Method Overloading :
DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
  1. public class Cetak {  
  2.     //Main Class
  3.    
  4.     static double maxNum(double a, double b){
  5.         //method sama parameter berbeda
  6.         //tipe data double
  7.         if (> b){
  8.             return a;
  9.         }
  10.         else {
  11.             return b;
  12.         }
  13.     }
  14.     static int maxNum(int a ,int b){
  15.         //method sama parameter berbeda
  16.         //tipe data integer
  17.         if (> b ){
  18.             return a;
  19.         }
  20.         else {
  21.             return b;
  22.         }
  23.     }
  24.     public static void main(String[] okedroid) {  //method void main utama
  25.         System.out.println (maxNum(9,20));
  26.         System.out.println(maxNum(3.16,7.88));
  27.         //hasil akan tampil sesuai dengan tipe data parameternya
  28.         // 9,20 = tipe data integer
  29.         // 3.16,7.88 = tipe data double      
  30.  
  31.     }
  32. }



Output :
20
7.88

Contoh code lain yang bisa kita gunakan , dengan menggunakan  konsep Polymorphism.

Berikut codenya :



DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
  1. Anak.java //Sub Class
  2. public class Anak extends OrangTua{
  3.  
  4.     @Override
  5.     public void bisaMakan() {
  6.      System.out.println("Anak Bisa Makan !");
  7.      
  8.      //mengoverride method dari class Orangtua (Super Class)
  9.        
  10.     }
  11.  
  12.     }
  13.  
  14. OrangTua.java //Super Class
  15. public class OrangTua {
  16.    
  17.   String makan = "OrangTua Bisa Makan !";
  18.    
  19.     public void bisaMakan(){
  20.  
  21.         System.out.println(makan);
  22.        
  23.         //mendefinisikan method dari class OrangTua (Super Class)
  24.        
  25.     }
  26.  
  27. }
  28.  
  29.  
  30. Latihan.java //Main Class
  31.  
  32. public class Latihan {
  33.  
  34.     public static void main(String[] okedroid) {
  35.         {
  36.  
  37.      
  38.        OrangTua anak = new Anak();
  39.        //membuat objek dengan class OrangTua(Super Class)
  40.        //namun dengan Constructor Anak (Sub Class)
  41.      
  42.        anak.bisaMakan();
  43.        //memanggil method bisa makan  
  44.       //value yang tampil adalah
  45.      // value di definisikan di class Anak (Sub Class)
  46.        
  47.         }
  48.    
  49.  
  50.     }
  51.    
  52.  
  53. }
Output:

Anak Bisa Makan !

 Penjelasan : 

Seperti yang kalian lihat pada code diatas , kita dapat membuat objek dengan class OrangTua (Super class ) ,namun dengan Constructor(Anak()) dari class Anak (Sub Class). Nah , nilai atau value akan secara otomatis tampil ,adalah nilai atau value yang berada di class Anak. Yaitu :  Anak Bisa Makan !.


Nah , bagaimana caranya jika kita ingin mengakses method yang bukan dari hasil overriding(override) dari class OrangTua ?. Untuk itu , kita perlu mengkonversikan class dari objek yang menggunakan konsep Polymorphism.

Berikut contoh codenya:

DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
  1. Anak.java
  2. public class Anak extends OrangTua
  3. {
  4.  
  5.     public void anakLagiMakan(){
  6.         //method dari class Anak yang bukan override
  7.          
  8.         System.out.println("Anak Lagi Makan !");
  9.        
  10.     }
  11.     }
  12.    
  13. Latihan.java //Main Class
  14.  
  15. public class Latihan {
  16.  
  17.     public static void main(String[] okedroid) {
  18.         {
  19.  
  20.        OrangTua anak = new Anak();
  21.        //membuat objek dengan class OrangTua
  22.        //dengan constructor anak
  23.      
  24.      
  25.        Anak konversianak = (Anak)anak;
  26.        //membuat objek dan mengkonversi objek dari class Anak
  27.        //agar dapat mengakses method yang bukan override
  28.        
  29.        konversianak.anakLagiMakan();
  30.        
  31.        //mengakses method yang ada di class Anak
  32.        //yang bukan merupakan overriding atau override
  33.         }
  34.    
  35.     }

Output:

 Penjelasan :

Pada code diatas , kita dapat mengetahui bahwa  ,untuk mengakses method yang bukan hasil overriding(override) dari class OrangTua, kita dapat mengkonversikan class dari objek dengan menggunakan syntax.  ClassChild objekchild = (ClassChild)objekparent;  . 


Sumber :
https://hanakirei91.wordpress.com/2010/04/14/pengertian-polymorphisme-inheritance-dan-enkapsulasi/
http://www.okedroid.com/2016/06/belajar-polymorphism-overriding-overloading-di-bahasa-pemrograman-java.html