Итак ... Я провел небольшое исследование. Далее следует небольшой урок истории для интересующихся. :) Перейдите к заключению внизу, если вас интересует только ответ.
1967 г . :
SIMULA 67 , первый объектно-ориентированный язык программирования, определяет ключевые слова как класс , объект , вызов по ссылке , вызов по значению и виртуальный .
Система наследования SIMULA была первоначально известна под другим именем - конкатенация (и позже известная как префикс ), ссылаясь на тот факт, что код супертипов был скопирован и «конкатенирован» с кодом подтипов. Позже появилась другая форма системы наследования - делегирование , где вызовы делегируются по ссылке на правильный тип.
Виртуальный, скорее всего, относится к процессу, который необходимо выполнить для отправки вызова правильной реализации с использованием таблицы виртуальных методов . Это виртуально по сравнению с фиксированной / конкретной реализацией.
1971 :
Никлаус Вирт пишет о понятии, определенном как поэтапное уточнение . Это в основном объясняет, как разделить программу на частичные решения, которые могут быть расширены.
1974 :
Это самая ранняя статья, которую я нашел, в которой есть термин « абстрактные типы данных » Барбары Лисков .
Абстрактный тип данных определяет класс абстрактных объектов, который полностью характеризуется операциями, доступными над этими объектами. Это означает, что абстрактный тип может быть определен путем определения характеризующих операций для этого типа. Когда программист использует абстрактный объект данных, он имеет дело только с поведением, которое демонстрирует этот объект, но не с какими-либо подробностями того, как это поведение достигается посредством реализации.
Эта статья также определяет кластер операций, который, кажется, определяет то, что мы теперь знаем как интерфейс .
Интересная научная терминология (статья 1996 г.):
Наследование : более низкоуровневый механизм, с помощью которого объекты или классы могут совместно использовать поведение или данные.
Подтип : выражает концептуальную специализацию. Особая форма наследования, также называемая интерфейсным наследованием .
Принципы абстракции : процесс организации наших знаний в области приложения в иерархическом порядке упорядочения абстракций, чтобы получить лучшее понимание рассматриваемых явлений.
Частично реализованные абстракции : абстракции, определения которых намеренно оставлены неполными.
Абстрактные классы : Специальный термин для частично реализованного класса в объектно-ориентированных системах.
Неограниченное наследование : позволяет переопределять (или даже удалять) операции в подклассах.
Строгое наследование : наследственно- поведенческое наследование.
Вывод :
Абстрактный класс является наиболее общим термином для использования в объектно-ориентированных системах. Кажется, что чистые и не чистые виртуальные функции происходят только из C ++. Например, это интервью со Страуструпом дает понять, что он изобрел термины. В научных работах используется более общая терминология.
Виртуальный происходит от SIMULA, что делает его использование широко распространенным, но это не общий термин. Это уже определяет детали реализации. Говоря с точки зрения типов наследования является более подходящим. Не виртуальный по умолчанию соответствует строгому наследованию по умолчанию, а виртуальный по умолчанию соответствует нестрогому наследованию .
Кто-нибудь заинтересован в корректировке записи в Википедии ? :)