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
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
HighEndMicrowaveOvenza pomocąR6Class()(dokumentacja) i przypisz go dohigh_end_microwave_oven_factory.- Klasa powinna dziedziczyć po
FancyMicrowaveOven. - Powinna zawierać element listy
public.
- Klasa powinna dziedziczyć po
- Nadpisz publiczną metodę
cook().- Metoda powinna przyjmować jeden argument o nazwie
time_seconds. - Powinna wywoływać metodę
cook()klasyMicrowaveOven, … - a następnie wyświetlać kawałek pizzy za pomocą
message(ascii_pizza_slice)(dokumentacja).
- Metoda powinna przyjmować jeden argument o nazwie
- Utwórz obiekt wysokiej klasy kuchenki mikrofalowej i przypisz go do
a_high_end_microwave. - Wywołaj metodę
cook()na obiekciea_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
___