Sovrascrivere ancora le capacità di cottura
Una volta che le classi intermedie hanno esposto le funzionalità del genitore con i binding attivi super_, puoi accedere ai metodi attraverso diverse generazioni di classi R6. La sintassi è
parent_method <- super$method()
grand_parent_method <- super$super_$method()
great_grand_parent_method <- super$super_$super_$method()
Questo esercizio fa parte del corso
Programmazione orientata agli oggetti con S3 e R6 in R
Istruzioni dell'esercizio
Le classi per il forno a microonde e per il forno a microonde "fancy" sono già state predefinite nel tuo workspace. Anche la stringa ascii_pizza_slice è stata predefinita.
- Esplora le altre factory di forni a microonde stampando i loro nomi.
- Definisci un generatore di classe
HighEndMicrowaveOvenusandoR6Class()(docs) e assegnalo ahigh_end_microwave_oven_factory.- Dovrebbe ereditare da
FancyMicrowaveOven. - Dovrebbe avere un elemento lista
public.
- Dovrebbe ereditare da
- Sovrascrivi il metodo pubblico
cook().- Il metodo deve accettare un solo argomento chiamato
time_seconds. - Deve chiamare il metodo
cook()diMicrowaveOven, … - poi mostrare una fetta di pizza usando
message(ascii_pizza_slice)(docs).
- Il metodo deve accettare un solo argomento chiamato
- Istanzia un oggetto forno a microonde di fascia alta e assegnalo a
a_high_end_microwave. - Chiama il metodo
cook()dia_high_end_microwaveper cuocere per un secondo.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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
___