Kom igångKom igång gratis

Att Åsidosätta Matlagningsfunktionen Ytterligare en Gång

När mellanliggande klasser har exponerat sin förälders funktionalitet via aktiva bindningar med super_, kan du komma åt metoder över flera generationer av R6-klasser. Syntaxen är

parent_method <- super$method()
grand_parent_method <- super$super_$method()
great_grand_parent_method <- super$super_$super_$method()

Den här övningen är en del av kursen

Objektorienterad programmering med S3 och R6 i R

Visa kurs

Övningsinstruktioner

Klasserna för mikrovågsugn och avancerad mikrovågsugn är fördefinierade i din arbetsmiljö. En sträng ascii_pizza_slice är också fördefinierad.

  • Utforska de övriga mikrovågsugnsfabrikerna genom att skriva ut deras namn.
  • Definiera en klassgenerator HighEndMicrowaveOven med R6Class() (docs) och tilldela den till high_end_microwave_oven_factory.
    • Den ska ärva från FancyMicrowaveOven.
    • Den ska ha ett listelement public.
  • Åsidosätt den publika metoden cook().
    • Metoden ska ta ett enda argument med namnet time_seconds.
    • Den ska anropa MicrowaveOvens cook()-metod, …
    • och sedan visa en pizzabit med message(ascii_pizza_slice) (docs).
  • Instantiera ett objekt av typen high-end-mikrovågsugn och tilldela det till a_high_end_microwave.
  • Anropa cook()-metoden på a_high_end_microwave för att tillaga i en sekund.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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
___
Redigera och kör kod