Quindi ... ho fatto una piccola ricerca. Quello che segue è una piccola lezione di storia per gli interessati. :) Vai alla conclusione in fondo se sei interessato solo alla risposta.
1967 :
SIMULA 67 , il primo linguaggio di programmazione orientato agli oggetti definisce le parole chiave come classe , < em> oggetto , chiama per riferimento , chiama per valore e virtuale .
Il sistema ereditarietà di SIMULA era originariamente conosciuto con un nome diverso, concatenazione (e più tardi noto come prefisso ), in riferimento al fatto che il codice dei supertipi è stato copiato e "concatenato" con il codice dei sottotipi. Successivamente un'altra forma di sistema di ereditarietà emerso, delegazione , in cui le chiamate sono delegate in base al tipo corretto.
Virtuale molto probabilmente si riferisce al processo che deve essere eseguito per inviare una chiamata all'implementazione corretta usando un tabella dei metodi virtuali . È virtuale rispetto a un'implementazione fissa / concreta.
1971 :
Niklaus Wirth, scrive su un concetto definito come perfezionamento graduale . Spiega in modo basilare come dividere un programma in soluzioni parziali su cui può essere esteso.
1974 :
Questo è il primo documento che ho trovato con il termine abstract tipi di dati di Barbara Liskov .
An abstract data type defines a class of abstract objects which is completely characterized by the operations available on those objects. This means that an abstract type can be defined by defining the characterizing operations for that type. When a programmer makes use of an abstract data object, he is concerned only with the behavior which that object exhibits but not with any details of how that behavior is achieved by means of an implementation.
Questo documento definisce anche un cluster operativo che sembra specificare ciò che ora conosciamo come un'interfaccia .
Interessante terminologia scientifica (carta del 1996):
Eredità : un meccanismo di livello più basso grazie al quale oggetti o classi possono condividere comportamenti o dati.
Sottotitoli : esprime la specializzazione concettuale. Una forma specifica di ereditarietà, anche chiamata ereditarietà dell'interfaccia .
Principi di astrazione : il processo di organizzazione della nostra conoscenza di un dominio di applicazione in classifiche gerarchiche di ordini di astrazioni, al fine di ottenere una migliore comprensione dei fenomeni in questione.
Astrazioni parzialmente implementate : astrazioni le cui definizioni sono state intenzionalmente lasciate incomplete.
Classi astratte : termine specifico per una classe parzialmente implementata in sistemi orientati agli oggetti.
Ereditarietà di : consente di ridefinire (o persino rimuovere) le operazioni in sottoclassi.
Eredità rigida : ereditarietà comportamentale compatibile
Conclusione :
Classe astratta è il termine più generico da utilizzare nei sistemi orientati agli oggetti. Sembra che le funzioni virtuali pure e non pure siano originate solo dal C ++. Ad esempio, questa intervista a Stroustrup fa sembrare che abbia inventato i termini. I documenti scientifici usano una terminologia più generale.
Virtual ha origine da SIMULA, il che fa sì che il suo utilizzo sia molto diffuso, ma non è un termine generico. Definisce già i dettagli di implementazione. Parlando in termini di tipi di eredità è più appropriato. Non virtuale per impostazione predefinita corrisponde a ereditarietà rigorosa per impostazione predefinita, mentre virtuale per impostazione predefinita corrisponde a ereditarietà non forzata .
Chiunque sia interessato a regolare la voce di Wikipedia ? :)