Přepisování přepsaných schopností vaření
Jakmile mezilehlé třídy zpřístupní funkcionalitu svého rodiče pomocí aktivních vazeb super_, lze přistupovat k metodám napříč několika generacemi R6 tříd. Syntaxe vypadá takto:
parent_method <- super$method()
grand_parent_method <- super$super_$method()
great_grand_parent_method <- super$super_$super_$method()
Toto cvičení je součástí kurzu
Objektově orientované programování s S3 a R6 v R
Pokyny k cvičení
V pracovním prostředí máš předem definované třídy mikrovlnné trouby a fancy mikrovlnné trouby. Předem je definován také řetězec ascii_pizza_slice.
- Prozkoumej ostatní továrny na mikrovlnné trouby tím, že vypíšeš jejich názvy.
- Definuj generátor třídy
HighEndMicrowaveOvenpomocíR6Class()(docs) a přiřaď ho dohigh_end_microwave_oven_factory.- Třída by měla dědit od
FancyMicrowaveOven. - Měla by obsahovat prvek seznamu
public.
- Třída by měla dědit od
- Přepiš veřejnou metodu
cook().- Metoda by měla přijímat jeden argument s názvem
time_seconds. - Měla by zavolat metodu
cook()třídyMicrowaveOven, … - a poté zobrazit pizza slice pomocí
message(ascii_pizza_slice)(docs).
- Metoda by měla přijímat jeden argument s názvem
- Vytvoř instanci high-end mikrovlnné trouby a přiřaď ji do
a_high_end_microwave. - Zavolej metodu
cook()objektua_high_end_microwavepro vaření po dobu jedné sekundy.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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
___