De kookmogelijkheden nóg verder overschrijven
Zodra tussenklassen de functionaliteit van hun ouder hebben blootgelegd met super_ active bindings, kun je methoden over meerdere generaties R6-klassen heen benaderen. De syntaxis is
parent_method <- super$method()
grand_parent_method <- super$super_$method()
great_grand_parent_method <- super$super_$super_$method()
Deze oefening maakt deel uit van de cursus
Objectgeoriënteerd programmeren met S3 en R6 in R
Oefeninstructies
Klassen voor magnetron en luxe magnetron zijn alvast voor je gedefinieerd in je werkruimte. Een string ascii_pizza_slice is ook al gedefinieerd.
- Verken de andere magnetron-fabrieken door hun namen te printen.
- Definieer een klassegenerator
HighEndMicrowaveOvenmetR6Class()(docs), en ken deze toe aanhigh_end_microwave_oven_factory.- Deze moet erven van
FancyMicrowaveOven. - Deze moet een
public-listelement hebben.
- Deze moet erven van
- Overschrijf de publieke methode
cook().- De methode moet één argument hebben met de naam
time_seconds. - Hij moet de
cook()-methode vanMicrowaveOvenaanroepen, … - en daarna een pizzapunt tonen met
message(ascii_pizza_slice)(docs).
- De methode moet één argument hebben met de naam
- Instantineer een high-end magnetronobject en ken het toe aan
a_high_end_microwave. - Roep de
cook()-methode vana_high_end_microwaveaan om één seconde te koken.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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
___