시작하기무료로 시작하기

요리 기능을 다시 또 오버라이드하기

중간 클래스가 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라는 단일 인수를 받아야 합니다.
    • MicrowaveOvencook() 메서드를 호출한 다음,
    • message(ascii_pizza_slice)(docs)를 사용해 피자 조각을 표시하세요.
  • 하이엔드 전자레인지 객체를 인스턴스화하여 a_high_end_microwave에 할당하세요.
  • a_high_end_microwavecook() 메서드를 호출해 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
___
코드 편집 및 실행