Was ist eine virtuelle Klasse?
Eine virtuelle Klasse ist eine Klasse, die nur einmal im Gedächtnis zugewiesen wird, so dass Kinder dieser Klasse nur die eine Kopie dieser übergeordneten Klasse verwenden, die im Gedächtnis festgelegt ist. Eine Klasse ist eine Gruppe von Objekten, die gemeinsame Eigenschaften oder Attribute teilen. Das Erstellen eines Klassenvirtuellen gibt objektorientierte Programmiersprachen die Fähigkeit, mehrfacher Vererbung zu verwenden, wenn die zweiten oder mehr Generation übergeordnete Klassen aus gemeinsamen Basisklassen der Ahnen stammen. Abhängig von der referenzierten Computerprogrammiersprache wird das Schlüsselwort "virtueller", ähnliches Schlüsselwort oder Syntax und Semantik einer Klasse verwendet, um zu implizieren, dass eine bestimmte Klasse als virtuell angesehen werden soll. In einer Programmiersprache wie C ++ kann eine Klasse alle Mitgliedsdaten und Mitgliedsfunktionen aus beiden übergeordneten Klassen gleichzeitig erben und Zugriff auf beide Sätze von PAR habenEnt -Daten und Funktionen. Weitere Sprachen, die die Mehrfachbindung unterstützen, sind Perl, Python, TCL und Eiffel.
Ein Problem tritt in mehreren Vererbungshierarchien auf, wenn zwei oder mehr Elternklassen zur Erstellung einer Kinderklasse ursprünglich nur aus einer oder derselben Großelternklasse abgeleitet werden. Dies wird als Diamond -Problem bezeichnet, der Name, der sich aus der Art und Weise ergibt, wie die Hierarchie in dieser Situation aussehen würde. Wenn ein Compiler -Programm versucht, eine Klasse zu instanziieren, z. B. eine Enkelkindklasse aus zwei übergeordneten Klassen mit einem gemeinsamen Großelternteil, werden zwei Exemplare des Großelternteils im Gedächtnis hergestellt, eines für jeden Elternteil.
Aufgrund der Unklarheit, die durch mehrere Kopien desselben Großelternteils verursacht wird, kann der Compiler nicht feststellen, welche Kopie des Großelternteils das Enkelkind zum Zugriff auf Großelternteil oder Funktionen verwenden sollte. Um diese Situation zu beheben, wird in C ++ der Großelternteil zu einer VirtUAL -Klasse, wenn er die Eltern erklärt. Dies führt dazu, dass der Compiler nur eine Kopie des Großelternteils in Erinnerung annimmt, die beide Elternteile teilen. Sobald der Großelternteil zu einer virtuellen Klasse geworden ist, hat der Compiler kein Problem damit, zu entscheiden, wie das Enkel auf den Großeltern zugreifen sollte, da es nur eine Kopie des Großelternteils gibt.
Es sollte bei der Strukturierung von Klassenhierarchien große Sorgfalt aufgenommen werden, insbesondere wenn sie in Zukunft in die Basis für viel größere Hierarchien einbezogen werden. Die ordnungsgemäße Nutzung einer virtuellen Klasse verleiht Klassenhierarchien einen größeren Breitengrad in der Entwicklung. Sie haben jedoch das Potenzial, Fehler zu verursachen, die schwer zu finden sind. Die Untersuchung solider Prinzipien für Computerprogrammierung technischen Ingenieurwesen wird dazu beitragen, dass unerwartete Nebenwirkungen von unsachgemäßer Programmorganisation nicht auftreten.