Kaj je virtualni razred?

Navidezni razred je razred, ki je v pomnilniku dodeljen le enkrat, tako da otroci tega razreda uporabljajo samo eno kopijo tega nadrejenega razreda, ki je vzpostavljena v pomnilniku. Razred je skupina predmetov, ki imajo skupne lastnosti ali atribute. Izdelava razreda navidezna daje objektno usmerjenim programskim jezikom možnost uporabe večkratnega dedovanja, ko so nadrejeni razredi druge ali več generacije izpeljani iz običajnih osnovnih razredov prednikov. Odvisno od navedenega računalniškega programskega jezika se uporablja ključna beseda »virtual«, podobna ključna beseda ali sintaksa in semantika razreda, ki pomeni, da je treba določen razred šteti za virtualnega.

Vsi objektno usmerjeni programski jeziki ne dovoljujejo večkratnega dedovanja, kar pomeni, da je podrejeni razred mogoče izpeljati iz več nadrejenih razredov hkrati. V programskem jeziku, kot je C++, lahko razred podeduje vse podatke o članih in članske funkcije iz obeh nadrejenih razredov hkrati in ima dostop do obeh naborov nadrejenih podatkov in funkcij. Drugi jeziki, ki podpirajo večkratno dedovanje, vključujejo Perl, Python, Tcl in Eiffel.

Težava se pojavi v več hierarhijah dedovanja, ko sta dva ali več starševskih razredov, uporabljenih za ustvarjanje podrejenega razreda, prvotno izpeljanih iz samo enega ali istega razreda starih staršev. Temu pravimo problem diamantov, ime pa izhaja iz tega, kako bi bila hierarhija videti v tej situaciji. Ko prevajalnik poskuša ustvariti primer razreda, kot je razred vnukov, sestavljen iz dveh nadrejenih razredov s skupnim starim staršem, se v pomnilniku izdelata dve kopiji starega starša, po ena za vsakega starša.

Zaradi nejasnosti, ki jih povzroča več kopij istega dedka v pomnilniku, prevajalnik ne more ugotoviti, katero kopijo starega starša bi moral vnuk uporabiti za dostop do podatkov ali funkcij starih staršev. Da bi popravili to situacijo, se v C++ stari starš ob razglasitvi staršev spremeni v virtualni razred. To povzroči, da prevajalnik naredi samo eno kopijo dedka v spominu, ki si ga delita oba starša. Ko stari starši postanejo virtualni razred, se prevajalnik brez težav odloči, kako naj vnuk dostopa do stare starše, ker obstaja samo ena kopija stare starše.

Pri strukturiranju razrednih hierarhij je treba biti zelo previden, še posebej, ko bodo v prihodnosti vključene ali postale osnova za veliko večje hierarhije. Ustrezna uporaba navideznega razreda daje hierarhiji razredov večjo svobodo pri razvoju; vendar pa lahko povzročijo napake, ki jih je težko najti. Študija trdnih inženirskih načel računalniškega programiranja bo pomagala zagotoviti, da ne pride do nepričakovanih stranskih učinkov zaradi nepravilne organizacije programa.