Melalui pengiriman pesan. Tidak bergantung kepada pemanggilan subrutin, bahasa orientasi
objek dapat mengirim pesan; metode tertentu yang berhubungan dengan sebuah pengiriman
pesan tergantung kepada objek tertentu di mana pesa tersebut dikirim. Contohnya, bila
sebuah burung menerima pesan “gerak cepat”, dia akan menggerakan sayapnya dan terbang.
Bila seekor singa menerima pesan yang sama, dia akan menggerakkan kakinya dan berlari.
Keduanya menjawab sebuah pesan yang sama, namun yang sesuai dengan kemampuan
hewan tersebut. Ini disebut polimorfisme karena sebuah variabel tungal dalam program dapat
memegang berbagai jenis objek yang berbeda selagi program berjalan, dan teks program
yang sama dapat memanggil beberapa metode yang berbeda di saat yang berbeda dalam
pemanggilan yang sama. Hal ini berlawanan dengan bahasa fungsional yang mencapai
polimorfisme melalui penggunaan fungsi kelas-pertama.
http://chalax212.wordpress.com/2012/09/26/konsep-dasar-object-oriented-programming-oop/
Sekarang, class induk Person dan subclass Student dari contoh sebelumnya, kita tambahkan subclass
lain dari Person yaitu Employee. Di bawah ini adalah hierarkinya, Person
Student Employee
Dalam Java, kita dapat membuat referensi yang merupakan tipe dari superclass ke sebuah object dari
subclass tersebut. Sebagai contohnya,
Person ref;
// object Student
Sekarang dimisalkan kita punya method getName dalam superclass Person kita, dan kita
override method ini dalam kedua subclasses Student dan Employee,
return name;
return name;
J.E.N.I.
Pengenalan Pemrograman 1 8
return name;
Kembali ke method utama kita, ketika kita mencoba memanggil method getName dari
reference Person ref, method getName dari object Student akan dipanggil. Sekarang, jika
kita berikan ref ke object Employee, method getName dari Employee akan dipanggil.
Person ref;
// object Student
//class dipanggil
System.out.println( temp );
// object Employee
//class dipanggil
System.out.println( temp );
Kemampuan dari reference untuk mengubah sifat menurut object apa yang dijadikan acuan
dinamakan polimorfisme. Polimorfisme menyediakan multiobject dari subclasses yang berbeda untuk
diperlakukan sebagai object dari superclass tunggal, secara otomatis menunjuk method yang tepat
untuk menggunakannya ke particular object berdasar subclass yang termasuk di dalamnya. Contoh
lain yang menunjukkan properti polimorfisme adalah ketika kita mencoba melalui reference ke
method. Misalkan kita punya method static printInformation yang mengakibatkan object Person
sebagai reference, kita dapat me-reference dari tipe Employee dan tipe Student ke method ini selama
itu masih subclass dari class Person.
printInformation( studentObject );
printInformation( employeeObject );
....
}
POLIMORFISM
5. 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.
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;
7 //Constuctor satu
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;
15 this.sisiC=1;
16 }
//Constuctor tiga
17 public void Keliling (double a, double b, double c){
18 this.sisiA=a;
19 this.sisiB=b;
20 this.sisiC=c;
}
21 }
22 class Program
23 {
24 public static void Main(string[] args)
25 {
KelilingSegi tampil = new KelilingSegi();
26 KelilingSegi tampil_dua = new KelilingSegi();
27 KelilingSegi tampil_tiga = new KelilingSegi();
28 Console.WriteLine("Tampil Constructor Pertama");
29 tampil.Keliling(10);
30 Console.WriteLine("Sisi A = "+tampil.sisiA);
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);
34 Console.WriteLine("Sisi A = "+tampil_dua.sisiA);
35 Console.WriteLine("Sisi B = "+tampil_dua.sisiB);
Console.WriteLine("Sisi C = "+tampil_dua.sisiC);
36 Console.WriteLine("Tampil Constructor Ketiga");
37 tampil_tiga.Keliling(10, 11, 12);
38 Console.WriteLine("Sisi A = "+tampil_tiga.sisiA);
39 Console.WriteLine("Sisi B = "+tampil_tiga.sisiB);
Console.WriteLine("Sisi C = "+tampil_tiga.sisiC);
40 Console.Write("Press any key to continue . . . ");
41 Console.ReadKey(true);
42 }
43 }
44 }
45
46
47
48
49
50
51
52
53
>>>Overloading Java
1 package keliling;
2 public class KelilingSegi {
double sisiA;
3 double sisiB;
4 double sisiC;
5 //Constuctor satu
6 KelilingSegi (double a)
7 {
this.sisiA=a;
8 this.sisiB=1;
9 this.sisiC=1;
10 }
11 //Constuctor dua
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;
20 this.sisiB=b;
21 this.sisiC=c;
}
22 }
23 -------------------------------------------------------------------------------
24 package keliling;
25 public class Keliling {
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);
29 System.out.println("Sisi B : "+tampilan.sisiB);
30 System.out.println("Sisi C : "+tampilan.sisiC);
31
32 System.out.println("Tampil Constructor Kedua");
KelilingSegi tampilan_dua = new KelilingSegi (10, 12.3);
33 System.out.println("Sisi A : "+tampilan_dua.sisiA);
34 System.out.println("Sisi B : "+tampilan_dua.sisiB);
35 System.out.println("Sisi C : "+tampilan_dua.sisiC);
36 System.out.println("Tampil Constructor Ketiga");
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);
39 System.out.println("Sisi C : "+tampilan_tiga.sisiC);
40 }
41 }
42
43
44
45
46
47
48
49
>>>Overloading C++
1 #include
2 using namespace std;
class SegiTiga
3 {
4 public:
5 double getKeliling(void)
6 {
7 return sisiA + sisiB + sisiC;
}
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 {
20 SegiTiga segi;
21 segi.sisiA = this-> sisiA + d. sisiA;
segi.sisiB = this-> sisiB + d. sisiB;
22 segi.sisiC = this-> sisiC + d. sisiC;
23 return segi;
24 }
25 private:
double sisiA;
26 double sisiB;
27 double sisiC;
28 };
29 int main( )
30 {
31 SegiTiga segi1;
SegiTiga segi2;
32 SegiTiga segi3;
33 double keliling = 0.0;
34 // spesifikasi Segitiga 1
35 segi1.setSisiA(6.0);
segi1.setSisiB(7.0);
36 segi1.setSisiC(5.0);
37 // spesifikasi Segitiga 2
38 segi2.setSisiA(12.0);
39 segi2.setSisiB(13.0);
40 segi2.setSisiC(10.0);
// Keliling segitiga 1
41 keliling = segi1.getKeliling();
42 cout << "Keliling Segitiga 1 : " << keliling <<endl;
43 // Keliling segitiga 2
44 keliling = segi2.getKeliling();
cout << "Keliling Segitiga 2 : " << keliling <<endl;
45 // Menambahkan 2 object segitiga
46 segi3 = segi1 + segi2;
47 // keliling segitiga 3
48 keliling = segi3.getKeliling();
49 cout << "Keliling segitiga 3 : " << keliling <<endl;
return 0;
50 }
51
52
53
54
55
56
57
58
59
60
61
ah itu diaaaa contoh sintaxnya :D
nih hasilnya :)
ya itu dia dechh,, sekarang langsung kita lihat contoh syntax polimorfis
yangOveriding yaakk,,
>>>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();
second dua = new second();
19 dua.show1();
20 Console.Write("Press any key to continue . . . ");
21 Console.ReadKey(true);
22 }
23 }
}
24
25
26
27
28
>>>Overiding Java
1 package riding;
2
3 class first
{
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 {
12 System.out.println("Keterangan ini ditampilkan oleh class second");
}
13 }
14 public class Main {
15 public static void main(String[] args)
16 {
17 first satu = new first();
satu.show();
18 second dua = new second();
19 dua.show();
20 }
21 }
22
23
24
25
>>>Overiding C++
1
2
3 #include <iostream>
4 using namespace std;
//overriding
5 class Sepeda{
6 public: void cetak();
7 };
8 void Sepeda::cetak()
9 {
cout<<"ini adalah sepeda"<<endl;
10 }
11 class Matic : public Sepeda{
12 public: void cetak();
13 };
void Matic::cetak()
14 {
15 cout<<"ini adalah sepeda Matic"<<endl;
16 }
17 int main()
18 {
Matic a;
19 a.cetak();
20 return 0;
21 }
22
23
ah itu diaaaa contoh sintaxnya :D
nih hasilnya :)
alhamdulillah udah duluuu daaahhh pusinggg2,, :D
Wassalamu’alaikum Wr.Wb