Coding for KidsCoding for Kids
Níveis CriativosDesafiosGuia do Professor
Votar em funcionalidades
Curso Avançado de Desenvolvimento Python
Capítulo
>
Nível

Classes Avançadas
Polimorfismo de Classe

Objetivo

Termine de preparar algumas misturas de vinho para que possam estar prontas para processamento utilizando polimorfismo de classe.

Existem certos tipos de vinho especial que precisam de mais preparação do que outros e exigem adições extras antes de serem misturados e envelhecidos até se tornarem um vinho adequado. Para conseguir isso, devemos usar o polimorfismo de classe, que é uma maneira de otimizar o uso dos objetos criados a partir de classes. Isso é feito fazendo com que as funções internas da classe compartilhem propriedades, permitindo que todas sejam chamadas da mesma maneira, mesmo sendo de classes diferentes.

No editor de código você terá configurado quatro (4) classes que incluem quatro diferentes tipos de vinho: grape, cherry, strawberry e mango. Cada classe terá duas funções denominadas add() e take_action(), e, apesar de essas funções terem a mesma estrutura, o conteúdo delas pode ser diferente. Cada uma das classes precisa ter sua função take_action() preenchida com um material a ser colocado.

Para começar, caminhe até o X iluminado e encare a mesa para ler a nota utilizando a função read(). Anote as informações escritas, pois elas dirão o que precisa ser adicionado à função take_action() de cada classe. Por exemplo, na classe grape é necessário adicionar "white oak" utilizando a função place(), conforme ilustrado abaixo:

# 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")

Uma vez que todos os materiais que precisam ser adicionados às funções das classes estejam incluídos, caminhe até o X dourado e pegue os ingredientes que precisam ser colocados nas misturas de vinho. Use a função collect() para pegar a constante de lista chamada ingredients e verifique seu conteúdo utilizando a função speak().

Caminhe até o final do mapa e colete as quatro (4) sacolas de frutas e berries, para que você tenha os componentes necessários para terminar a mistura de vinho.

Agora que tudo foi coletado, é hora de adicionar todos os materiais para finalizar as misturas de vinho. Crie objetos das classes e preencha seus argumentos; devem existir quatro (4) objetos: grape_mix, cherry_mix, strawberry_mix e mango_mix.

Em cada objeto, defina a classe que corresponde ao nome e adicione o item que precisa ser misturado de acordo com a lista que você coletou. Para grape é adicionado "nothing", para cherry adicione "pure water", para strawberry adicione "sugar" e para mango adicione "spice". Por exemplo, um objeto definido deve ficar assim: grape_mix = grape("nothing")

Uma vez que os objetos tenham sido criados, é hora de colocar o polimorfismo de classe em prática. Caminhe até o X escuro sob o tapete vermelho, encare o barril e use o loop configurado no editor de código. O loop permitirá que você navegue por cada barril de vinho na fileira inferior e adicione os elementos necessários para completar suas misturas.

O tapete red precisa do strawberry_mix, o tapete purple precisa do cherry_mix, o tapete green precisa do grape_mix e o tapete orange precisa do mango_mix. Adicione os elementos ao loop na ordem apresentada no mapa, da esquerda para a direita. Por exemplo:

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

Como no exemplo, as misturas correspondem à disposição dos tapetes de esquerda para direita, ou seja: red, orange, purple correspondem a strawberry_mix, mango_mix, cherry_mix. Uma vez que a sequência esteja completa, caminhe até o X escuro sobre o tapete verde, encare o barril e faça o mesmo com o segundo loop configurado no editor de código. Desta vez, o loop deve ser de direita para esquerda com as cores dos tapetes (green, purple, orange), conforme ilustrado no mapa, para completar o nível.

Livro de Código