Polimorphism, Overload dan Overiding
Polymorphism merupakan salah satu pilar dari Pemrograman Berorientasi Object yaitu kemampuan object untuk mempunyai tipe yang sama dengan aksi yang berbeda terhadap pesan yang sama.
Polymorphism dari struktur katanya dapat diartikan “memiliki banyak bentuk”. Dalam arti luasnya adalah suatu object yang dapat memiliki berbagai bentuk, sebagai object dari Class sendiri atau object dari superclass (induk class) nya. Subclass dapat mendefinisikan perilaku yang akan dilakukannya dengan sendiri tanpa harus murni dari superclass.
Dalam Polymorphism ada dua method yang biasa digunakan yaitu :
1. Overloading, dimana beberapa method yang memiliki nama yang sama tetapi beda fungsi. Overloading sendiri memiliki ciri nama method harus sama, daftar parameter harus berbeda dan return type yang boleh sama boleh juga tidak.
Contoh sederhana Overloading dapat dilihat di
2. Overriding, menyatakan keadaan dimana method pada subclass menolak method pada superclass-nya. Ciri dari Overriding adalah nama method, daftar parameter, dan return type yang harus sama.
C#
namespace Modul_3_Overload
{
class Program
{
public static void Main(string[] args)
{
Over over1 = new Over();
over1.Header();
over1.set_input(5, 5);
over1.show();
over1 = new Ride();
over1.set_input(5, 5);
over1.show();
Console.ReadKey(true);
}
}
class Over
{
public int satu,dua;
public void set_input(int X,int Y)
{
satu = X; dua = Y;
}
public void Header()
{
Console.WriteLine();
Console.WriteLine(" !!===========================!!");
Console.WriteLine(" !! Tugas OOP 2 Modul 4 !!");
Console.WriteLine(" !!===========================!!");
Console.WriteLine();
Console.WriteLine();
Console.WriteLine(" !!========= OVERRIDE ========!!");
Console.WriteLine();
Console.WriteLine();
}
public virtual void show()
{
Console.WriteLine(" i'm in over");
Console.WriteLine(" Hasil perkalian {0} dan {1} = {2}",satu,dua,satu*dua);
Console.WriteLine();
}
}
class Ride : Over
{
public override void show()
{
Console.WriteLine(" i'm in ride");
Console.WriteLine(" Hasil penjumlahan {0} dan {1} = {2}",satu,dua,satu+dua);
Console.WriteLine();
}
}
}
Tampilan Program setelah di Run
JAVA
package Overide;
public class MainClass
{
public static void main(String[] args)
{
Over over1 = new Over();
over1.Header();
over1.set_input(10, 10);
over1.show();
over1 = new Ride();
over1.set_input(10, 10);
over1.show();
}
}
class Over
{
public int satu,dua;
public void set_input(int a,int b)
{ satu = a;
dua = b; }
public void Header()
{ System.out.println(" ==================================");
System.out.println(" = Override =");
System.out.println(" ==================================");
}
public void show()
{
System.out.println("i'm in over");
System.out.println("Hasil perkalian "+satu+" dan "+dua+" = "+satu*dua);
}
}
class Ride extends Over
{
@Override
public void show()
{
System.out.println("i'm in ride");
System.out.println("Hasil penjumlahan "+satu+" dan "+dua+" = "+(satu+dua));
System.out.println();
System.out.println();
}
}
C++
#include <cstdlib>
#include <iostream>
using namespace std;
class over
{
public : void OperLoad()
{
cout<<" =================================="<<endl;
cout<<" = Overload Method ="<<endl;
cout<<" =================================="<<endl;
}
public : void OperLoad(long banyak,int harga)
{
cout<<"harga per CD = "<<harga<<endl;
cout<<"Anda membeli = "<<banyak<<" biji"<<endl;
}
public : int OperLoad(int harga,long banyak)
{
return harga*banyak;
}
};
int main(int argc, char *argv[])
{
over pro;
long banyak;
const int harga = 5000;
int total;
pro.OperLoad(); // overload method void tanpa parameter
cout<<"Banyak Beli CD = ";
cin>>banyak;
cout<<"\n\n";
pro.OperLoad(banyak,harga); // overload method void dengan 2 parameter
total = pro.OperLoad(harga,banyak); //overload method yang mengembalikan nilai
cout<<"\nAnda harus membayar = "<<total;
cout<<endl<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
#include <cstdlib>
#include <iostream>
using namespace std;
class over
{
public : int satu,dua;
public :
void set_input(int a,int b)
{
satu = a; dua = b;
}
void Header()
{
cout<<" =================================="<<endl;
cout<<" = Override ="<<endl;
cout<<" =================================="<<endl;
cout<<endl;
}
virtual void show()
{
cout<<"i'm in over"<<endl;
cout<<"Hasil perkalian "<<satu<<" dan "<<dua<<" = "<<satu*dua<<endl;
}
};
class ride : public over
{
public : void show()
{
cout<<"i'm in ride"<<endl;
cout<<"Hasil penjumlahan "<<satu<<" dan "<<dua<<" = "<<satu+dua<<endl;
}
};
int main(int argc, char *argv[])
{
over *o = new over();
o->Header();
o->set_input(10,10);
o->show();
o = new ride();
o->set_input(10,10);
o->show();
cout<<endl<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Polymorphisme - Overloading
C#
class Program
{
public static void Main(string[] args)
{
over pro = new over();
byte banyak;
const int harga = 50000;
int total;
pro.OperLoad(); // overload method void tanpa parameter
Console.Write(" Masukkan Banyaknya Mouse = ");
banyak = Convert.ToByte(Console.ReadLine());
Console.WriteLine();
pro.OperLoad(banyak,harga); // overload method void dengan 2 parameter
total = pro.OperLoad(harga,banyak); //overload method yang mengembalikan nilai
Console.WriteLine(" Anda harus membayar = {0}",total);
Console.WriteLine();
Console.Write(" Press any key to continue . . . ");
Console.ReadKey(true);
}
}
class over
{
public void OperLoad()
{
Console.WriteLine();
Console.WriteLine(" !!==================================!!");
Console.WriteLine(" !!= Tugas OOP 2 Modul 4 =!!");
Console.WriteLine(" !!==================================!!");
Console.WriteLine();
Console.WriteLine();
Console.WriteLine(" !!========= Overloading ============!!");
Console.WriteLine();
Console.WriteLine();
Console.WriteLine(" Harga Kaos Telah ditentukan dengan harga sebesar Rp. 45.000 ");
Console.WriteLine();
}
public void OperLoad(byte banyak,int harga)
{
Console.WriteLine(" Harga perMouse = {0}",harga);
Console.WriteLine();
Console.WriteLine(" Anda membeli = {0} Biji",banyak);
Console.WriteLine();
}
public int OperLoad(int harga,byte banyak)
{
return banyak*harga;
}
}
}
Hasil Program Setelah di Run
JAVA
import java.util.*;
public class MainClass
{
public static Scanner baca = new Scanner(System.in);
public static void main(String[] args)
{
over pro = new over();
byte banyak; final int harga = 5000; int total;
pro.OperLoad(); // overload method void tanpa parameter
System.out.print("Banyak Beli CD = ");
banyak = baca.nextByte();
System.out.println("\n\n");
pro.OperLoad(banyak,harga); // overload method void dengan 2 parameter
total = pro.OperLoad(harga,banyak); //overload method yang mengembalikan nilai
System.out.println("\nAnda harus membayar = "+total);
System.out.println();
System.out.print("Press any key to continue . . . ");
}
}
class over
{
public void OperLoad()
{
System.out.println(" ==================================");
System.out.println(" = Overload Method =");
System.out.println(" ==================================");
}
public void OperLoad(byte banyak,int harga)
{
System.out.println("harga per CD = "+banyak);
System.out.println("Anda membeli = "+harga+" biji");
}
public int OperLoad(int harga,byte banyak)
{
return banyak*harga;
}
}
C++
#include <cstdlib>
#include <iostream>
using namespace std;
class over
{
public : void OperLoad()
{
cout<<" =================================="<<endl;
cout<<" = Overload Method ="<<endl;
cout<<" =================================="<<endl;
}
public : void OperLoad(long banyak,int harga)
{
cout<<"harga per CD = "<<harga<<endl;
cout<<"Anda membeli = "<<banyak<<" biji"<<endl;
}
public : int OperLoad(int harga,long banyak)
{
return harga*banyak;
}
};
int main(int argc, char *argv[])
{
over pro;
long banyak;
const int harga = 5000;
int total;
pro.OperLoad(); // overload method void tanpa parameter
cout<<"Banyak Beli CD = ";
cin>>banyak;
cout<<"\n\n";
pro.OperLoad(banyak,harga); // overload method void dengan 2 parameter
total = pro.OperLoad(harga,banyak); //overload method yang mengembalikan nilai
cout<<"\nAnda harus membayar = "<<total;
cout<<endl<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Hasil Program setelah di Run
SILAKAN DI COBA SENDIRI