Zacznij terazZacznij za darmo

Nadpisywanie nadpisanej metody gotowania

Gdy pośrednie klasy udostępnią funkcjonalność swoich klas nadrzędnych za pomocą aktywnych powiązań super_, możesz uzyskać dostęp do metod z wielu pokoleń klasy R6. Składnia wygląda następująco:

parent_method <- super$method()
grand_parent_method <- super$super_$method()
great_grand_parent_method <- super$super_$super_$method()

To ćwiczenie jest częścią kursu

Programowanie obiektowe z S3 i R6 w R

Zobacz kurs

Instrukcje do ćwiczenia

W twoim środowisku pracy zostały wstępnie zdefiniowane klasy microwave oven i fancy microwave oven. Wstępnie zdefiniowano również łańcuch znaków ascii_pizza_slice.

  • Zapoznaj się z pozostałymi fabrykami kuchenek mikrofalowych, wypisując ich nazwy.
  • Zdefiniuj generator klasy HighEndMicrowaveOven za pomocą R6Class() (dokumentacja) i przypisz go do high_end_microwave_oven_factory.
    • Klasa powinna dziedziczyć po FancyMicrowaveOven.
    • Powinna zawierać element listy public.
  • Nadpisz publiczną metodę cook().
    • Metoda powinna przyjmować jeden argument o nazwie time_seconds.
    • Powinna wywoływać metodę cook() klasy MicrowaveOven, …
    • a następnie wyświetlać kawałek pizzy za pomocą message(ascii_pizza_slice) (dokumentacja).
  • Utwórz obiekt wysokiej klasy kuchenki mikrofalowej i przypisz go do a_high_end_microwave.
  • Wywołaj metodę cook() na obiekcie a_high_end_microwave, aby gotować przez jedną sekundę.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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
___
Edytuj i uruchom kod