Um último pilar do OLP a seguir, falamos sobre encapsulamento, sobre abstração e sobre herança,
e então há este quarto que tem uma palavra bem difícil, polimorfismo.
O que isso significa?
Bem, Polly significa muitos e mais.
Fiza significa para muitas formas.
Agora, sabemos que métodos pertencem a objetos, certo?
Usamos a palavra-chave self para agir sobre o objeto que foi instanciado.
Agora, em Python, essa ideia de polimorfismo se refere à maneira como as classes de objetos podem compartilhar o mesmo
nome de método.
Mas esses nomes de metha podem agir de maneira diferente com base em como o objeto os chama.
Agora, isso parece extremamente confuso, então vamos dar uma olhada em um código.
Temos nosso assistente de usuário e Archer Classis.
E como mencionei, com o polimorfismo, diferentes classes de objetos podem compartilhar nomes de métodos,
então temos um ataque aqui que é compartilhado, mas cada um faz algo diferente com base no atributo.
Por exemplo, quando faço um ataque de wizzard.
Então vamos fazer isso.
Ataque de um ponto de Wizzard.
Se eu clicar em correr, vou atacar com poder de 60 porque, bem, Wizzard tem um significado especial para seu
ataque contra Archer.
Eles são diferentes.
Portanto, embora eles compartilhem os mesmos nomes de método por causa do objeto que os está chamando, a
saída será diferente.
Portanto, podemos realmente fazer algo bastante interessante aqui, digamos que eu
tenha um Wizzard e então também teremos Archer um e Archer um será Robin.
E Robin tem 30 horas agora.
O que posso fazer aqui é na verdade chamá-los de maneiras diferentes, por exemplo, posso
criar uma nova função inteira chamada de ataque de jogador neste ataque de jogador leva um personagem.
E aqui podemos dizer ataque de ponto de personagem.
E agora, se eu executar esse código e disser.
Ataque do jogador.
Mago um.
E eu gerencio isso.
Vou atacar com a potência de um se fizer o ataque de um jogador, coloque o Archer aqui, se clicar em correr.
Você vê que a mesma função me dá uma saída diferente, embora
estejamos chamando a mesma coisa por causa do objeto que passamos para o polimorfismo, outra maneira de
demonstrar isso é se fizermos um loop for, se eu fizer para, digamos, personagem em e vamos adicionar Wizzard um e Archer um em uma lista.
E se eu imprimir aqui ou apenas executar ataque de ponto de personagem.
Se eu clicar em correr aqui.
Mais uma vez, tenho duas saídas diferentes, embora esteja chamando o mesmo método por causa
dos objetos diferentes e este é um conceito muito poderoso, certo, porque podemos personalizar isso de acordo
com nossas necessidades específicas, mesmo que, digamos que o usuário teve um ataque.
Método e este método de ataque padrão é, digamos que print não faça nada porque é apenas um usuário.
Mesmo se eu executá-los, digamos o assistente de impressão um.
E digamos ataque de ponto, se eu clicar, corra.
Ele substituirá qualquer que seja o ataque original, porque já temos esse método em nossa classe de
mago.
Mas digamos que eu queira que Yuzu e Wizzard executem o método de ataque, como posso fazer isso?
Agora, isso é algo que exploraremos um pouco mais no próximo vídeo, mas por agora posso dizer ataque
de ponto do usuário.
E dê-se a si mesmo.
Porque eu aceito o usuário como meu parâmetro aqui.
E então eu Camron, ataque ponto do usuário.
Então, vamos ver o que acontece aqui se eu clicar em executar.
Não tenho feito nada e estou atacando com potência de 60.
Portanto, o polimorfismo nos permite ter muitas formas, é a capacidade de redefinir métodos para essas classes derivadas que
é Wizard e Archer.
E um objeto que é instanciado pode se comportar de diferentes formas de maneiras diferentes, com base no polimorfismo.
E isso é útil porque somos capazes de modificar nossas classes de acordo com nossas necessidades específicas.
Mas também não precisamos nos repetir caso queiramos usar algo como ataque de usuário dentro do
Wizard.
Então, você tem os quatro pilares do encapsulamento OPIS.
Abstração.
Herança e, finalmente, polimorfismo.
Porém, nenhuma quantidade de vídeos ou livros vai te ensinar exatamente quando usar o quê.
A ideia aqui é entender que esses poderes existem com OLP.
Você nunca vai dizer, oh, eu preciso implementar polimorfismo.
Não, na maioria das vezes você está apenas codificando e acontece que você está codificando de uma forma que
enfatiza o polimorfismo.
Esse é apenas o poder do OLP, embora essas sejam palavras complicadas, no final do dia,
aprendemos como usá-las para estruturar nosso código de uma maneira eficiente e limpa.
E esse é o ponto principal.
É tudo uma questão de organizar nosso código.
Agora, alguns de vocês podem ter ficado um pouco confusos quando fiz esse ataque de ponto do usuário no próximo vídeo, quero
explorar isso um pouco mais.
Eu te vejo nisso.