Super-surclasser les capacités de cuisson
Une fois que les classes intermédiaires ont exposé les fonctionnalités de leur parent avec des active bindings super_, vous pouvez accéder aux méthodes sur plusieurs générations de classes R6. La syntaxe est
parent_method <- super$method()
grand_parent_method <- super$super_$method()
great_grand_parent_method <- super$super_$super_$method()
Cet exercice fait partie du cours
Programmation orientée objet avec S3 et R6 en R
Instructions
Des classes de four à micro-ondes et de four à micro-ondes « fancy » ont été pré-définies pour vous dans votre espace de travail. Une chaîne ascii_pizza_slice a aussi été pré-définie.
- Explorez les autres fabriques de fours à micro-ondes en affichant leurs noms.
- Définissez un générateur de classe
HighEndMicrowaveOvenavecR6Class()(docs) et assignez-le àhigh_end_microwave_oven_factory.- Il doit hériter de
FancyMicrowaveOven. - Il doit avoir un élément de liste
public.
- Il doit hériter de
- Redéfinissez la méthode publique
cook().- La méthode doit prendre un seul argument nommé
time_seconds. - Elle doit appeler la méthode
cook()deMicrowaveOven, … - puis afficher une part de pizza avec
message(ascii_pizza_slice)(docs).
- La méthode doit prendre un seul argument nommé
- Instanciez un objet four à micro-ondes haut de gamme et assignez-le à
a_high_end_microwave. - Appelez la méthode
cook()dea_high_end_microwavepour cuire pendant une seconde.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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
___