Selasa, 28 Mei 2013

Polymorphism


Polymorphism merupakan kemampuan suatu method untuk bekerja dengan lebih dari satu tipe argumen. Pada bahasa lain (khususnya C++), konsep ini sering disebut dengan method overloading. Pada dasarnya, Python tidak menangani hal ini secara khusus. Hal ini disebabkan karena Python merupakan suatu bahasa pemrograman yang bersifat dynamic typing yaitu tidak memerlukan deklarasi tipe.

Polymorphism berasal dari bahasa Yunani yang berarti banyak bentuk. Dalam PBO, konsep ini memungkinkan digunakannya suatu interface yang sama untuk memerintah objek agar melakukan aksi atau tindakan yang mungkin secara prinsip sama namun secara proses berbeda.
Polymorphism merupakan konsep OOP yang menyatakan bahwa sesuatu yang sama dapat mempunyai bentuk dan perilaku yang berbeda. Sesuatu yang dimaksud adalah obyek dari suatu kelas. Polimorfieme dapat beroperasi pada dua arah yaitu saat kompilasi dan saat eksekusi. Polimorfisme saat kompilasi yaitu overloading fungsi dan operator.. Polymorphism erat kaitannya dengan pewarisan. Obyek dinamis sebuah kelas dasar dapat berperilaku seperti kelas turunan. Ketika obyek itu menunjuk kelas dasar dia berperilaku seperti kelas dasar, namun ketika menunjuk kelas turunan dia berperilaku seperti kelas turunan. Polymorphism terjadi karena adanya ikatan dinamis. Yaitu ikatan yang terjadi pada saat program dijalankan (di eksekusi). Ikatan dinamis hanya terjadi antara obyek dinamis dengan metode dinamis.
Polimorfisme merupakan kemampuan beberapa obyek yang masing-masing berbeda kelas (namun masih terikat inheritance) dalam merespon permintaan kepada suatu method yang sama melalui cara pemanggilan yang spesifik. Secara umum polimorfisme membuat programmer melakukan pemrograman secara umum daripada secara khusus Polimorfisme: dalam sebuah variable tunggal dalam program dapat memegang berbagai jenis objek yang berbeda sewaktu program berjalan, dan teks program yang sama dapat memanggil beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan yang sama.Sebagai contoh:burung dan kucing menerima pesan “gerak cepat”, maka burung akan menggerakan sayapnya dan terbang, sedangkan kucing akan menggerakkan kakinya dan berlari. ke-2 hewan tersebut menerima pesan yang sama namun melakukas pesan dengan kemampuannya masing-masing.
Dalam konsep yang lebih umum sering kali polymorphism disebut dalam istilah satu interface banyak aksi. Contoh yang konkrit dalam dunia nyata yaitu mobil. Mobil yang ada dipasaran terdiri atas berbagai tipe dan berbagai merk, namun semuanya memiliki interface kemudi yang sama, seperti: stir, tongkat transmisi, pedal gas dan rem. Jika seseorang dapat mengemudikan satu jenis mobil saja dari satu merk tertentu, maka orang itu akan dapat mengemudikan hamper semua jenis mobil yang ada, karena semua mobil tersebut menggunakan interface yang sama.
contoh :
// 1. Program Contoh Class Polymorphism
#include
#include
//using namespace std;
class CBangun
{
protected:
int nPanjang, nLebar;
public:
void PindahSisi(int,int);
};
void CBangun::PindahSisi(int nAtas, int nSamping)
{
nPanjang = nAtas;
nLebar = nSamping;
}
class CPersegi: public CBangun
{
public:
int Luas() {return(nPanjang * nLebar);};
};
class CSegitiga: public CBangun
{
public:
int Luas() {return(nPanjang * nLebar / 2);};
};
int main()
{
CBangun *pBangun1, *pBangun2;
CPersegi Persegi;
CSegitiga Segitiga;
pBangun1 = &Persegi; // pBAngun1 berisi address Persegi
pBangun2 = &Segitiga; // pBangun2 berisi address Segitiga
pBangun1->PindahSisi(6, 6);
pBangun2->PindahSisi(6, 6);
cout << "Luas dari persegi adalah: " << Persegi.Luas() << endl
<< "Luas dari segitiga adalah: " << Segitiga.Luas() << endl;
// system("PAUSE");
return 0;
}
2.
#include
#include
//using namespace std;
class CPolygon {
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b; }
virtual int area () /* virtual function */
{ return (0); }
};
class CRectangle: public CPolygon {
public:
int area ()
{ return (width * height); }
};
class CTriangle: public CPolygon {
public:
int area ()
{ return (width * height / 2); }
};
int main () {
CRectangle rect;
CTriangle trgl;
CPolygon poly;
CPolygon * ppoly1 = &rect;
CPolygon * ppoly2 = &trgl;
CPolygon * ppoly3 = &poly;
ppoly1->set_values (4,5);
ppoly2->set_values (4,5);
ppoly3->set_values (4,5);
cout <area() << endl;
cout <area() << endl;
cout <area() << endl;
return 0;
}

1 komentar: