Jadi ... Saya sudah melakukan sedikit riset. Berikut ini adalah sedikit pelajaran sejarah bagi mereka yang tertarik. :) Lewati ke kesimpulan di bagian bawah jika Anda hanya tertarik dengan jawabannya.
1967 :
SIMULA 67 , bahasa pemrograman berorientasi objek pertama mendefinisikan kata kunci sebagai kelas , objek , panggilan dengan referensi , panggilan dengan nilai dan virtual .
Sistem pewarisan SIMULA pada awalnya dikenal dengan nama yang berbeda, gabungan (dan kemudian dikenal sebagai awalan ), merujuk pada fakta bahwa kode supertipe disalin dan 'disatukan' dengan kode subtipe. Kemudian bentuk lain sistem warisan muncul, delegasi , di mana panggilan didelegasikan dengan mengacu pada jenis yang benar.
Virtual kemungkinan besar mengacu pada proses yang perlu dilakukan untuk mengirimkan panggilan ke implementasi yang benar dengan menggunakan tabel metode virtual . Ini virtual dibandingkan dengan implementasi tetap / konkret.
1971 :
Niklaus Wirth, menulis tentang konsep yang didefinisikan sebagai Stepwise Refinement . Ini pada dasarnya menjelaskan cara membagi program dalam solusi parsial yang dapat diperpanjang.
1974 :
Ini adalah kertas paling awal yang saya temukan yang mengandung istilah tipe data abstrak oleh Barbara Liskov .
Tipe data abstrak mendefinisikan kelas objek abstrak yang sepenuhnya ditandai oleh operasi yang tersedia pada objek-objek tersebut. Ini berarti bahwa tipe abstrak dapat didefinisikan dengan mendefinisikan operasi karakterisasi untuk tipe itu. Ketika seorang programmer menggunakan objek data abstrak, ia hanya peduli dengan perilaku yang ditunjukkan objek itu tetapi tidak dengan rincian tentang bagaimana perilaku itu dicapai melalui implementasi.
Makalah ini juga mendefinisikan sebuah cluster operasi yang tampaknya menentukan apa yang sekarang kita kenal sebagai antarmuka .
Terminologi ilmiah yang menarik (makalah dari 1996):
Warisan : mekanisme yang lebih rendah di mana objek atau kelas dapat berbagi perilaku atau data.
Subtyping : mengekspresikan spesialisasi konseptual. Suatu bentuk khusus warisan, juga disebut warisan antarmuka .
Prinsip Abstraksi : Proses pengorganisasian pengetahuan kita tentang domain aplikasi ke dalam peringkat hierarki urutan abstraksi, untuk mendapatkan pemahaman yang lebih baik tentang fenomena yang bersangkutan.
Abstraksi yang diimplementasikan sebagian : abstraksi yang definisinya sengaja dibiarkan tidak lengkap.
Kelas abstrak : Istilah khusus untuk kelas yang diimplementasikan sebagian dalam sistem berorientasi objek.
Warisan nonstrict : Memungkinkan operasi untuk didefinisikan ulang (atau bahkan dihapus) dalam subkelas.
Warisan ketat : Warisan yang kompatibel secara perilaku.
Kesimpulan :
Kelas abstrak adalah istilah paling umum untuk digunakan dalam sistem berorientasi objek. Tampaknya fungsi virtual murni dan non-murni hanya berasal dari C ++. Misalnya, wawancara dengan Stroustrup ini membuatnya seolah-olah dia yang menciptakan istilah-istilah itu. Makalah ilmiah menggunakan terminologi yang lebih umum.
Virtual berasal dari SIMULA, yang menyebabkan penggunaannya menjadi luas, tetapi itu bukan istilah umum. Itu sudah mendefinisikan detail implementasi. Berbicara dalam hal jenis warisan lebih tepat. Non-virtual secara default sesuai dengan warisan ketat secara default, sedangkan virtual secara default sesuai dengan warisan nonstrict .
Adakah yang tertarik untuk menyesuaikan entri wikipedia ? :)