Att Åsidosätta Matlagningsfunktionen Ytterligare en Gång
När mellanliggande klasser har exponerat sin förälders funktionalitet via aktiva bindningar med super_, kan du komma åt metoder över flera generationer av R6-klasser. Syntaxen är
parent_method <- super$method()
grand_parent_method <- super$super_$method()
great_grand_parent_method <- super$super_$super_$method()
Den här övningen är en del av kursen
Objektorienterad programmering med S3 och R6 i R
Övningsinstruktioner
Klasserna för mikrovågsugn och avancerad mikrovågsugn är fördefinierade i din arbetsmiljö. En sträng ascii_pizza_slice är också fördefinierad.
- Utforska de övriga mikrovågsugnsfabrikerna genom att skriva ut deras namn.
- Definiera en klassgenerator
HighEndMicrowaveOvenmedR6Class()(docs) och tilldela den tillhigh_end_microwave_oven_factory.- Den ska ärva från
FancyMicrowaveOven. - Den ska ha ett listelement
public.
- Den ska ärva från
- Åsidosätt den publika metoden
cook().- Metoden ska ta ett enda argument med namnet
time_seconds. - Den ska anropa
MicrowaveOvenscook()-metod, … - och sedan visa en pizzabit med
message(ascii_pizza_slice)(docs).
- Metoden ska ta ett enda argument med namnet
- Instantiera ett objekt av typen high-end-mikrovågsugn och tilldela det till
a_high_end_microwave. - Anropa
cook()-metoden påa_high_end_microwaveför att tillaga i en sekund.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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
___