Anda di halaman 1dari 10

OOP2: Polymorphism (C#, Java, C++)

Polymorphism

Polymorphism adalah kemampuan 2 buah object yang berbeda untuk merespon pesan permintaan yang sama
dalam suatu cara yang unik. Contoh, saya melatih anjing saya dengan perintah untuk menggonggong dan juga
saya melatih kuda untuk merespon perintah saya untuk meringkik. Saya lakukan latihan untuk merespon kepada
mereka dengan perintah lisan.

Melalui polymorphism saya tahu bahwa anjing dan kuda akan merespon dengan gonggongan atau ringkikan.
Polymorphism itu sendiri terbagi dua yaitu: Overloading dan Overiding

 Overloading : adalah pemakaian beberapa methods ataupun properties dengan nama yang sama, tetapi
memiliki daftar parameter/argument yang berbeda. Perbedaan yang dimaksud adalah beda jumlah parameter,
beda tipe data, atau beda keduanya (jumlah parameter dan tipe data). Methods ataupun properties yang hanya
beda return value (nilai balik) tidak bisa dikatakan sebagai overloading. Keyword yang dipakai adalah
Overloads. Jika dalam satu class, keyword ini bersifat optional artinya kita tidak harus menambahkan
keyword Overloads ketika mendefinisikan beberapa methods ataupun properties yang menerapkan konsep
overloading. Apabila kita tetap ingin memakainya, maka keyword Overloads harus digunakan di semua
methods ataupun properties tadi. Apabila beda class, keyword Overloads ini harus digunakan.
 Overriding : kemampuan class turunan untuk memodifikasi methods atau properties dari class induk. Dengan
overriding kita bisa membuat implementasi baru pada methods atau properties di class turunan yang berbeda
dengan methods atau properties yang ada pada class induk.
Perbedaan utama antara Overloading dengan Overriding adalah pada pemakaian parameter. Pada overloading
kita bisa mengubah parameter, sedangkan pada overriding kita tidak boleh mengubah parameter.
Ada beberapa keyword yang bisa dipakai di overriding, antara lain:
 Keyword Overridable
Keyword ini digunakan pada methods atau properties di class induk yang menandakan bahwa methods atau
properties tadi bisa di-override pada class turunan.
 Keyword Overrides
Keyword ini digunakan pada class turunan yang menandakan bahwa methods atau properties tadi meng-override
methods atau properties yang ada di class induk.
 Keyword Not Overridable
Keyword ini digunakan pada methods atau properties di suatu class yang menandakan bahwa methods atau
properties tadi tidak bisa di-override pada class turunan.
Keyword MustOverride
Keyword ini digunakan untuk mendeklarasikan abstract methods atau abstract properties. Hanya ada deklarasi
header di sini, tanpa ada pendefinisian implementasi. Class yang mempunyai abstract methods atau abstract
properties harus didefinisikan juga sebagai abstract class dengan keyword MustInherit.
nahh langsung kita lihat contoh syntax polimorfis yang Overloading dulu yaakk,,
>>>Overloading C#
1 namespace csharp_polymorpism
{
2 public class KelilingSegi
3 {
4 public double sisiA;
5 public double sisiB;
6 public double sisiC;
//Constuctor satu
7 public void Keliling (double a){
8 this.sisiA=a;
9 this.sisiB=1;
10 this.sisiC=1;
}
11 //Constuctor dua
12 public void Keliling (double a, double b){
13 this.sisiA=a;
14 this.sisiB=b;
this.sisiC=1;
15 }
16 //Constuctor tiga
17 public void Keliling (double a, double b, double c){
18 this.sisiA=a;
19 this.sisiB=b;
this.sisiC=c;
20 }
21 }
22 class Program
23 {
public static void Main(string[] args)
24 {
25 KelilingSegi tampil = new KelilingSegi();
26 KelilingSegi tampil_dua = new KelilingSegi();
27 KelilingSegi tampil_tiga = new KelilingSegi();
28 Console.WriteLine("Tampil Constructor Pertama");
tampil.Keliling(10);
29 Console.WriteLine("Sisi A = "+tampil.sisiA);
30 Console.WriteLine("Sisi B = "+tampil.sisiB);
31 Console.WriteLine("Sisi C = "+tampil.sisiC);
32 Console.WriteLine("Tampil Constructor Kedua");
33 tampil_dua.Keliling(10, 11);
Console.WriteLine("Sisi A = "+tampil_dua.sisiA);
34 Console.WriteLine("Sisi B = "+tampil_dua.sisiB);
35 Console.WriteLine("Sisi C = "+tampil_dua.sisiC);
36 Console.WriteLine("Tampil Constructor Ketiga");
37 tampil_tiga.Keliling(10, 11, 12);
Console.WriteLine("Sisi A = "+tampil_tiga.sisiA);
38 Console.WriteLine("Sisi B = "+tampil_tiga.sisiB);
39 Console.WriteLine("Sisi C = "+tampil_tiga.sisiC);
40 Console.Write("Press any key to continue . . . ");
41 Console.ReadKey(true);
}
42 }
43 }
44

>>>Overloading Java
1 package keliling;
public class KelilingSegi {
2 double sisiA;
3 double sisiB;
4 double sisiC;
5 //Constuctor satu
KelilingSegi (double a)
6
{
7 this.sisiA=a;
8 this.sisiB=1;
9 this.sisiC=1;
10 }
//Constuctor dua
11 KelilingSegi (double a, double b)
12 {
13 this.sisiA=a;
14 this.sisiB=b;
15 this.sisiC=1;
}
16 //Constuctor tiga
17 KelilingSegi (double a, double b, double c)
18 {
19 this.sisiA=a;
this.sisiB=b;
20 this.sisiC=c;
21 }
22 }
23 -------------------------------------------------------------------------------
24 package keliling;
public class Keliling {
25 public static void main(String[] args) {
26 System.out.println("Tampil Constructor Pertama");
27 KelilingSegi tampilan = new KelilingSegi (10);
28 System.out.println("Sisi A : "+tampilan.sisiA);
System.out.println("Sisi B : "+tampilan.sisiB);
29 System.out.println("Sisi C : "+tampilan.sisiC);
30
31 System.out.println("Tampil Constructor Kedua");
32 KelilingSegi tampilan_dua = new KelilingSegi (10, 12.3);
33 System.out.println("Sisi A : "+tampilan_dua.sisiA);
System.out.println("Sisi B : "+tampilan_dua.sisiB);
34 System.out.println("Sisi C : "+tampilan_dua.sisiC);
35 System.out.println("Tampil Constructor Ketiga");
36 KelilingSegi tampilan_tiga = new KelilingSegi (10, 12.3, 11.5);
37 System.out.println("Sisi A : "+tampilan_tiga.sisiA);
38 System.out.println("Sisi B : "+tampilan_tiga.sisiB);
System.out.println("Sisi C : "+tampilan_tiga.sisiC);
39 }
}

>>>Overloading C++
1 #include
using namespace std;
2 class SegiTiga
3 {
4 public:
5 double getKeliling(void)
{
6
return sisiA + sisiB + sisiC;
7 }
8 void setSisiA( double a )
9 {
10 sisiA = a;
}
11 void setSisiB( double b )
12 {
13 sisiB = b;
14 }
15 void setSisiC( double c )
{
16 sisiC = c;
17 }
18 SegiTiga operator+(const SegiTiga & d)
19 {
SegiTiga segi;
20 segi.sisiA = this-> sisiA + d. sisiA;
21 segi.sisiB = this-> sisiB + d. sisiB;
22 segi.sisiC = this-> sisiC + d. sisiC;
23 return segi;
}
24 private:
25 double sisiA;
26 double sisiB;
27 double sisiC;
28 };
int main( )
29 {
30 SegiTiga segi1;
31 SegiTiga segi2;
32 SegiTiga segi3;
double keliling = 0.0;
33 // spesifikasi Segitiga 1
34 segi1.setSisiA(6.0);
35 segi1.setSisiB(7.0);
36 segi1.setSisiC(5.0);
37 // spesifikasi Segitiga 2
segi2.setSisiA(12.0);
38 segi2.setSisiB(13.0);
39 segi2.setSisiC(10.0);
40 // Keliling segitiga 1
41 keliling = segi1.getKeliling();
42 cout << "Keliling Segitiga 1 : " << keliling <<endl;
// Keliling segitiga 2
43 keliling = segi2.getKeliling();
44 cout << "Keliling Segitiga 2 : " << keliling <<endl;
45 // Menambahkan 2 object segitiga
46 segi3 = segi1 + segi2;
// keliling segitiga 3
47 keliling = segi3.getKeliling();
48 cout << "Keliling segitiga 3 : " << keliling <<endl;
49 return 0;
50 }
>>>Overiding C#
1 namespace csharp_overiding
2 {
3 class first
{
4 public void show()
5 {
6 Console.WriteLine("Keterangan ini ditampilkan oleh class first");
7 }
}
8 class second : first {
9 public void show1()
10 {
11 Console.WriteLine("Keterangan ini ditampilkan oleh class dua");
12 }
}
13 class Program {
14
15 public static void Main(string[] args)
16 {
17 first satu = new first();
18 satu.show();
19 second dua = new second();
dua.show1();
20 Console.Write("Press any key to continue . . . ");
21 Console.ReadKey(true);
22 }
23 }
}
24

>>>Overiding Java
1 package riding;
2
class first
3 {
4 public void show()
5 {
6 System.out.println("Keterangan ini ditampilkan oleh class first");
7 }
}
8 class second extends first
9 {
10 public void show()
11 {
System.out.println("Keterangan ini ditampilkan oleh class second");
12 }
13 }
14 public class Main {
15 public static void main(String[] args)
16 {
first satu = new first();
17 satu.show();
18 second dua = new second();
19 dua.show();
20 }
}
21

>>>Overiding C++
1 #include <iostream>
2 using namespace std;
3 //overriding
4 class Sepeda{
public: void cetak();
5 };
6 void Sepeda::cetak()
7 {
8 cout<<"ini adalah sepeda"<<endl;
}
9 class Matic : public Sepeda{
10 public: void cetak();
11 };
12 void Matic::cetak()
13 {
14 cout<<"ini adalah sepeda Matic"<<endl;
15 }
int main()
16 {
17 Matic a;
18 a.cetak();
19 return 0;
}

Anda mungkin juga menyukai