2023.09.14 THU
425p ~ 435p
32일차 기록 ⬇️
2023.09.14 - [개발 서적 기록/오브젝트_조영호] - 32일차 - self 참조와 super 참조
32일차 - self 참조와 super 참조
2023.09.14 THU 415p ~ 424p 31일차 내용 ⬇️ 2023.09.11 - [개발 서적 기록/오브젝트_조영호] - 31일차 - 업캐스팅 & 동적 바인딩 그리고 동적 메서드 탐색 31일차 - 업캐스팅 & 동적 바인딩 그리고 동적 메서
magenta-ming.tistory.com
포워딩과 위임
객체가 다른 객체에게 요청을 처리할 때 인자로 self를 전달하지 않을 수도 있다.
이것은 요청을 전달받은 최초의 객체에 다시 메시지를 전송할 필요는 없고, 단순히 코드를 재사용하고 싶은 경우라고 할 수 있다.
이렇게 처리를 요청할 때, self 참조를 전달하지 않는 경우가 포워딩이다.
반면에, self 참조를 전달한다면 위임이다.
위임은 클래스를 이용한 상속 관계를, 객체 사이의 합성 관계로 대체해서 다형성을 구현한다.
이런 selft 참조가 부모 자식 간에 자동으로 전달되는 것이 상속의 장점이다.
self 참조를 전달하면, 결과적으로 자식 클래스의 인스턴스와 부모 클래스의 인스턴스 사이에 동일한 실행 문맥을 공유할 수 있다.
프로토타입 기반의 객체지향 언어
클래스가 아닌 객체를 이용해서도 상속을 흉내낼 수 있는데, 이는 클래스 없이 오직 객체만 존재하는 프로토타입 기반의 객체 지향 언어에서 상속을 구현하는 방법이다.
객체 사이의 위임을 이용하는 것이다.
대표적인 프로토타입 기반의 객체지향 언어는 자바스크립트다.
자바스크립트는 prototype으로, 모든 객체가 다른 객체를 가리킬 수 있다.
prototype으로 부모 객체를 가리킬 수 있는 것이다. 단, self 참조를 직접 전달하거나, 메시지 포워딩을 번거롭게 직접 구현할 필요가 없다.
인스턴스는 메시지를 수신하면, 메시지를 수신한 객체의 prototype 안에서 메시지에 응답할 적절하 메서드가 존재하는지 검사한 후, 만약 없다면 prototype이 가리키는 객체에게 미시지 처리를 자동적으로 위임한다.
즉, prototype이 가리키는 객체에게 자동적인 메시지 위임을 통해 상속을 구현한 것이다.
'개발 서적 기록 > 오브젝트_조영호' 카테고리의 다른 글
35일차 - 상속의 목적 : 서브클래싱 & 서브타이핑 그리고 ISP & LSP (0) | 2023.09.15 |
---|---|
34일차 - 상속의 주 용도인 타입 계층 구현 (0) | 2023.09.15 |
32일차 - self 참조와 super 참조 (0) | 2023.09.14 |
31일차 - 업캐스팅 & 동적 바인딩 그리고 동적 메서드 탐색 (0) | 2023.09.11 |
30일차 - 다형성의 종류 (0) | 2023.09.10 |