그래서 ... 나는 약간의 연구를 해왔다. 다음은 관심있는 사람들을위한 작은 역사 교훈입니다. :) 답변에만 관심이 있다면 맨 아래의 결론으로 건너 뜁니다.
1967 :
첫 번째 객체 지향 프로그래밍 언어 인 SIMULA 67 은 키워드를 클래스 , 객체 , 참조 별 호출 , 값별 호출 및 가상으로 정의 합니다.
SIMULA의 상속 시스템은 원래 수퍼 타입의 코드가 복사되어 서브 타입의 코드와 '연계'되었다는 사실을 언급 하는 다른 이름 인 연결 (이후 접두사 ) 로 알려져 있었습니다. 나중에 또 다른 형태의 상속 시스템 인 delegation이 나타 났 으며 여기서 올바른 유형을 참조하여 호출이 위임됩니다.
가상 은 가상 메소드 테이블 을 사용하여 올바른 구현에 대한 호출을 디스패치하기 위해 수행해야하는 프로세스를 가리 킵니다 . 고정 / 콘크리트 구현에 비해 가상입니다.
1971 :
Niklaus Wirth는 Stepwise Refinement 로 정의 된 개념에 대해 씁니다 . 기본적으로 프로그램을 확장 가능한 부분 솔루션으로 나누는 방법을 설명합니다.
1974 :
이것은 내가 동전 용어 발견 된 최초의 논문이다 추상 데이터 유형 에 의해 바바라리스 코브을 .
추상 데이터 형식은 해당 개체에서 사용 가능한 작업으로 완전히 특징 지워지는 추상 개체 클래스를 정의합니다. 이는 해당 유형의 특성화 작업을 정의하여 추상 유형을 정의 할 수 있음을 의미합니다. 프로그래머가 추상 데이터 객체를 사용하는 경우, 해당 객체가 나타내는 행동에만 관심이 있지만 구현을 통해 그 행동이 어떻게 달성되는지에 대한 세부 사항은 관심이 없습니다.
이 백서는 또한 현재 우리가 인터페이스 로 알고있는 것을 지정하는 것처럼 보이는 작업 클러스터 를 정의합니다 .
흥미로운 과학 용어 (1996 년 논문) :
상속 : 객체 나 클래스가 행동이나 데이터를 공유 할 수있는보다 낮은 수준의 메커니즘입니다.
서브 타이핑 : 개념적 전문화를 표현합니다. 인터페이스 상속 이라고도하는 특정 형태의 상속 .
추상화 원리 : 문제의 현상을 더 잘 이해하기 위해 응용 영역에 대한 지식을 추상화 순서의 계층 적 순위로 구성하는 프로세스.
부분적으로 구현 된 추상화 : 의도적으로 정의가 불완전한 추상화.
추상 클래스 : 객체 지향 시스템에서 부분적으로 구현 된 클래스의 특정 용어 .
엄격하지 않은 상속 : 하위 클래스에서 작업을 재정의하거나 제거 할 수 있습니다.
엄격한 상속 : 동작 호환 상속.
결론 :
추상 클래스 는 객체 지향 시스템에서 사용하는 가장 일반적인 용어입니다. 순수하고 순수하지 않은 가상 함수는 C ++에서만 발생하는 것 같습니다 . 예를 들어, Stroustrup과 의이 인터뷰 는 그가 용어를 발명 한 것으로 보입니다. 과학 논문은보다 일반적인 용어를 사용합니다.
가상 은 SIMULA에서 유래하여 사용량이 널리 퍼져 있지만 일반적인 용어는 아닙니다. 이미 구현 세부 사항을 정의했습니다. 상속 유형 측면에서 말하는 것이 더 적절합니다. 기본적으로 비가 상은 기본적 으로 엄격한 상속 에 해당하고 , 가상 은 기본적으로 비 엄격 상속에 해당합니다 .
위키 백과 항목 조정에 관심이있는 사람이 있습니까? :)