Meng-override Kembali Kemampuan Memasak
Setelah kelas perantara mengekspos fungsionalitas induknya dengan active binding super_, Anda dapat mengakses metode lintas beberapa generasi kelas R6. Sintaksnya adalah
parent_method <- super$method()
grand_parent_method <- super$super_$method()
great_grand_parent_method <- super$super_$super_$method()
Latihan ini adalah bagian dari kursus
Pemrograman Berorientasi Objek dengan S3 dan R6 di R
Petunjuk latihan
Kelas microwave oven dan fancy microwave oven telah didefinisikan untuk Anda di ruang kerja. String ascii_pizza_slice juga telah disiapkan.
- Jelajahi pabrik microwave oven lainnya dengan mencetak nama-namanya.
- Definisikan generator kelas
HighEndMicrowaveOvenmenggunakanR6Class()(docs), dan tetapkan kehigh_end_microwave_oven_factory.- Kelas ini harus mewarisi dari
FancyMicrowaveOven. - Kelas ini harus memiliki elemen daftar
public.
- Kelas ini harus mewarisi dari
- Override metode
cook()dipublic.- Metode ini harus menerima satu argumen bernama
time_seconds. - Metode ini harus memanggil metode
cook()milikMicrowaveOven, … - lalu menampilkan sepotong pizza menggunakan
message(ascii_pizza_slice)(docs).
- Metode ini harus menerima satu argumen bernama
- Instansiasikan sebuah objek high-end microwave oven dan tetapkan ke
a_high_end_microwave. - Panggil metode
cook()milika_high_end_microwaveuntuk memasak selama satu detik.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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
___