Crie uma classe que represente o objeto Piscina, do mundo real. Um de seus atributos é o volume de água, dado em metros cúbicos. Faça a sobrecarga do operador
Passo 1
Beleza, vamos lá! O enunciado pede para a gente criar uma classe chamada Piscina, que representa uma piscina do mundo real. Um dos atributos dessa classe é o volume de água, medido em metros cúbicos. Além disso, precisamos sobrecarga do operador, o que significa que vamos personalizar como certos operadores funcionam com objetos da classe Piscina. Para resolver isso, vamos precisar entender um pouco de Programação Orientada a Objetos (POO) e sobrecarga de operadores em Python.
Passo 2
Primeiramente, vamos criar a classe Piscina. Em Python, usamos a palavra-chave
class
para isso. Dentro da classe, vamos definir o atributo volume
, que vai armazenar o volume de água da piscina.class Piscina:
def __init__(self, volume):
self.volume = volume
Aqui, o método
__init__
é o construtor da classe, responsável por inicializar o objeto com o volume fornecido.Passo 3
Agora, vamos falar sobre sobrecarga de operadores. Isso permite que a gente defina como os operadores padrão (como
+
, -
, *
, etc.) se comportam com objetos da nossa classe. No nosso caso, vamos sobrecarregar o operador +
para somar o volume de duas piscinas.Para isso, precisamos definir o método especial
__add__
dentro da classe Piscina. def __add__(self, outra_piscina):
novo_volume = self.volume + outra_piscina.volume
return Piscina(novo_volume)
Explicando:
self
refere-se ao objeto atual.outra_piscina
é outro objeto da classe Piscina que estamos adicionando.novo_volume
calcula a soma dos volumes das duas piscinas.- Retornamos uma nova instância de Piscina com o
novo_volume
.
Passo 4
Vamos juntar tudo e ver como fica a classe completa com a sobrecarga do operador
+
.class Piscina:
def __init__(self, volume):
self.volume = volume
def __add__(self, outra_piscina):
novo_volume = self.volume + outra_piscina.volume
return Piscina(novo_volume)
def __str__(self):
return f'Piscina com volume de {self.volume} metros cúbicos.'
Adicionei o método
__str__
para facilitar a visualização do volume quando imprimimos o objeto.Passo 5
Vamos testar nossa classe para ver se a sobrecarga do operador está funcionando direitinho.
# Criando duas piscinas
piscina1 = Piscina(10)
piscina2 = Piscina(15)
# Somando as piscinas
piscina_total = piscina1 + piscina2
# Exibindo o resultado
print(piscina_total)
Ao rodar esse código, esperamos ver:
Piscina com volume de 25 metros cúbicos.
Isso significa que a soma dos volumes das duas piscinas foi feita corretamente usando o operador
+
.Resposta
class Piscina:
def __init__(self, volume):
self.volume = volume
def __add__(self, outra_piscina):
novo_volume = self.volume + outra_piscina.volume
return Piscina(novo_volume)
def __str__(self):
return f'Piscina com volume de {self.volume} metros cúbicos.'