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
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ă
HighEndMicrowaveOvenfolosindR6Class()(docs) și atribuie-l variabileihigh_end_microwave_oven_factory.- Ar trebui să moștenească din
FancyMicrowaveOven. - Ar trebui să aibă un element de listă
public.
- Ar trebui să moștenească din
- Suprascrie metoda publică
cook().- Metoda ar trebui să primească un singur argument numit
time_seconds. - Ar trebui să apeleze metoda
cook()a claseiMicrowaveOven, … - apoi să afișeze o felie de pizza folosind
message(ascii_pizza_slice)(docs).
- Metoda ar trebui să primească un singur argument numit
- Instanțiază un obiect de tip cuptor cu microunde high-end și atribuie-l variabilei
a_high_end_microwave. - Apelează metoda
cook()a obiectuluia_high_end_microwavepentru 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
___