Skip to main content

Wat is een virtuele klasse?

Een virtuele klasse is een klasse die slechts eenmaal in het geheugen wordt toegewezen, zodat kinderen van die klasse alleen de ene kopie van die ouderklasse gebruiken die in het geheugen is vastgesteld.Een klasse is een groep objecten die gemeenschappelijke eigenschappen of attributen delen.Het maken van een klassenvirtueel geeft objectgeoriënteerde programmeertalen de mogelijkheid om meerdere overerving te gebruiken wanneer tweede of meer generatie ouderklassen zijn afgeleid van gemeenschappelijke voorouderlijke basisklassen.Afhankelijk van de computerprogrammeertaal waarnaar wordt verwezen, worden het virtuele trefwoord, soortgelijke trefwoord of syntaxis en semantiek van een klasse gebruikt om te impliceren dat een bepaalde klasse als virtueel moet worden beschouwd.

Niet alle objectgeoriënteerde programmeertalen maken meerdere erfenis mogelijk,is wanneer een kindklasse tegelijkertijd kan worden afgeleid van meerdere ouderklassen.In een programmeertaal zoals C ++ kan een klasse alle lidgegevens en ledenfuncties van beide bovenliggende klassen in één keer erven en toegang hebben tot beide sets van oudergegevens en functies.Andere talen die meerdere overerving ondersteunen, zijn Perl, Python, TCL en Eiffel.

Een probleem treedt op in meerdere overervinghiërarchieën wanneer twee of meer oudersklassen die worden gebruikt om een kindklasse te maken, oorspronkelijk zijn afgeleid van slechts één of dezelfde grootouderklasse.Dit wordt het diamantprobleem genoemd, de naam die voortkomt uit hoe de hiërarchie eruit zou zien in deze situatie.Wanneer een compilerprogramma een klasse probeert te instantiëren, zoals een kleinkind -klasse gemaakt van twee ouderklassen met een gemeenschappelijke grootouder, worden twee exemplaren van de grootouder in het geheugen gemaakt, één voor elke ouder.

Vanwege de dubbelzinnigheid veroorzaakt door meerdere kopieën van dezelfde grootouder in het geheugen, kan de compiler niet vaststellen welke kopie van de grootouder het kleinkind moet gebruiken om toegang te krijgen tot grootoudergegevens of functies.Om deze situatie te verhelpen, wordt in C ++ de grootouder tot een virtuele klasse gemaakt bij het verklaren van de ouders.Dit zorgt ervoor dat de compiler slechts één kopie van de grootouder in het geheugen maakt die beide ouders delen.Zodra de grootouder een virtuele klasse is geworden, heeft de compiler geen probleem om te beslissen hoe het kleinkind toegang moet krijgen tot de grootouder omdat er slechts één exemplaar van de grootouder is.

Grote zorg moet worden besteed bij het structureren van klassenhiërarchieën, vooral wanneer ze worden opgenomenIn of de basis worden voor veel grotere hiërarchieën in de toekomst.Het juiste gebruik van een virtuele klasse geeft klassenhiërarchieën een grotere breedtegraad in ontwikkeling;Ze hebben echter het potentieel om fouten te veroorzaken die moeilijk te vinden zijn.De studie van solide computerprogrammeer engineeringprincipes zal helpen ervoor te zorgen dat onverwachte bijwerkingen van de onjuiste programma -organisatie niet plaatsvinden.