MulaiMulai sekarang secara gratis

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

Lihat Kursus

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 HighEndMicrowaveOven menggunakan R6Class() (docs), dan tetapkan ke high_end_microwave_oven_factory.
    • Kelas ini harus mewarisi dari FancyMicrowaveOven.
    • Kelas ini harus memiliki elemen daftar public.
  • Override metode cook() di public.
    • Metode ini harus menerima satu argumen bernama time_seconds.
    • Metode ini harus memanggil metode cook() milik MicrowaveOven, …
    • lalu menampilkan sepotong pizza menggunakan message(ascii_pizza_slice) (docs).
  • Instansiasikan sebuah objek high-end microwave oven dan tetapkan ke a_high_end_microwave.
  • Panggil metode cook() milik a_high_end_microwave untuk 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
___
Edit dan Jalankan Kode