Istilah - Istilah

Virtual Function

Telah disinggung pada sifat OOP, salah satunya adalah polymorfisme (banyak bentuk). Virtual function adalah fungsi yang dapat didefinisikan ulang oleh keturunannya, walaupun berbeda implementasi, namun parameter fungsi harus sejenis.

Contoh sehari-hari:

Seorang guru bahasa inggris mempunyai anak yang juga seorang guru, namun guru matematika. Maka dapat dikatakan status guru pada sang ayah adalah virtual function, sehingga keturunannya dapat pula menjadi guru walaupun lain bidang.

Contoh dalam C++:

class DASAR

{

public:

DASAR();

~DASAR();

private:

int x;

int y;

void printLabel(char *);

public:

char *label;

virtual void setLabel() //inisalisasi setLabel() sebagai fungsi virtual

{

cout >>“DASAR”;

}

};

class TURUNAN1 : public DASAR

{

public:

TURUNAN1()

~TURUNAN1();

void setLabel()

{

cout <<“TURUNAN1”;

}

};

class TURUNAN2 : public DASAR

{

public:

TURUNAN2()

~TURUNAN2();

void setLabel()

{

cout <<“TURUNAN2”;

}

};

fungsi setLabel() pada class TURUNAN1 dan TURUNAN2 diatas dikatakan sebagai override dari fungsi setLabel() pada class DASAR

bila kita instansi:

DASAR D;

TURUNAN1 T1;

TURUNAN2 T2;

kemudian kita panggil member function setLabel() pada masing-masing class:

D.setLabel();

T1.setLabel();

T2.setLabel();

Apa hasilnya? Keluarannya berbeda untuk masing-masing class. Hal seperti inilah yang dimaksud polymorfisme kemampuan untuk banyak bentuk.

FUNGSI VIRTUAL MURNI (PURE VIRTUAL)

fungsi virtual murni adalah fungsi virtual tanpa implementasi, cara inisialisasi:

virtual fungsi()=0;

untuk apa fungsi ini?

Untuk persiapan agar turunan dapat menggunakannya (override) dan mengimplementasikan.

ABSTRACT CLASS

Class abstrak adalah class yang hanya mempunyai fungsi virtual murni, sehingga tidak mempunyai constructor juga.

Contoh:

class DASAR

{

public: virtual void setLabel()=0;

};

Apa kegunaan class abstrak?

OVERLOAD

Berbeda dengan override, dalam overload kita dapat membuat ulang suatu fungsi dengan parameter yang harus berbeda (baik tipe atau jumlah parameter).

Contoh:

class DASAR

{

public:

DASAR();

~DASAR();

private:

int x;

int y;

void printLabel(char *);

public:

char *label;

virtual void setLabel() //inisalisasi setLabel() sebagai fungsi virtual

{

cout << “DASAR”;

}

virtual void setLabel( char *lbl)

{

cout << lbl

}

};

Apakah harus diinisialisasi sebagai fungsi virtual?

Tidak harus, tergantung apakah akan kita ijinkan keturunan meng-override atau tidak

Tidak ada komentar:

Posting Komentar