調理機能を拡張する
子クラスは、親クラスにない名前の公開メソッドをさらに追加することで、親クラスの機能を拡張できます。
公開メソッドは、メソッド名に self$ を付けることで、他の公開メソッドを呼び出せます。
この演習はコースの一部です
R における S3 と R6 を使ったオブジェクト指向プログラミング
演習の手順
ワークスペースには電子レンジがあらかじめ用意されています。
- ファンシー電子レンジクラスの定義を拡張し、
public要素を追加してください。 - 公開メソッド
cook_baked_potato()を追加してください。- 引数は取りません。
- 本体では、自身の
cook()メソッドを3秒で呼び出します。
FancyMicrowaveOvenオブジェクトを作成し、a_fancy_microwaveに代入します。a_fancy_microwaveのcook_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
___