Die Kochfähigkeiten noch einmal überschreiben
Sobald Zwischenklassen die Funktionalität ihrer Eltern mit aktiven Bindings über super_ verfügbar machen, kannst du auf Methoden über mehrere Generationen von R6-Klassen hinweg zugreifen. Die Syntax ist
parent_method <- super$method()
grand_parent_method <- super$super_$method()
great_grand_parent_method <- super$super_$super_$method()
Diese Übung ist Teil des Kurses
Objektorientierte Programmierung mit S3 und R6 in R
Anleitung zur Übung
Klassen für Mikrowellenofen und fancy Mikrowellenofen wurden in deinem Workspace bereits vordefiniert. Ein String ascii_pizza_slice ist ebenfalls vordefiniert.
- Erkunde die anderen Mikrowellenofen-Factories, indem du ihre Namen ausgibst.
- Definiere einen Klassengenerator
HighEndMicrowaveOvenmitR6Class()(docs) und weise ihnhigh_end_microwave_oven_factoryzu.- Er soll von
FancyMicrowaveOvenerben. - Er soll ein
public-Listenelement haben.
- Er soll von
- Überschreibe die öffentliche Methode
cook().- Die Methode soll ein einzelnes Argument namens
time_secondshaben. - Sie soll die
cook()-Methode derMicrowaveOvenaufrufen, … - und anschließend ein Pizzastück mit
message(ascii_pizza_slice)anzeigen (docs).
- Die Methode soll ein einzelnes Argument namens
- Erzeuge ein High-End-Mikrowellenofen-Objekt und weise es
a_high_end_microwavezu. - Rufe die Methode
cook()vona_high_end_microwaveauf, um eine Sekunde zu kochen.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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
___