Понадперевизначення можливостей приготування
Коли проміжні класи відкривають функціональність батьків за допомогою активних привʼязок super_, ви можете звертатися до методів через кілька «поколінь» класів R6. Синтаксис такий
parent_method <- super$method()
grand_parent_method <- super$super_$method()
great_grand_parent_method <- super$super_$super_$method()
Ця вправа є частиною курсу
Об'єктно-орієнтоване програмування з S3 та R6 в R
Інструкції до вправи
Класи мікрохвильової печі та «просунутої» мікрохвильової печі вже підготовлено у вашому робочому середовищі. Рядок ascii_pizza_slice також попередньо визначено.
- Ознайомтеся з іншими «фабриками» мікрохвильових печей, вивівши їхні назви.
- Визначте генератор класу
HighEndMicrowaveOvenза допомогоюR6Class()(docs) і присвойте його зміннійhigh_end_microwave_oven_factory.- Він має успадковуватися від
FancyMicrowaveOven. - Він має містити елемент списку
public.
- Він має успадковуватися від
- Перевизначте публічний метод
cook().- Метод має приймати єдиний аргумент з назвою
time_seconds. - Він має викликати метод
cook()класуMicrowaveOven, … - а потім показати скибку піци, використавши
message(ascii_pizza_slice)(docs).
- Метод має приймати єдиний аргумент з назвою
- Створіть екземпляр обʼєкта «високорівневої» мікрохвильової печі та присвойте його змінній
a_high_end_microwave. - Викличте метод
cook()уa_high_end_microwave, щоб готувати одну секунду.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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
___