1. 学ぶ
  2. /
  3. コース
  4. /
  5. R における S3 と R6 を使ったオブジェクト指向プログラミング

Connected

演習

調理機能のさらに上書き

中間クラスが super_ アクティブバインディングで親の機能を公開していれば、R6 クラスの複数世代にわたってメソッドへアクセスできます。構文は次のとおりです。

parent_method <- super$method()
grand_parent_method <- super$super_$method()
great_grand_parent_method <- super$super_$super_$method()

指示

100 XP

電子レンジクラスと高機能電子レンジクラスは、ワークスペースにあらかじめ用意されています。文字列 ascii_pizza_slice も定義済みです。

  • 他の電子レンジのファクトリを、名前を出力して確認しましょう。
  • R6Class()(docs)を使って HighEndMicrowaveOven クラスジェネレータを定義し、high_end_microwave_oven_factory に代入します。
    • FancyMicrowaveOven を継承させます。
    • public リスト要素を持たせます。
  • public の cook() メソッドをオーバーライドします。
    • メソッドは time_seconds という単一の引数を取ります。
    • MicrowaveOven の cook() メソッドを呼び出し、…
    • その後、message(ascii_pizza_slice)(docs)でピザのスライスを表示します。
  • ハイエンド電子レンジのオブジェクトをインスタンス化し、a_high_end_microwave に代入します。
  • a_high_end_microwave の cook() メソッドを呼び出し、1 秒間調理します。