Olá, Jean! Como vai?
É ótimo ver que você está se aprofundando na orientação a objetos com Python! Vamos dar uma olhada no seu código e ver como podemos melhorá-lo.
Redundância nos métodos de adicionar itens: Você tem dois métodos adicionar_item_cardapio_bebidas
e adicionar_item_cardapio_pratos
que fazem exatamente a mesma coisa. Você pode simplificar isso criando um único método adicionar_item_cardapio
.
Métodos de desconto: Da mesma forma, os métodos aplicar_desconto_pratos
e aplicar_descontos_bebidas
são muito semelhantes. Você pode criar um método único aplicar_desconto
que aceita um parâmetro para o valor do desconto.
Nome da classe: Como você está usando a classe Sobremesa
para outros tipos de itens (como pratos e bebidas), talvez seja interessante renomear a classe para algo mais genérico, como ItemCardapio
.
Aqui está uma versão refatorada do seu código com essas sugestões:
items = []
class ItemCardapio:
def __init__(self, tipo, tamanho, descricao, preco):
self.tipo = tipo
self.tamanho = tamanho
self.descricao = descricao
self.preco = preco
self.preco_original = preco
def __str__(self):
return (
f"Tipo: {self.tipo.ljust(25)} | "
f"Tamanho: {self.tamanho.ljust(25)} | "
f"Descrição: {self.descricao.ljust(25)}\n"
f"Preço original: R${self.preco_original:<15.2f} | "
f"Preço com desconto: R${self.preco:.2f}\n"
f"{'----' * 30}"
)
def adicionar_item_cardapio(self):
if self not in items:
items.append(self)
else:
print("Item já está no cardápio!")
def aplicar_desconto(self, desconto):
self.preco *= (1 - desconto)
# Criando instâncias de ItemCardapio
prato = ItemCardapio('lasanha mexicana', 'médio', 'prato voltado para purista', 100.0)
bebida = ItemCardapio('refrigerante', '2Litros', 'Guarana', 7)
# Adicionando ao cardápio
prato.adicionar_item_cardapio()
bebida.adicionar_item_cardapio()
# Aplicando desconto
prato.aplicar_desconto(0.08) # 8% de desconto
bebida.aplicar_desconto(0.05) # 5% de desconto
for item in items:
print(item)
Espero que essas sugestões ajudem a tornar seu código mais limpo e eficiente.
Bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.