Alors ... j'ai fait un peu de recherche. Ce qui suit est une petite leçon d'histoire pour les personnes intéressées. :) Passez à la conclusion en bas si vous êtes uniquement intéressé par la réponse.
1967 :
SIMULA 67 , le premier langage de programmation orienté objet définit les mots clés comme classe , objet , appel par référence , appel par valeur et virtuel .
Le système d' héritage de SIMULA était à l'origine connu sous un nom différent, concaténation (et plus tard connu sous le nom de préfixe ), se référant au fait que le code des supertypes était copié et `` concaténé '' avec le code des sous-types. Plus tard, une autre forme de système d'héritage a émergé, la délégation , où les appels sont délégués par référence au type correct.
Virtuel se réfère très probablement au processus qui doit être effectué pour envoyer un appel à l'implémentation correcte en utilisant une table de méthode virtuelle . Il est virtuel par rapport à une implémentation fixe / concrète.
1971 :
Niklaus Wirth, écrit sur un concept défini comme le raffinement par étapes . Il explique en gros comment diviser un programme en solutions partielles sur lesquelles il est possible d'étendre.
1974 :
C'est le premier article que j'ai trouvé qui invente le terme types de données abstraits par Barbara Liskov .
Un type de données abstrait définit une classe d'objets abstraits qui est complètement caractérisée par les opérations disponibles sur ces objets. Cela signifie qu'un type abstrait peut être défini en définissant les opérations de caractérisation pour ce type. Lorsqu'un programmeur utilise un objet de données abstrait, il ne s'intéresse qu'au comportement que cet objet présente mais pas aux détails de la manière dont ce comportement est réalisé au moyen d'une implémentation.
Cet article définit également un cluster d'opérations qui semble spécifier ce que nous connaissons maintenant comme une interface .
Terminologie scientifique intéressante (article de 1996):
Héritage : un mécanisme de bas niveau par lequel des objets ou des classes peuvent partager un comportement ou des données.
Sous - typage : exprime la spécialisation conceptuelle. Une forme spécifique d'héritage, également appelée héritage d'interface .
Principes d'abstraction : Processus d'organisation de notre connaissance d'un domaine d'application en classements hiérarchiques d'ordonnances d'abstractions, afin d'obtenir une meilleure compréhension des phénomènes concernés.
Abstractions partiellement implémentées : abstractions dont les définitions ont délibérément été laissées incomplètes.
Classes abstraites : terme spécifique pour une classe partiellement implémentée dans les systèmes orientés objet.
Héritage sans restriction : permet de redéfinir (ou même de supprimer) les opérations dans les sous-classes.
Héritage strict : héritage compatible avec le comportement.
Conclusion :
La classe abstraite est le terme le plus général à utiliser dans les systèmes orientés objet. Il semble que les fonctions virtuelles pures et non pures ne proviennent que de C ++. Par exemple, cette interview avec Stroustrup donne l'impression qu'il a inventé les termes. Les articles scientifiques utilisent une terminologie plus générale.
Le virtuel provient de SIMULA, ce qui fait que son utilisation est répandue, mais ce n'est pas un terme général. Il définit déjà les détails d'implémentation. Parler en termes de types d'héritage est plus approprié. Non virtuel par défaut correspond à un héritage strict par défaut, tandis que virtuel par défaut correspond à un héritage non strict .
Toute personne intéressée à ajuster l' entrée wikipedia ? :)