Skip to main content

Τι είναι μια εικονική τάξη;

Μια εικονική κλάση είναι μια κλάση που κατανέμεται μόνο μία φορά στη μνήμη, έτσι ώστε τα παιδιά αυτής της τάξης να χρησιμοποιούν μόνο το ένα αντίγραφο αυτής της τάξης γονέων που είναι καθιερωμένη στη μνήμη.Μια κλάση είναι μια ομάδα αντικειμένων που μοιράζονται κοινά χαρακτηριστικά ή χαρακτηριστικά.Κάνοντας μια εικονική τάξη δίνει αντικειμενοστραφή γλώσσες προγραμματισμού την ικανότητα χρήσης πολλαπλής κληρονομιάς όταν οι δεύτερες ή περισσότερες γενικές τάξεις γονέων προέρχονται από κοινές κατηγορίες προγονικών βασικών.Ανάλογα με την αναφερόμενη γλώσσα προγραμματισμού υπολογιστή, η εικονική λέξη-κλειδί, η παρόμοια λέξη-κλειδί ή η σύνταξη και η σημασιολογία μιας τάξης χρησιμοποιούνται για να υπονοήσουν ότι μια συγκεκριμένη τάξη πρέπει να θεωρείται εικονική.είναι όταν μια τάξη παιδιών μπορεί να προέρχεται από πολλές τάξεις γονέων ταυτόχρονα.Σε μια γλώσσα προγραμματισμού όπως το C ++, μια κλάση μπορεί να κληρονομήσει όλα τα δεδομένα των δεδομένων και τις λειτουργίες μέλους και από τις δύο γονικές κατηγορίες ταυτόχρονα και έχουν πρόσβαση και στα δύο σύνολα γονικών δεδομένων και λειτουργιών.Άλλες γλώσσες που υποστηρίζουν πολλαπλή κληρονομιά περιλαμβάνουν Perl, Python, TCL και Eiffel.

Ένα πρόβλημα που προκύπτει σε πολλαπλές ιεραρχίες κληρονομιάς όταν δύο ή περισσότερες τάξεις γονέων που χρησιμοποιούνται για τη δημιουργία μιας παιδικής τάξης προέρχονται αρχικά από μία ή την ίδια τάξη γιαγιά.Αυτό ονομάζεται πρόβλημα με το διαμάντι, το όνομα που προέρχεται από το πώς θα φανεί η ιεραρχία σε αυτή την κατάσταση.Όταν ένα πρόγραμμα μεταγλωττιστή προσπαθεί να δημιουργήσει μια τάξη, όπως μια τάξη εγγονών που γίνεται από δύο γονικές τάξεις με ένα κοινό παππού, δύο αντίγραφα του παππού είναι φτιαγμένα στη μνήμη, ένα για κάθε γονέα.

Λόγω της ασάφειας που προκαλείται από πολλαπλά αντίγραφα του ίδιου παππού της μνήμης, ο μεταγλωττιστής δεν είναι σε θέση να εξακριβώσει ποιο αντίγραφο του παππού που πρέπει να χρησιμοποιήσει το εγγόνι για την πρόσβαση σε παππούδες ή λειτουργίες.Για να διορθωθεί αυτή η κατάσταση, στο C ++ ο παππούς γίνεται σε μια εικονική τάξη όταν δηλώνει τους γονείς.Αυτό αναγκάζει τον μεταγλωττιστή να κάνει μόνο ένα αντίγραφο του παππού και του παππού που μοιράζονται και οι δύο γονείς.Μόλις ο παππούδες έχει γίνει μια εικονική τάξη, ο μεταγλωττιστής δεν έχει κανένα πρόβλημα να αποφασίσει πώς το εγγόνι πρέπει να έχει πρόσβαση στον παππού, επειδή υπάρχει μόνο ένα αντίγραφο του παππού.ή να γίνετε η βάση για πολύ μεγαλύτερες ιεραρχίες στο μέλλον.Η σωστή χρήση μιας εικονικής τάξης δίνει στις ιεραρχίες τάξης μεγαλύτερο γεωγραφικό πλάτος στην ανάπτυξη.Ωστόσο, έχουν τη δυνατότητα να προκαλέσουν σφάλματα που είναι δύσκολο να εντοπιστούν.Η μελέτη των αρχών τεχνολογίας προγραμματισμού υπολογιστών θα βοηθήσει να διασφαλιστεί ότι δεν εμφανίζονται απροσδόκητες παρενέργειες από την ακατάλληλη οργάνωση προγράμματος.