Sobrescribir por partida doble las capacidades de cocción
Una vez que las clases intermedias han expuesto la funcionalidad del padre con las active bindings super_, puedes acceder a métodos a través de varias generaciones de clases R6. La sintaxis es
parent_method <- super$method()
grand_parent_method <- super$super_$method()
great_grand_parent_method <- super$super_$super_$method()
Este ejercicio forma parte del curso
Programación orientada a objetos con S3 y R6 en R
Instrucciones del ejercicio
Las clases de horno microondas y de horno microondas "fancy" ya están predefinidas en tu espacio de trabajo. También se ha predefinido una cadena ascii_pizza_slice.
- Explora las otras fábricas de hornos microondas imprimiendo sus nombres.
- Define un generador de clase
HighEndMicrowaveOvenusandoR6Class()(docs) y asígnalo ahigh_end_microwave_oven_factory.- Debe heredar de
FancyMicrowaveOven. - Debe tener un elemento de lista
public.
- Debe heredar de
- Sobrescribe el método público
cook().- El método debe aceptar un único argumento llamado
time_seconds. - Debe llamar al método
cook()deMicrowaveOven, … - y después mostrar una porción de pizza usando
message(ascii_pizza_slice)(docs).
- El método debe aceptar un único argumento llamado
- Instancia un objeto de horno microondas de gama alta y asígnalo a
a_high_end_microwave. - Llama al método
cook()dea_high_end_microwavepara cocinar durante un segundo.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# 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
___