ÎncepețiÎncepe gratuit

Suprascrierea suprascrierii capabilităților de gătit

Odată ce clasele intermediare și-au expus funcționalitatea clasei părinte prin binding-uri active super_, poți accesa metode din mai multe generații de clase R6. Sintaxa este

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

Acest exercițiu face parte din cursul

Programare orientată pe obiecte cu S3 și R6 în R

Vezi cursul

Instrucțiuni pentru exercițiu

Clasele pentru cuptorul cu microunde și cuptorul cu microunde fancy au fost predefinite în spațiul tău de lucru. Un șir de caractere ascii_pizza_slice a fost, de asemenea, predefinit.

  • Explorează celelalte fabrici de cuptoare cu microunde afișându-le numele.
  • Definește un generator de clasă HighEndMicrowaveOven folosind R6Class() (docs) și atribuie-l variabilei high_end_microwave_oven_factory.
    • Ar trebui să moștenească din FancyMicrowaveOven.
    • Ar trebui să aibă un element de listă public.
  • Suprascrie metoda publică cook().
    • Metoda ar trebui să primească un singur argument numit time_seconds.
    • Ar trebui să apeleze metoda cook() a clasei MicrowaveOven, …
    • apoi să afișeze o felie de pizza folosind message(ascii_pizza_slice) (docs).
  • Instanțiază un obiect de tip cuptor cu microunde high-end și atribuie-l variabilei a_high_end_microwave.
  • Apelează metoda cook() a obiectului a_high_end_microwave pentru a găti timp de o secundă.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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
___
Editează și rulează codul