Inizia subitoInizia gratis

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

Visualizza corso

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 HighEndMicrowaveOven usando R6Class() (docs) e assegnalo a high_end_microwave_oven_factory.
    • Dovrebbe ereditare da FancyMicrowaveOven.
    • Dovrebbe avere un elemento lista public.
  • Sovrascrivi il metodo pubblico cook().
    • Il metodo deve accettare un solo argomento chiamato time_seconds.
    • Deve chiamare il metodo cook() di MicrowaveOven, …
    • poi mostrare una fetta di pizza usando message(ascii_pizza_slice) (docs).
  • Istanzia un oggetto forno a microonde di fascia alta e assegnalo a a_high_end_microwave.
  • Chiama il metodo cook() di a_high_end_microwave per 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
___
Modifica ed esegui il codice