Luis Ramos
Luis Ramos02/10/2024 23:13
Compartilhe

1° Desafio de código: Explorando Técnicas de POO com Python 1/2

  • #Python

O Desafio

O objetivo é implementar um sistema para gerenciar dados de vendas e calcular o total dessas vendas. Posteriormente, esses dados poderão ser exportados para o Power BI, permitindo uma análise detalhada. Temos duas classes já estruturadas: Venda e Relatorio. A classe Venda contém informações de cada transação, como produto, quantidade e valor. Já a classe Relatorio será responsável por adicionar essas vendas e calcular o total.

Estrutura das Classes

Classe Venda

A classe Venda já está definida e contém as seguintes informações:

- Produto: o nome do produto vendido.

- Quantidade: a quantidade vendida do produto.

- Valor: o preço unitário do produto.

Classe Relatorio

A classe Relatorio ainda precisa de duas implementações:

1. adicionar_venda: Esse método verifica se o objeto passado é uma instância da classe `Venda` antes de adicioná-lo à lista de vendas. Caso contrário, exibe uma mensagem de erro.

2. calcular_total_vendas: Esse método percorre a lista de vendas e calcula o total multiplicando a quantidade pelo valor de cada venda.

Entrada e Saída de Dados

Entrada: A entrada de dados consiste em uma lista de vendas com as seguintes colunas:

- Produto (string)

- Quantidade (inteiro)

- Valor (decimal)

Saída: A saída será o valor total das vendas, calculado com base nas informações fornecidas.

Implementação do Código

Aqui está a implementação da classe Relatorio e a função principal main, que permite a adição das vendas e o cálculo do total:

class Venda:
  def __init__(self, produto, quantidade, valor):
    self.produto = produto
    self.quantidade = quantidade
    self.valor = valor

class Relatorio:
  def __init__(self):
    self.vendas = []

  def adicionar_venda(self, venda):
    if instancia(venda, Venda):
      self.vendas.append(venda)
    else:
      print("Erro: O objeto não é uma instância da classe Venda.")

  def calcular_total_vendas(self):
    total = 0
    for venda in self.vendas:
      total += venda.quantidade * venda.valor
    return total

def main():
  relatorio = Relatorio()
   
  for i in range(3):
    produto = input("Digite o nome do produto: ")
    quantidade = int(input("Digite a quantidade: "))
    valor = float(input("Digite o valor unitário: "))
    venda = Venda(produto, quantidade, valor)
    relatorio.adicionar_venda(venda)
   
  total_vendas = relatorio.calcular_total_vendas()
  print(f"Total de vendas: R$ {total_vendas:.2f}")

Explicação do Código

1. Método adicionar_venda

  - Verifica se o objeto recebido é uma instância da classe Venda usando instancia(venda, Venda).

  - Se for, adiciona a venda à lista de vendas (self.vendas).

  - Caso contrário, exibe uma mensagem de erro.

2. Método calcular_total_vendas:

  - Percorre todas as vendas na lista self.vendas.

  - Para cada venda, multiplica a quantidade pelo valor unitário e acumula o resultado na variável `total`.

  - Retorna o total calculado.

3. Função main:

  - Recebe as informações de três vendas do usuário (produto, quantidade e valor).

  - Adiciona essas vendas ao relatório através do método adicionar_venda.

  - Após isso, utiliza o método calcular_total_vendas para obter o total de vendas e o exibe formatado com duas casas decimais.

Conclusão

Este sistema simples permite a gestão eficiente de vendas, verificando a validade das entradas e calculando corretamente o total de vendas. A flexibilidade do código permite fácil adaptação para a exportação dos dados para o Power BI, facilitando a análise de dados e a visualização das vendas em relatórios dinâmicos. A implementação da POO neste caso é essencial para organizar e reutilizar o código de forma eficiente e escalável.

Compartilhe
Comentários (0)