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.'

Exercícios relacionados