요리 기능을 다시 또 오버라이드하기
중간 클래스가 super_ 활성 바인딩으로 부모의 기능을 노출하면, 여러 세대에 걸친 R6 클래스의 메서드에 접근할 수 있습니다. 문법은 다음과 같습니다.
parent_method <- super$method()
grand_parent_method <- super$super_$method()
great_grand_parent_method <- super$super_$super_$method()
이 연습은 강의의 일부입니다
R에서 S3와 R6로 배우는 Object-Oriented Programming
연습 안내
전자레인지와 고급 전자레인지 클래스가 작업 공간에 미리 정의되어 있습니다. 문자열 ascii_pizza_slice도 미리 정의되어 있어요.
- 다른 전자레인지 팩토리를 살펴보면서 이름을 출력해 보세요.
R6Class()(docs)를 사용해HighEndMicrowaveOven클래스 제너레이터를 정의하고, 이를high_end_microwave_oven_factory에 할당하세요.FancyMicrowaveOven을 상속해야 합니다.public리스트 요소를 가져야 합니다.
- public
cook()메서드를 오버라이드하세요.- 이 메서드는
time_seconds라는 단일 인수를 받아야 합니다. MicrowaveOven의cook()메서드를 호출한 다음,message(ascii_pizza_slice)(docs)를 사용해 피자 조각을 표시하세요.
- 이 메서드는
- 하이엔드 전자레인지 객체를 인스턴스화하여
a_high_end_microwave에 할당하세요. a_high_end_microwave의cook()메서드를 호출해 1초 동안 조리하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Explore other microwaves
microwave_oven_factory
fancy_microwave_oven_factory
# Define a high-end microwave oven class
high_end_microwave_oven_factory <- ___(
"___",
___ = ___,
___ = ___(
___ = ___
)
)
# Instantiate a high-end microwave oven
a_high_end_microwave <- ___
# Use it to cook for one second
___