Ghi đè nhiều lớp với khả năng nấu nướng
Khi các lớp trung gian đã lộ ra chức năng của lớp cha bằng các active binding super_, bạn có thể truy cập các phương thức xuyên qua nhiều thế hệ lớp R6. Cú pháp là
parent_method <- super$method()
grand_parent_method <- super$super_$method()
great_grand_parent_method <- super$super_$super_$method()
Bài tập này là một phần của khóa học
Lập trình hướng đối tượng với S3 và R6 trong R
Hướng dẫn bài tập
Các lớp lò vi sóng và lò vi sóng cao cấp đã được định nghĩa sẵn trong không gian làm việc của bạn. Chuỗi ascii_pizza_slice cũng đã được định nghĩa sẵn.
- Khám phá các factory lò vi sóng khác bằng cách in tên của chúng.
- Định nghĩa bộ tạo lớp
HighEndMicrowaveOvenbằngR6Class()(docs), và gán nó chohigh_end_microwave_oven_factory.- Lớp này nên kế thừa từ
FancyMicrowaveOven. - Lớp này nên có một phần tử danh sách
public.
- Lớp này nên kế thừa từ
- Ghi đè phương thức
cook()trongpublic.- Phương thức nhận một đối số duy nhất tên là
time_seconds. - Phương thức nên gọi
cook()củaMicrowaveOven, … - rồi hiển thị một lát pizza bằng
message(ascii_pizza_slice)(docs).
- Phương thức nhận một đối số duy nhất tên là
- Khởi tạo một đối tượng lò vi sóng cao cấp và gán cho
a_high_end_microwave. - Gọi phương thức
cook()củaa_high_end_microwaveđể nấu trong một giây.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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
___