Also ... ich habe ein bisschen recherchiert. Was folgt, ist eine kleine Geschichtsstunde für Interessierte. :) Fahren Sie mit der Schlussfolgerung unten fort, wenn Sie nur an der Antwort interessiert sind.
1967 :
SIMULA 67 , die erste objektorientierte Programmiersprache, definiert Schlüsselwörter als Klasse , Objekt , Call by Reference , Call by Value und Virtual .
Das Vererbungssystem von SIMULA wurde ursprünglich unter einem anderen Namen, der Verkettung (und später als Präfix bezeichnet ), bekannt. Dies bezog sich auf die Tatsache, dass der Code von Supertypen kopiert und mit dem Code von Subtypen „verkettet“ wurde. Später entstand eine andere Form des Vererbungssystems, die Delegation , bei der Anrufe unter Bezugnahme auf den richtigen Typ delegiert werden.
Virtuell bezieht sich höchstwahrscheinlich auf den Prozess, der ausgeführt werden muss, um mithilfe einer virtuellen Methodentabelle einen Aufruf an die richtige Implementierung zu senden . Es ist virtuell im Vergleich zu einer festen / konkreten Implementierung.
1971 :
Niklaus Wirth schreibt über ein Konzept, das als schrittweise Verfeinerung definiert ist . Grundsätzlich wird erklärt, wie ein Programm in Teillösungen aufgeteilt wird, die erweitert werden können.
1974 :
Dies ist die früheste Veröffentlichung, die ich gefunden habe und die den Begriff abstrakte Datentypen von Barbara Liskov prägt .
Ein abstrakter Datentyp definiert eine Klasse abstrakter Objekte, die vollständig durch die für diese Objekte verfügbaren Operationen charakterisiert ist. Dies bedeutet, dass ein abstrakter Typ definiert werden kann, indem die charakterisierenden Operationen für diesen Typ definiert werden. Wenn ein Programmierer ein abstraktes Datenobjekt verwendet, befasst er sich nur mit dem Verhalten, das dieses Objekt aufweist, aber nicht mit Einzelheiten darüber, wie dieses Verhalten mittels einer Implementierung erreicht wird.
In diesem Dokument wird auch ein Operationscluster definiert, der das zu spezifizieren scheint, was wir jetzt als Schnittstelle kennen .
Interessante wissenschaftliche Terminologie (Arbeit von 1996):
Vererbung : Ein Mechanismus auf niedrigerer Ebene, mit dem Objekte oder Klassen Verhalten oder Daten gemeinsam nutzen können.
Subtyping : drückt konzeptionelle Spezialisierung aus. Eine bestimmte Form der Vererbung, auch Schnittstellenvererbung genannt .
Abstraktionsprinzipien : Der Prozess der Organisation unseres Wissens über einen Anwendungsbereich in hierarchische Rangfolgen von Ordnungen von Abstraktionen, um ein besseres Verständnis der betreffenden Phänomene zu erhalten.
Teilweise implementierte Abstraktionen : Abstraktionen, deren Definitionen absichtlich unvollständig sind.
Abstrakte Klassen : Spezifischer Begriff für eine teilweise implementierte Klasse in objektorientierten Systemen.
Unbeschränkte Vererbung : Ermöglicht das Neudefinieren (oder sogar Entfernen) von Operationen in Unterklassen.
Strikte Vererbung : Verhaltenskompatible Vererbung.
Fazit :
Abstrakte Klasse ist der allgemeinste Begriff, der in objektorientierten Systemen verwendet wird. Es scheint, dass reine und nicht reine virtuelle Funktionen nur aus C ++ stammen. Zum Beispiel lässt dieses Interview mit Stroustrup den Anschein erwecken , als hätte er die Begriffe erfunden. Wissenschaftliche Arbeiten verwenden eine allgemeinere Terminologie.
Virtual stammt von SIMULA, weshalb es häufig verwendet wird, ist aber kein allgemeiner Begriff. Es definiert bereits Implementierungsdetails. In Bezug auf Vererbungsarten zu sprechen ist angemessener. Nicht-virtuellen standardmäßig entspricht strengen Vererbung standardmäßig, während virtuelle standardmäßig entspricht nicht strikte Vererbung .
Möchtest du den Wikipedia-Eintrag anpassen ? :)