Kas yra gryna virtuali funkcija?

Beveik visų tipų objektinis programavimas (OOP), kuris kuria programas ir atskiria kodo dalis į „objektus“, turi funkciją, vadinamą gryna virtualia funkcija, kuri skiriasi nuo virtualios funkcijos. Taip pat žinoma kaip abstrakčioji funkcija, gryna virtuali funkcija veikia kaip kitų kintamųjų vietos rezervavimo priemonė ir paima informaciją iš kitų funkcijų ir klasių, kad užpildytų tuščias vietas. Grynos virtualios funkcijos naudojimo pranašumas yra tas, kad informacija yra kalioji ir gali būti keičiama pagal kiekvieną vartotoją. Kad veiktų, turi būti išvestinė klasė, iš kurios gaunami duomenys.

Virtuali funkcija yra panaši į gryną variantą. Abi gali keistis priklausomai nuo vartotojo įvesties. Pavyzdžiui, jei vartotojas įveda savo vardą, visos programos virtuali funkcija pasikeis, kad atitiktų to vartotojo vardą. Skirtumas tas, kad virtuali funkcija nepriklauso nuo kitų klasių, nes virtuali funkcija turi savo kūną, kuris perduoda duomenis kitoms klasėms ir funkcijoms, kurios reikalauja informacijos, šiame pavyzdyje vartotojo vardo.

Gryna virtuali funkcija, priešingai, neturi jokio kūno. Tai reiškia, kad pati abstrakčioji funkcija yra nenaudinga. Ji neturi savo duomenų ir, jei abstrakčioji klasė iškviečiama be jokios informacijos, gali atsirasti klaida. Gryna virtuali funkcija turi turėti išvestinę klasę arba klasę, kuri renka duomenis, kad abstrakčioji funkcija veiktų.

Išvestinė klasė gali būti klausimas arba sritis, kurioje vartotojas įveda tam tikrą įvestį, pvz., teksto lauką. Informacija iš šios klasės perduodama į visas prijungtas grynas virtualias funkcijas, derinant atsakymus. Jei abstrakčioji funkcija nėra specialiai iškviesta, ji nebus aktyvuota, nebent bus lengvai pateikiami duomenys.

Grynos virtualios funkcijos turi keletą privalumų. Naudojant abstrakčią funkciją, užuot sukūrus visą kodavimo turinį, programuotojui reikia sukurti kodo kiekį, ypač didelėms programoms, kurios nuolat naudoja tą pačią informaciją. Programuotojas taip pat gali pakoreguoti abstrakčiąją funkciją, kad pakeistų, kaip programa tvarko duomenis, kad ji būtų efektyvesnė. Informacija pagrįsta išvestinėmis klasėmis, todėl programos su klausimais ir sudėtingu įvedimu pritaikys duomenis pagal vartotojo įvestį, programai netyčia neiškvietus kitos nesusijusio kodo dalies.