Aan de slagGa gratis aan de slag

De kookmogelijkheden nóg verder overschrijven

Zodra tussenklassen de functionaliteit van hun ouder hebben blootgelegd met super_ active bindings, kun je methoden over meerdere generaties R6-klassen heen benaderen. De syntaxis is

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

Deze oefening maakt deel uit van de cursus

Objectgeoriënteerd programmeren met S3 en R6 in R

Cursus bekijken

Oefeninstructies

Klassen voor magnetron en luxe magnetron zijn alvast voor je gedefinieerd in je werkruimte. Een string ascii_pizza_slice is ook al gedefinieerd.

  • Verken de andere magnetron-fabrieken door hun namen te printen.
  • Definieer een klassegenerator HighEndMicrowaveOven met R6Class() (docs), en ken deze toe aan high_end_microwave_oven_factory.
    • Deze moet erven van FancyMicrowaveOven.
    • Deze moet een public-listelement hebben.
  • Overschrijf de publieke methode cook().
    • De methode moet één argument hebben met de naam time_seconds.
    • Hij moet de cook()-methode van MicrowaveOven aanroepen, …
    • en daarna een pizzapunt tonen met message(ascii_pizza_slice) (docs).
  • Instantineer een high-end magnetronobject en ken het toe aan a_high_end_microwave.
  • Roep de cook()-methode van a_high_end_microwave aan om één seconde te koken.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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
___
Code bewerken en uitvoeren