Bắt đầu ngayBắt đầu miễn phí

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

Xem khóa học

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 HighEndMicrowaveOven bằng R6Class() (docs), và gán nó cho high_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.
  • Ghi đè phương thức cook() trong public.
    • 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ủa MicrowaveOven, …
    • rồi hiển thị một lát pizza bằng message(ascii_pizza_slice) (docs).
  • 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ủa a_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
___
Chỉnh sửa và Chạy Mã