Article image
Valdemar Taborda
Valdemar Taborda31/08/2024 21:11
Compartilhe

Entendendo Orientação a Objetos em Python com um Exemplo de Vendas

    Boa noite Devs!

    Vamos explorar um exemplo simples, mas muito útil, que demonstra como organizar seu código usando classes e objetos.

    Conceitos Básicos de Orientação a Objetos

    Orientação a Objetos (OO) é uma forma de organizar e estruturar o código em torno de "objetos", que podem representar coisas do mundo real, como produtos, vendas, ou categorias, ou até mesmo conceitos abstratos. Esses objetos são criados a partir de classes, que são como "moldes" que definem o que os objetos podem fazer e que informações eles guardam.

    Exemplo de Vendas

    Neste exemplo, construir um sistema simples que gerencia vendas dentro de categorias. Vamos usar duas classes principais: Venda e Categoria. A classe Venda vai representar uma única venda, enquanto a classe Categoria vai representar uma categoria de produtos e manterá uma lista de vendas associadas a ela.

    class Venda:
      def __init__(self, produto, quantidade, valor):
          self.produto = produto
          self.quantidade = quantidade
          self.valor = valor
    
    
    class Categoria:
      def __init__(self, nome):
          self.nome = nome
          self.vendas = []
    
    
      def adicionar_venda(self, venda):
          if isinstance(venda, Venda):
              self.vendas.append(venda)
    
    
      def total_vendas(self):
          total = sum(venda.valor for venda in self.vendas)
          return total
    
    
    def main():
      categorias = []
    
    
      for i in range(2):
          nome_categoria = input()
          categoria = Categoria(nome_categoria)
    
    
          for j in range(2): 
              entrada_venda = input()
              produto, quantidade, valor = entrada_venda.split(',')
              quantidade = int(quantidade.strip())
              valor = float(valor.strip())
    
    
              venda = Venda(produto.strip(), quantidade, valor)
              categoria.adicionar_venda(venda)
    
    
          categorias.append(categoria)
      
      for categoria in categorias:
          print(f"Vendas em {categoria.nome}: {categoria.total_vendas():.1f}")
    
    
    if __name__ == "__main__":
      main()
    

    Classe Venda

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

    O que faz:

    A classe Venda é responsável por representar uma venda. Cada venda tem três

    atributos:

    • produto: o nome do produto vendido.
    • quantidade: quantos itens foram vendidos.
    • valor: o preço total da venda.

    Construtor:

    • O método __init__ é o que chamamos de construtor. Ele é chamado automaticamente quando criamos uma nova venda, inicializando os atributos produto, quantidade e valor.

    Classe Categoria

    
    class Categoria:
      def __init__(self, nome):
          self.nome = nome
          self.vendas = []
    
    
      def adicionar_venda(self, venda):
          if isinstance(venda, Venda):
              self.vendas.append(venda)
    
    
      def total_vendas(self):
          total = sum(venda.valor for venda in self.vendas)
          return total
    

    O que faz:

    A classe Categoria mantém uma lista de todas as vendas que pertencem a essa categoria.

    Ela tem:

    • nome: o nome da categoria (por exemplo, "Eletrônicos").
    • vendas: uma lista que guarda todas as vendas associadas a essa categoria.

    Método adicionar_venda:

    • Este método adiciona uma nova venda à lista vendas da categoria, mas apenas se a venda for realmente uma instância da classe Venda.

    Método total_vendas:

    • Este método calcula e retorna o total das vendas na categoria, somando o valor de cada venda na lista vendas.

    Função main()

    def main():
      categorias = []
    
    
      for i in range(2):
          nome_categoria = input()
          categoria = Categoria(nome_categoria)
    
    
          for j in range(2): 
              entrada_venda = input()
              produto, quantidade, valor = entrada_venda.split(',')
              quantidade = int(quantidade.strip())
              valor = float(valor.strip())
    
    
              venda = Venda(produto.strip(), quantidade, valor)
              categoria.adicionar_venda(venda)
    
    
          categorias.append(categoria)
      
      for categoria in categorias:
          print(f"Vendas em {categoria.nome}: {categoria.total_vendas():.1f}")
    
    
    

    O que faz:

    A função main() controla o fluxo do programa:

    • Cria uma lista categorias para guardar as categorias.
    • Pede ao usuário para inserir o nome de duas categorias e cria objetos Categoria para elas.
    • Pede ao usuário para inserir duas vendas para cada categoria.
    • Adiciona as vendas às suas respectivas categorias.
    • Calcula e exibe o total de vendas para cada categoria.

    Conclusão

    Este exemplo simples mostra como pode organizar seu código usando classes e objetos. A classe Venda encapsula os detalhes de uma única venda, enquanto a classe Categoria agrupa e gerencia essas vendas. Usando a orientação a objetos, seu código fica mais organizado e fácil de entender e manter.🚀

    Compartilhe
    Comentários (0)