Qrup: 510 Fənn: Proqramlaşdırma dilləri Kafedra



Yüklə 139,8 Kb.
səhifə5/5
tarix17.05.2022
ölçüsü139,8 Kb.
#87234
1   2   3   4   5
proq serbest

5.Virtual funksiyalar

Virtual funksiya əsas sinif daxilində elan edilən və törəmə sinif tərəfindən yenidən müəyyən edilən üzv funksiyadır.Yəni, virtual funksiyalardan iki sinif daxilində eyni adlı funksiyalar yaradıldıqda istifadə olunur.Virtual funksiyalar obyekt üçün dzgün funskiyanın çağırılmasını təmin edir. Onlar əsasən yuxrıda qeyd etdiyim runtime polimorfizminə nail olmaq üçün istifadə olunur. Funksiyalar əsas(baza) sinifdə “virtual” açar sözü ilə təyin olunur. Başqa sözlə, virtual funksiya törəmə sinifdə ləğv edilən və C++ kompilyatoruna bu funksiyanın gec bağlanmasını yerinə yetirmək üçün göstəriş verən funksiyadır. Funksiya çağırışı gec bağlanma zamanı,icra zamanı həll olunur və beləliklə tərtibçi icra zamanı obyektin növünü müəyyən edir. Virtual funksiyalara aid bir nümunəyə baxaq:

#include

using namespace std;

class neqliyyat {

public:


virtual void hereket(){

cout << "neqliyat vasitesi surucu terefinden idare olunur" << endl;

}

};

class avtobus : public neqliyyat {



public:

void hereket (){

cout << "avtobus surucu terefinden idare olunur" << endl;

}

};



int main(){

neqliyyat *n1 ;

avtobus a1;

n1 = &a1 ;

n1 -> hereket() ;

}

Bu nümunəyə nəzər salaq. Bizim iki sinifimiz var və bu siniflərdə eyni adlı funksiyalar var. Əyər biz burda virtual açar sözündən istifadə etməsəydik , polimorfizm düzgün olmayacaqdı və ekrana “neqliyyat vasitesi hereket edir” sözləri çıxacaqdı . Bunun səbəbi hər iki funskiya olduqda bir sinifin digərini əzməsidir yəni override etməsidir. Virtual açar sözü ilə biz polimorfizmlə bu əzmənin qarşısını alırıq.



Virtual funksiyalar üçün qaydalar

  1. Virtual funksiyalar statik ola bilməz.

  2. Virtual funksiya başqa sinfin dost funksiyası ola bilər.

  3. İş vaxtı polimorfizminə nail olmaq üçün virtual funksiyalara göstəricidən və ya əsas sinif növünə istinad etməklə daxil olmaq lazımdır.

  4. Virtual funksiyaların prototipi həm baza(əsas), həm də törəmə(alt) sinifdə eyni olmalıdır.

  5. Onlar həmişə əsas sinifdə müəyyən edilir və törəmə sinifdə ləğv edilir. Alınmış sinfin ləğv edilməsi (və ya virtual funksiyanı yenidən müəyyən etməsi) məcburi deyil, bu halda funksiyanın əsas sinif versiyası istifadə olunur.

  6. Sinfin virtual destruktoru ola bilər, lakin onun virtual konstruktoru ola bilməz.

İstifadə olunmuş ədəbiyyatlar:

  1. Etibar Seyidzadə “Borland c++ ilə obyektyönlü proqramlaşdırma” (2007)

  2. Robert Lafore “Object-Oriented Programming in C++, Fourth Edition” (2002)

  3. https://www.geeksforgeeks.org/inheritance-in-c/

  4. http://teknokafe.net/2017/10/25/c-ders-14-kalitim-inheritance/

  5. https://www.yazilimperver.com/index.php/2020/04/06/polimorfizm-ve-c/

  6. https://stackify.com/oop-concept-polymorphism/#:~:text=Polymorphism%20is%20one%20of%20the,types%20through%20the%20same%20interface.

  7. https://www.geeksforgeeks.org/encapsulation-in-c/

  8. https://www.w3schools.com/cpp/cpp_encapsulation.asp

  9. https://www.tutorialspoint.com/cplusplus/cpp_friend_functions.htm

  10. https://www.geeksforgeeks.org/virtual-function-cpp/

Yüklə 139,8 Kb.

Dostları ilə paylaş:
1   2   3   4   5




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə