나무 숲
프로그래밍언어론 key7 Inheritance 본문
Generic Type?
타입을 인수로 받는 타입 (parameteric polymorphism)
후자의 타입은 전자의 타입을 통해 생성된 타입
Instantiation of a Generic type : generic type에 타입 인수를 전달함으로써 새로운 타입을 만드는 것
구현 : 타입 인수는 컴파일 시간에 결정되므로 인수가 결정되면 일반 타입과 동일하게 구현 가능하다
Generic Modules : 타입을 인수로 받을 수 있는 프로그램 모듈
Generic Packages in ada, Template class in C++
Inheritance
is -a
일반적 관점
한 프로그램 요소의 특징이 다른 프로그램 요소로 전달되는 것
ADT 관점
한 ADT를 보다 구체화하여 다른 ADT를 만드는 것. superclass - subclass관계를 형성하여 모든 속성을 상속받음
=ADT의 기본 속성을 유지하며 새로운 속성이 추가된 ADT 생성 + is-a 관계 구현
ada의 tagged record, c++의 derived class, java의 subclass
Inheritance - Implementation Issue
Multiple Inheritance
여러 superclass를 둘 수 있나? -> base class의 여러 copy 문제 발생
Dynamic Invocation of Methods
method는 객체에 따라 호출된다 (c++의 virtual function)
Abstract class
극도로 추상화된 클래스는 객채를 생성할 수 없다. 서브클래스에서 생성된 객체들에 대한 인터페이스만을 나타내기 위해 사용
Polymorphism
Ad-hoc polymorphism
실제로 다른 코드지만 같은 이름으로 사용 (Overloading)
Parametric Polymorphism
여러 타입에 대해 동일하게 적용되는 코드
타입 인수를 받으므로 generic module (Generic Programming)
Subtype Polymorphism
is-a 관계가 성립할 때, supertype에 적용 가능한 코드는 subtype에도 적용 가능하다 (Inheritance)
pure polymorphism
'Career' 카테고리의 다른 글
[코로나 SDK] 소개+환경구축 (0) | 2016.07.09 |
---|---|
프로그래밍언어론 key8 Sequence Control (1) | 2016.06.12 |
프로그래밍언어론 key6 Encapsulation (0) | 2016.06.12 |
Control Unit Operation (0) | 2016.06.11 |
Processor Structure and Function (0) | 2016.06.11 |