だから...私は少し研究をしてきました。以下は、興味のある人のための小さな歴史の教訓です。:)答えだけに興味があるなら、一番下の結論にスキップしてください。
1967:
SIMULA 67、最初のオブジェクト指向プログラミング言語は、キーワードをclass、object、reference by reference、call by valueおよびvirtualとして定義します。
SIMULAの継承システムは、元々別の名前である連結(および接頭辞として知られています)で知られており、スーパータイプのコードがコピーされ、サブタイプのコードと「連結」されたという事実を指します。後に別の形態の継承システムが登場し、 delegation。ここでは、正しい型への参照によって呼び出しが委任されます。
仮想は、ほとんどの場合、適切な実装への呼び出しをディスパッチするために実行する必要があるプロセスを指します仮想メソッドテーブルます。固定/具体的な実装に比べて仮想的です。
1971年:
Niklaus Wirthは、Stepwise Refinementと定義された概念について書いています。基本的に、拡張可能な部分的なソリューションにプログラムを分割する方法を説明します。
1974年:
これは私が見つけた最初の論文で、Barbara Liskovによる抽象データ型という用語を作り出しています。
抽象データ型は、抽象オブジェクトのクラスを定義します。抽象オブジェクトのクラスは、それらのオブジェクトで利用可能な操作によって完全に特徴付けられます。つまり、抽象型は、その型の特性化操作を定義することで定義できます。プログラマーが抽象データオブジェクトを使用する場合、彼はそのオブジェクトが示す動作のみに関心があり、実装によってその動作がどのように達成されるかの詳細には関心がありません。
また、この論文は我々が現在インターフェースとして知っていることを指定するように見える操作クラスタを定義します。
興味深い科学用語(1996年の論文):
継承:オブジェクトまたはクラスが動作またはデータを共有できる、より低レベルのメカニズム。
サブタイピング:概念的な特殊化を表します。インターフェイス継承とも呼ばれる特定の形式の継承。
抽象化の原則:アプリケーションドメインの知識を抽象化の順序付けの階層的ランキングに編成するプロセス。関心のある現象のより良い理解を得るために。
部分的に実装された抽象化:定義が意図的に不完全なままになっている抽象化。
抽象クラス:オブジェクト指向システムで部分的に実装されたクラスの特定の用語。
非厳密な継承:操作をサブクラスで再定義(または削除)することができます。
厳密な継承:動作的に互換性のある継承。
結論:
抽象クラスは、オブジェクト指向システムで使用する最も一般的な用語です。それはそうです、純粋かつ非純粋仮想関数はC ++に由来します。たとえば、Stroustrupとのこのインタビューでは、彼が用語を発明したように思われます。科学論文では、より一般的な用語を使用しています。
VirtualはSIMULAに由来するものであり、SIMULAの使用法が広まっていますが、一般的な用語ではありません。すでに実装の詳細を定義しています。継承の種類の観点から言えば、より適切です。非仮想にデフォルト対応により、厳格な継承デフォルトでは、しばらくの仮想へのデフォルト対応により、厳格で継承。
ウィキペディアのエントリの調整に興味がある人はいますか?:)