Coding for KidsCoding for Kids
クリエイティブレベル挑戦教師ガイド
機能に投票
上級Python開発コース
チャプター
>
レベル

上級クラス
クラスの多態性

目的

クラスのポリモーフィズムを使って、ワインの混合物を加工可能な状態に仕上げる。

特定の種類の特製ワインは、他と比べてより入念な準備が必要であり、適切なワインに仕上げるために追加の材料を加える必要があります。これを実現するためには、クラスのポリモーフィズム を使用します。これは、クラスを使って作成されたオブジェクトの使用を最適化する方法です。同じ呼び出し方法で、異なるクラスから来た内部クラスの関数がプロパティを共有するようにすることで実現されます。

コードエディタには、4つの異なる種類のワインを含む4つの (4) クラスが用意されています:grapecherrystrawberry 、および mango 。各クラスは add()take_action() という2つの関数を持っており、これらの関数は構造は同じでも、内容は異なる可能性があります。各クラスの take_action() 関数には、配置すべき材料が記入される必要があります。

まず、光る X マークのところへ歩いて行き、机の前に立って read() 関数を使いながらメモを読みます。メモに記載されている情報を確認し、各クラスの take_action() 関数に何を追加すべきかを把握してください。例えば、grape クラスの場合は、以下のように place() 関数を使って "white oak" を追加する必要があります:

# Class for making grape wine class grape: def __init__(self,item): self.name = "grape" self.item = item # Adds materials def add(self): player.speak("%s are added to the %s mixture." % (self.item, self.name)) # Take actions def take_action(self): player.place(self.name) # New code added player.place("white oak")

すべての必要な材料がクラス関数に追加されたら、金色の X マークの所へ歩いて行き、ワインの混合物に配置すべき材料となる原料を手に入れてください。collect() 関数を使い、定数リスト ingredients を収集し、 speak() 関数を使って内容を確認します。

地図の下部に歩いて行き、4つ (4) の果実とベリーの袋を集め、ワイン混合物を完成させるために必要な部品を手に入れてください。

すべての材料が収集できたら、次はワイン混合物を完成させるために全ての材料を追加する番です。各クラスのオブジェクトを作成し、その引数に該当する項目を設定します。作成するオブジェクトは4つ (4) あり、grape_mixcherry_mixstrawberry_mixmango_mix となるはずです。

それぞれのオブジェクトでは、名前に対応するクラスを設定し、収集したリストに従って混合すべき項目を追加してください。grape には "nothing"cherry には "pure water"strawberry には "sugar"mango には "spice" を追加します。例えば、定義されたオブジェクトは次のようになります: grape_mix = grape("nothing")

オブジェクトが作成できたら、ここで クラスのポリモーフィズム を活用します。赤いカーペットの下にある暗い X マークまで歩いて行き、樽の前に立って、コードエディタで設定されているループを使用してください。ループにより、下段に配置された各ワイン樽に移動して、混合物を完成させるために必要な材料を追加できるようになります。

red カーペットには strawberry_mixpurple カーペットには cherry_mixgreen カーペットには grape_mixorange カーペットには mango_mix を配置します。マップに示されている左から右の順番に、ループ内に要素を追加してください。例えば:

for mix in (strawberry_mix, mango_mix, cherry_mix): mix.add() mix.take_action() player.turn_right() player.move_forward(2) player.turn_left()

上記の例では、混合物はカーペットが左から右に配置されている順番、すなわち redorangepurple に対応しており、それぞれ strawberry_mixmango_mixcherry_mix となっています。シーケンスが完了したら、緑のカーペット上の暗い X マークのところへ歩いて行き、樽の前で同じようにコードエディタに設定されている2つ目のループを実行してください。今回は、マップに示されている順番に従い、カーペットの色( greenpurpleorange )の順に右から左へ実行します。これにより、レベルが完成します。

コードブック