Więc ... Robię małe badania. Poniżej znajduje się krótka lekcja historii dla zainteresowanych. :) Przejdź do konkluzji na dole, jeśli interesuje Cię tylko odpowiedź.
1967 :
SIMULA 67 , pierwszy obiektowy język programowania, definiuje słowa kluczowe jako klasę , obiekt , wywołanie przez odniesienie , wywołanie według wartości i wirtualny .
System dziedziczenia SIMULA był pierwotnie znany pod inną nazwą, konkatenacją (a później znany jako prefiks ), odnosząc się do faktu, że kod nadtypów został skopiowany i „połączony” z kodem podtypów. Później pojawiła się inna forma systemu dziedziczenia , delegacja , w której połączenia są delegowane przez odniesienie do odpowiedniego typu.
Wirtualny najprawdopodobniej odnosi się do procesu, który należy wykonać, aby wywołać wywołanie poprawnej implementacji za pomocą wirtualnej tabeli metod . Jest wirtualny w porównaniu do stałej / konkretnej implementacji.
1971 :
Niklaus Wirth pisze o koncepcji zdefiniowanej jako stopniowe udoskonalanie . Zasadniczo wyjaśnia, jak podzielić program na częściowe rozwiązania, które można rozszerzyć.
1974 :
To pierwszy znaleziony przeze mnie artykuł, w którym ujęto termin abstrakcyjne typy danych autorstwa Barbary Liskov .
Abstrakcyjny typ danych definiuje klasę obiektów abstrakcyjnych, która jest całkowicie scharakteryzowana przez operacje dostępne na tych obiektach. Oznacza to, że można zdefiniować typ abstrakcyjny, definiując operacje charakteryzujące dla tego typu. Gdy programista korzysta z abstrakcyjnego obiektu danych, interesuje go jedynie zachowanie, które ten obiekt wykazuje, ale nie szczegóły, w jaki sposób osiąga się to za pomocą implementacji.
W tym dokumencie zdefiniowano także klaster operacji, który wydaje się określać to, co obecnie znamy jako interfejs .
Interesująca terminologia naukowa (artykuł z 1996 r.):
Dziedziczenie : mechanizm niskiego poziomu, za pomocą którego obiekty lub klasy mogą współdzielić zachowanie lub dane.
Subtyping : wyraża specjalizację koncepcyjną. Szczególna forma dziedziczenia, zwana także dziedziczeniem interfejsu .
Zasady abstrakcji : proces organizowania naszej wiedzy na temat dziedziny aplikacji w hierarchiczne rankingi kolejności abstrakcji w celu lepszego zrozumienia omawianych zjawisk.
Częściowo wdrożone abstrakcje : abstrakcje, których definicje celowo pozostawiono niekompletne.
Klasy abstrakcyjne : Określenie specyficzne dla częściowo zaimplementowanej klasy w systemach obiektowych.
Nieograniczone dziedziczenie : umożliwia ponowne zdefiniowanie (lub nawet usunięcie) operacji w podklasach.
Ścisłe dziedziczenie : Dziedziczenie zgodne z zachowaniem.
Wniosek :
Klasa abstrakcyjna to najbardziej ogólny termin używany w systemach obiektowych. Wygląda na to, że czyste i nieczyste funkcje wirtualne pochodzą tylko z C ++. Na przykład ten wywiad ze Stroustrupem wydaje się, że wynalazł warunki. Artykuły naukowe używają bardziej ogólnej terminologii.
Wirtualny pochodzi z SIMULA, co powoduje, że jego użycie jest powszechne, ale nie jest to termin ogólny. Definiuje już szczegóły implementacji. Mówienie w kategoriach rodzajów dziedziczenia jest bardziej odpowiednie. Domyślnie nie-wirtualny domyślnie odpowiada ścisłemu dziedziczeniu , natomiast domyślnie wirtualny odpowiada nieograniczonemu dziedziczeniu .
Czy ktoś jest zainteresowany dostosowaniem wpisu na Wikipedii ? :)