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:
\text{área do círculo} = \pi r^2áí
\text{área do quadrado} = L^2á
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.

Exercícios relacionados