Polymorphism

· OOP2
Penulis

POLYMORPHISM

Polymorphisme artinya mempunyai banyak bentuk turunan. Dua objek atau lebih dikatakan sebagai polymorphic, bila objek-objek itu mempunyai antar muka yang identik namun mempunyai perilaku-perilaku yang berbeda. Metode ini hampir sama seperti Inheritance (yang akan dibahas selanjutnya) akan tetapi lebih spesifik dimana setiap turunan memiliki sifat yang berbeda dengan turunan yang lain meskipun berasal dari satu class yang sama.

Polymorphism dapat pula memungkinkan sejumlah kelas memilki metode yang sama. Hal ini adalah perkara yang umum, perkara dimana derive class mempunyai metode yang sama dengan base class.Masalah di atas harus diselesaikan dengan metode virtual serta menggunakan perujukan yang memakai pointer. Dimana perujukan tersebut dapat kita lakukan menggunakan dua buah cara yaitu:
a. menggunakan nama atau early binding atau static binding.
b. menggunakan pointer atau late binding atau dynamic binding.

Perbedaan dari  kedua hal di atas adalah jika early binding perujukan dilakukan saat proses kompilasi sedangkan late binding perujukan dilakukan saat program di eksekusi. Saat pendeklarasian metode virtual pada base class akan mewakili seluruh derive class dengan metode yang sama.
Kelas dasar akan mewariskan semua atribut dan kodenya kecuali konstruktor dan destruktor yang memiliki izin acces public dan protected ke kelas turunannya dengan izin akses yang sama pada kelas dasar. Saat kelas turunan dibuat objeknya saat dieksekusi maka secara implisit kelas konstruktor dasar dipanggil terlebih dahulu baru setelah itu konstruktor kelas turunannya dijalankan. Ada dua bentuk polymorphism :
Override
Override merupakan pendefinisian ulang suatu metode oleh subclass. Syarat Override yaitu nama metode, return type, dan parameter harus sama. Jika tidak sama maka bukan dianggap sebagai override tetapi metode yang baru pada subclass.
Overload
Overload merupakan pendefinisian ulang suatu metode dalam class yang sama. Syarat overload yaitu nama metode dan tipe parameter harus berbeda dalam class yang sama.

Contoh Program Polymorph dalam C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
using System;
 namespace polymorph_t
 {
     class persegiPanjang
     {
         public int Luas(int a,int b)
         {
             Console.WriteLine("Luas Persegi Panjang");
             Console.WriteLine("Panjang = {0}",a);
             Console.WriteLine("Lebar = {0}",b);
             Console.WriteLine("Luas = Panjang x Lebar = {0} x {1} = {2}\n",a,b,(a*b));
             return a*b;
         }
         public double Keliling(double a, int b)
         {
             Console.WriteLine("Keliling Persegi Panjang");
             Console.WriteLine("Keliling = (2x(panjang+lebar)= " +
                               "(2*({0}+{1})={2}\n",a,b,(2*(a+b)));
             return (2*(a+b));
         }
     }
     class Pengurangan
     {
         public int luas_permukaanBalok(int a, int b)
         {
             Console.WriteLine("Luas Balok");
             Console.WriteLine("Luas Permukaan Balok = (2x(pxl)+(pxl)+(pxl)) = " +
                               "(2x({0}x{1})+({2}x{3})+({4}x{5}))={6}\n",a,b,a,b,a,b,(2*((a*b)+(a*b)+(a*b))));
             return (2*((a*b)+(a*b)+(a*b)));
         }
         public int kelilingBalok(int a, int b , int c)
         {
             Console.WriteLine("Panjang = {0}",a);
             Console.WriteLine("Lebar = {0}",b);
             Console.WriteLine("Tinggi = {0}\n",b);
             Console.WriteLine("Keliling Balok");
             Console.WriteLine("Keliling Balok=(4x(p+l+t)=" +
                               "(4x({0}+{1}+{2})={3}\n",a,b,c,(4*((a)+(b)+(c))));
             return (4*((a)+(b)+(c)));
         }
         public double volumeBalok(double e,int a,int b)
         {
             Console.WriteLine("Volume Balok");
             Console.WriteLine("Volume Balok=pxlxt={0}x{1}x{2}={3}",e,a,b,(e*a*b));
             return (e*a*b);
         }
     }
     class Program
     {
         public static void Main(string[] args)
         {
             Console.WriteLine("Polimorpish\n");
             Console.WriteLine("Rumus Persegi Panjang");
             persegiPanjang tari=new persegiPanjang();
             tari.Luas(10,10);
             tari.Keliling(10.5,5);
             Console.WriteLine("Rumus Balok");
             Pengurangan lestari=new Pengurangan();
             lestari.kelilingBalok(10,5,2);
             lestari.luas_permukaanBalok(10,5);
             lestari.volumeBalok(10.5,10,7);
             Console.Write("Press any key to continue . . . ");
             Console.ReadKey(true);
         }
     }
 }
polimorphc
Contoh Program Polymorph dalam Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
</pre>
package polymorph;
/**
*
* @author tari
*/
class persegiPanjang
{
public int Luas(int a,int b)
{
System.out.println("Panjang = "+a);
System.out.println("Lebar = "+b);
System.out.println("Luas = Panjang x Lebar = "+a+" x "+b+" = "+(a*b));
return a*b;
}
public double Keliling(double a, int b)
{
System.out.println("Keliling = (2x(panjang+lebar) = (2x("+a+"+"+b+"))"+(2*(a+b)));
return (2*(a+b));
}
}
class Balok
{
public int kelilingBalok(int a, int b , int c)
{
System.out.println("Panjang = "+a);
System.out.println("Lebar = "+b);
System.out.println("Tinggi = "+b);
System.out.println("Keliling Balok = (4x(p+l+t) = (4x("+a+"+"+b+"+"+c+") = "+(4*((a)+(b)+(c))));
return (4*((a)+(b)+(c)));
}
public int luas_permukaanBalok(int a, int b)
{
System.out.println("Luas Permukaan Balok = (2x(pxl)+(pxl)+(pxl)) ="
+ " (2x ("+a+" x "+b+") + ("+a+" x "+b+") + ("+a+" x "+b+") = "
+ ""+(2*((a*b)+(a*b)+(a*b))));
return (2*((a*b)+(a*b)+(a*b)));
}
public double volumeBalok(double e,int a,int b)
{
System.out.println("Volume Balok = pxlxt ="+e+"x"+a+"x"+b+" = "+(e*a*b));
return (e*a*b);
}
}
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("Polimorpish");
System.out.println();
System.out.println("Rumus Persegi Panjang");
persegiPanjang tari=new persegiPanjang();
tari.Luas(10,10);
tari.Keliling(10,10);
System.out.println();
System.out.println("Rumus Balok");
Balok lestari=new Balok();
lestari.kelilingBalok(10,5,2);
lestari.luas_permukaanBalok(10,5);
lestari.volumeBalok(10,5,7);
}
}
polimorphjava
Contoh Program Polymorph dalam C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
using namespace std;
class persegiPanjang
{
public :
int luas(int a,int b)
{
cout<<"Luas Persegi Panjang"<< endl;
cout<<"Panjang = " <<a<< endl;
cout<<"Lebar = " <<b<< endl;
cout<<"Luas = Panjang x Lebar = "<<a<<" x "<<b<<" = "<<(a*b)<< endl;
return a*b;
}
double keliling(double a, int b)
{
cout<<"Keliling = (2x(panjang+lebar)= (2*("<<a<<"+"<<b<<") = "<<(2*(a+b))<< endl;
return (2*(a+b));
}
};
class Balok
{
public :
int luas_permukaanBalok(int a, int b)
{
cout<<"Luas Permukaan Balok = (2x(pxl)+(pxl)+(pxl)) = (2x("<<a<<"x"<<b<<")+("<<a<<"x"<<b<<")+("<<a<<"x"<<b<<"))= "<<(2*((a*b)+(a*b)+(a*b)))<< endl;
return (2*((a*b)+(a*b)+(a*b)));
}
int kelilingBalok(int a, int b , int c)
{
cout<<"Panjang = "<<a<< endl;
cout<<"Lebar = "<<b<< endl;
cout<<"Tinggi = "<<b<< endl;
cout<<"Keliling Balok=(4x(p+l+t)=(4x("<<a<<"+"<<b<<"+"<<c<<") = "<<(4*((a)+(b)+(c)))<< endl;
return (4*((a)+(b)+(c)));
}
double volumeBalok(double e,int a,int b)
{
cout<<"Volume Balok=pxlxt="<<e<<"x"<<a<<"x"<<b<<" = "<<(e*a*b)<< endl;
return (e*a*b);
}
};
int main()
{
cout<<"Polimorpish"<< endl;
cout<<"Rumus Persegi Panjang"<< endl;
persegiPanjang tari;
tari.luas(10,10);
tari.keliling(10.5,5);
cout<<"Rumus Balok"<< endl;
Balok lestari;
lestari.kelilingBalok(10,5,2);
lestari.luas_permukaanBalok(10,5);
lestari.volumeBalok(10.5,10,7);
return 0;
}

polimorph(c++)

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: