Coletânea Python do ZERO às Redes Neurais Artificiais
Polimorfismo
Avançando mais um pouco com nossos estudos, hora de abordar um
princípio da programação orientada a objetos chamada polimorfismo.
Como o próprio nome já sugere, polimorfismo significa que algo possui muitas formas (ou ao menos mais que duas) em sua estrutura. Raciocine que é perfeitamente possível termos classes derivadas de uma determinada classe mãe / super classe que possuem métodos iguais, porém comportamentos diferentes dependendo sua aplicação no código.
Alguns autores costumam chamar esta característica de classe de “assinatura”, quando se refere a mesma quantidade e tipos de parâmetros, porém com fins diferentes.
Último ponto a destacar antes de partirmos para o código é que, polimorfismo normalmente está fortemente ligado a classes abstratas, sendo assim, é de suma importância que a lógica deste tópico visto no capítulo anterior esteja bem clara e entendida, caso contrário poderá haver confusão na hora de identificar tais estruturas de código para criar suas devidas associações.
Entenda que uma classe abstrata, em polimorfismo, obrigatoriamente será um molde para criação das demais classes onde será obrigatório realizar a sobreposição do(s) método(s) de classe que a classe mãe possuir.
Seguindo com um exemplo muito próximo ao anterior, apenas para melhor identificação, note que inicialmente são feitas as importações dos módulos ABC e abstractclassmethod da biblioteca abc.
Em seguida é criada uma classe de nome Pessoa que herda ABC, dentro de si existe um decorador e um método de classe que a caracteriza como uma classe abstrata.
Em outras palavras, toda classe que herdar a estrutura de Pessoa terá de redefinir o método logar, fornecendo uma chavedeseguranca que aqui não está associada a nada, mas na prática seria parte de um sistema de login.
Na sequência é criada a classe Usuário que herda Pessoa, e pela sua estrutura, repare que ela é polimórfica, possuindo a mesma assinatura de objetos instanciados ao método logar, porém há uma função personalizada que está programada para exibir uma mensagem.
O mesmo é feito com uma terceira classe chamada Bot que herda Pessoa, que por sua vez herda ABC, tudo sob a mesma “assinatura”.
Instanciando Usuario a um objeto qualquer e aplicando sobre si parâmetros (neste caso, fornecendo uma senha para chaveseguranca), ocorrerá a execução da respectiva função.
Neste caso o retorno será: Usuario logado no sistema