Kamis, 11 Juli 2013

POLIMORFISME


Polimorfisme menggambarkan kemampuan kode C++ berperilaku berbeda tergantung situasi pada waktu run (program berjalan). Konstruksi ini memungkinkan untuk mengadakan ikatan dinamis (juga disebut ikatan tunda, atau ikatan akhir). Kalau fungsi-fungsi dari suatu kelas dasar didefinisikan ulang atau ditindih pada kelas turunan, maka objek-objek yang dihasilkan hirarki kelas berupa objek polimorfik. Polimorfik artinya mempunyai banyak bentuk atau punya kemampuan untuk mendefinisi banyak bentuk. 

contoh program :
#ifndef MANUSIA_H
#define MANUSIA_H
Class Manusia {
public:
virtual void Hello ( );
};
Class Pelajar : public Manusia {
public:
void Hello ( );
};
class Pegawai : public Manusia {
public:
void Hello ( );
};

#endif
Manusia.cpp
#include “Manusia.h”
#include
void Manusia: :Hello ( ) {
cout<<”Hallo . . . “<< endl;
}
void Pelajar: :Hello ( ) {
cout<<”Hallo, Saya Pelajar . . .“<< endl;
}
void Pegawai: :Hello ( ) {
cout<<”Hallo, Saya Pegawai . . . .“<< endl;
}
MPoli.cpp
#include “Manusia.h”
#include
#include
int main ( ) {
      Manusia* m;
int pilihan;
do {
cout<<”l: Manusia, 2: Pelajar, 3: Pegawai >> “;
cin >> pilihan;
      } while ( pilihan < 1 | | pilihan > 3 );
Switch ( pilihan ) {
case 1: m = new Manusia; break;
case 2: m = new Pelajar; break;
case 3: m = new Pegawai; break;
      }
m - > Hello ( );
delete m;

return 0;
}
 

   di awal program terdapat #ifndef Manusia_H dan #define Manusia_H. #ifndef merupakan instruksi processor yang digunakan pada beberapa porsi variasi compile program secara selektif. Logika yang umum adalah bahwa jika suatu ekspresi setelah #ifndef adalah benar, maka kode yang berada diantara instruksi processor tersebut akan tersusun, tapi jika yang terjadi sebaliknya maka akan terlewati. Sedangkan #define digunakan untuk melaksanakan substitusi makro dari suatu lembar teks ke lembar teks yang lain melalui suatu file dimana teks tersebut digunakan. Pada program ini, terdapat super class, yaitu class Manusia. Batas akses yang digunakan pada program ini, yaitu public. Suatu class yang mempunyai virtual method, maka compiler akan membuat suatu VMT (Virtual Method Table) yang spesifik untuk class tersebut. Virtual Method mempunyai deklarasi (nama, return type, argumen) fungsi yang sama, namun tidak berada pada lingkup class yang sama dan diawali dengan keyword virtual. Pada program pertama, tertulis sebagai berikut :
                        Virtual void Hello();
     Pada program ini, terdapat dua kelas turunan. Seperti yang sudah dibahas sebelumnya, pada polimorfisme harus terdapat hirarki pewarisan. Kelas turunan tersebut, yaitu :
                        Class Pelajar : public Manusia
                        Class Pegawai : public Manusia
#endif  digunakan untuk menandai akhir suatu blok.

     Selanjutnya, pada Manusia.cpp terdapat #include “Manusia.h” dan #include #include akan memerintah compiler untuk membaca dan menyusun file sumber yang lain, yaitu Manusia.h dan iostream.h. lalu menggunakan binary scope resolution operator (::) yang berfungsi mengikat nama fungsi ke nama kelas dan mengidentifikasi fungsi dari suatu kelas tertentu.
                        Void Manusia::Hello()
     Cout<< digunakan untuk menampilkan keluaran pada program, dimana pada program ini akan menampilkan
                        Cout<<”Hallo…”<
Endl digunakan untuk pindah baris. binary scope resolution operator (::) digunakan juga pada sub-class pada program ini.
                       void Pelajar: :Hello ( ) {
                       cout<<”Hallo, Saya Pelajar . . .“<< endl;
                       }
                       void Pegawai: :Hello ( ) {
                       cout<<”Hallo, Saya Pegawai . . . .“<< endl;
      Lalu pada MPoli.cpp terdapat #include “Manusia.h”, #include , dan #include .  header stdlib digunakan untuk prototype fungsi operasi matematika. Karena pada bagian ini terdapat operator matematika, yaitu < (kurang dari) dan > (lebih dari).
                       while ( pilihan < 1 | |  pilihan > 3 );
                       Switch ( pilihan ) {
      Int main () menandai dimulainya compiler akan mengeksekusi program. Dengan kata lain, main sebagai penanda program utama. Pada bagian ini juga terdapat proses pemilihan, yaitu :
                       int pilihan;
                       do {
                       cout<<”l: Manusia, 2: Pelajar, 3: Pegawai >> “;
                       cin >> pilihan;
                       } while ( pilihan < 1 | | pilihan > 3 );
                       Switch ( pilihan ) {
                                   case 1: m = new Manusia; break;
                                   case 2: m = new Pelajar; break;
                                   case 3: m = new Pegawai; break;
                       }
                       m - > Hello ( );
                       delete m;
Return 0; pernyataan tersebut akan menyebabkan fungsi main () menghentikan program dan mengembalikan nilai ke main. Dalam hal ini, yang dikembalikan adalah nilai 0.

Tidak ada komentar:

Domo-kun Staring