O que é polimorfismo em POO? Dê um exemplo em Python onde duas classes diferentes (Circulo e Quadrado) implementam um método calcular_area() de formas distintas.
Passo 1
O enunciado pede para explicar o que é polimorfismo em programação orientada a objetos (POO) e mostrar um exemplo em Python onde duas classes diferentes (
Circulo
e Quadrado
) implementam cada uma um método calcular_area()
de modo distinto.Passo 2
Polimorfismo é a capacidade de usar a mesma interface (mesmo nome de método) para que objetos de tipos diferentes executem comportamentos distintos. Em POO, isso costuma ser feito por meio de method overriding: cada classe define seu próprio
calcular_area()
, mas o código que chama esse método não precisa saber qual é a classe do objeto.Passo 3
Para calcular áreas, usamos as fórmulas matemáticas:
Agora, vamos implementar isso em Python:
import math
class Circulo:
def __init__(self, raio):
self.raio = raio
def \(calcular_area\)(self):
# retorna a área usando π\(r^{2}\)
return math.pi * self.raio**2
class Quadrado:
def __init__(self, lado):
self.lado = lado
def \(calcular_area\)(self):
# retorna a área usando \(L^{2}\)
return self.lado**2
# Função que recebe qualquer objeto com método \(calcular_area\)()
def \(imprime_area\)(figura):
area = figura.\(calcular_area\)()
print(f"Área de {figura.__class__.__name__}: {area:.2f}")
# Exemplo de uso
c = Circulo(3)
q = Quadrado(5)
\(imprime_area\)\text{(c)} # chama Circulo.\(calcular_area\)()
\(imprime_area\)(q) # chama Quadrado.\(calcular_area\)()
Resposta
Polimorfismo é o princípio de permitir que diferentes classes ofereçam implementações próprias de um mesmo método, mantendo a mesma assinatura. No exemplo acima, tanto
Circulo
quanto Quadrado
têm o método calcular_area()
, mas cada um calcula a área conforme sua fórmula, e uma função genérica (imprime_area
) pode chamar calcular_area()
em qualquer uma das duas sem precisar saber de qual classe se trata.