始める無料で始める

調理機能を拡張する

子クラスは、親クラスにない名前の公開メソッドをさらに追加することで、親クラスの機能を拡張できます。

公開メソッドは、メソッド名に self$ を付けることで、他の公開メソッドを呼び出せます。

この演習はコースの一部です

R における S3 と R6 を使ったオブジェクト指向プログラミング

コースを見る

演習の手順

ワークスペースには電子レンジがあらかじめ用意されています。

  • ファンシー電子レンジクラスの定義を拡張し、public 要素を追加してください。
  • 公開メソッド cook_baked_potato() を追加してください。
    • 引数は取りません。
    • 本体では、自身の cook() メソッドを3秒で呼び出します。
  • FancyMicrowaveOven オブジェクトを作成し、a_fancy_microwave に代入します。
  • a_fancy_microwavecook_baked_potato() メソッドを呼び出してください。

注意: 焼きじゃがいもを3秒だけ調理しても食べないでください。とても不味く、食中毒になるおそれがあります。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Explore microwave oven class
microwave_oven_factory

# Extend the class definition
fancy_microwave_oven_factory <- R6Class(
  "FancyMicrowaveOven",
  inherit = microwave_oven_factory,
  # Add a public list with a cook baked potato method
  ___ = ___(
    ___ = ___
    
    
  )
)

# Instantiate a fancy microwave
a_fancy_microwave <- ___

# Call the cook_baked_potato() method
___
コードを編集して実行