Pişirme Yeteneklerini Bir Kez Daha Ezmek (Over-Overriding)
Ara sınıflar, ebeveyn işlevselliğini super_ etkin bağlamalarıyla açığa çıkardığında, birden çok nesil R6 sınıfı boyunca yöntemlere erişebilirsin. Sözdizimi şöyle:
parent_method <- super$method()
grand_parent_method <- super$super_$method()
great_grand_parent_method <- super$super_$super_$method()
Bu egzersiz, kursun bir parçasıdır
R'de S3 ve R6 ile Nesne Yönelimli Programlama
Egzersiz talimatları
Mikrodalga fırın ve şatafatlı mikrodalga fırın sınıfları çalışma alanında senin için önceden tanımlandı. Ayrıca bir karakter dizisi ascii_pizza_slice da hazır.
- Diğer mikrodalga fırın fabrikalarını adlarını yazdırarak keşfet.
R6Class()(docs) kullanarak birHighEndMicrowaveOvensınıf üreticisi tanımla vehigh_end_microwave_oven_factorydeğişkenine ata.FancyMicrowaveOven’dan kalıtım almalı.- Bir
publicliste elemanı olmalı.
- Genel
cook()metodunu geçersiz kıl.- Metot,
time_secondsadında tek bir argüman almalı. - Önce
MicrowaveOven’ıncook()metodunu çağırmalı, … - sonra
message(ascii_pizza_slice)(docs) kullanarak bir pizza dilimi göstermeli.
- Metot,
- Üst düzey bir mikrodalga fırın nesnesi oluştur ve
a_high_end_microwavedeğişkenine ata. a_high_end_microwavenesnesinincook()metodunu bir saniye pişirmek için çağır.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# 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
___