CommencerCommencer gratuitement

Super-surclasser les capacités de cuisson

Une fois que les classes intermédiaires ont exposé les fonctionnalités de leur parent avec des active bindings super_, vous pouvez accéder aux méthodes sur plusieurs générations de classes R6. La syntaxe est

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

Cet exercice fait partie du cours

Programmation orientée objet avec S3 et R6 en R

Afficher le cours

Instructions

Des classes de four à micro-ondes et de four à micro-ondes « fancy » ont été pré-définies pour vous dans votre espace de travail. Une chaîne ascii_pizza_slice a aussi été pré-définie.

  • Explorez les autres fabriques de fours à micro-ondes en affichant leurs noms.
  • Définissez un générateur de classe HighEndMicrowaveOven avec R6Class() (docs) et assignez-le à high_end_microwave_oven_factory.
    • Il doit hériter de FancyMicrowaveOven.
    • Il doit avoir un élément de liste public.
  • Redéfinissez la méthode publique cook().
    • La méthode doit prendre un seul argument nommé time_seconds.
    • Elle doit appeler la méthode cook() de MicrowaveOven, …
    • puis afficher une part de pizza avec message(ascii_pizza_slice) (docs).
  • Instanciez un objet four à micro-ondes haut de gamme et assignez-le à a_high_end_microwave.
  • Appelez la méthode cook() de a_high_end_microwave pour cuire pendant une seconde.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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
___
Modifier et exécuter le code