Re-Reescrevendo as Capacidades de Cozimento
Depois que classes intermediárias expõem a funcionalidade do pai com active bindings super_, você pode acessar métodos ao longo de várias gerações de classes R6. A sintaxe é
parent_method <- super$method()
grand_parent_method <- super$super_$method()
great_grand_parent_method <- super$super_$super_$method()
Este exercicio faz parte do curso
Programação Orientada a Objetos com S3 e R6 em R
Instruções do exercicio
As classes de forno de micro-ondas e de forno de micro-ondas sofisticado já foram definidas para você no seu workspace. Uma string ascii_pizza_slice também foi predefinida.
- Explore as outras fábricas de fornos de micro-ondas imprimindo seus nomes.
- Defina um gerador de classe
HighEndMicrowaveOvenusandoR6Class()(docs) e atribua-o ahigh_end_microwave_oven_factory.- Ele deve herdar de
FancyMicrowaveOven. - Ele deve ter um elemento de lista
public.
- Ele deve herdar de
- Sobrescreva o método público
cook().- O método deve receber um único argumento chamado
time_seconds. - Ele deve chamar o método
cook()deMicrowaveOven, … - e então exibir uma fatia de pizza usando
message(ascii_pizza_slice)(docs).
- O método deve receber um único argumento chamado
- Instancie um objeto de forno de micro-ondas high-end e atribua-o a
a_high_end_microwave. - Chame o método
cook()dea_high_end_microwavepara cozinhar por um segundo.
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
# 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
___