Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sistema de Gerenciamento de Cafeteira #39

Open
kellen-xavier opened this issue Feb 6, 2024 · 0 comments
Open

Sistema de Gerenciamento de Cafeteira #39

kellen-xavier opened this issue Feb 6, 2024 · 0 comments

Comments

@kellen-xavier
Copy link

Descrição: criar um sistema simples de gerenciamento de uma cafeteira utilizando conceitos fundamentais de programação orientada a objetos: Herança, Polimorfismo e Encapsulamento. O sistema terá classes para representar diferentes tipos de cafés, uma tabela de valores, um sistema de pedidos, e um mecanismo para retirada dos cafés.

Classes e Funcionalidades:

  1. Classe Cafe

A classe base que representa um café. Deve ter os seguintes atributos:

nome: Nome do café.
preco: Preço do café.

Implemente um método str para exibir o nome e preço do café.
2. Classes Derivadas

Crie três classes que herdam da classe Cafe:

CafeExpresso: Café expresso.
CafeCappuccino: Café cappuccino.
CafeLatte: Café latte.

Cada uma dessas classes deve ter um método construtor que inicializa o nome e preço específicos do café.
3. Classe TabelaDePrecos

Uma classe responsável por armazenar a tabela de preços dos cafés. Deve conter um dicionário onde as chaves são os nomes dos cafés e os valores são os preços correspondentes.

Implemente um método para obter o preço de um café a partir do seu nome.
4. Classe Pedido

Uma classe para representar um pedido de café. Deve ter os seguintes atributos:

cafes: Uma lista de objetos Cafe que compõem o pedido.
total: O custo total do pedido.

Implemente métodos para adicionar cafés ao pedido e calcular o custo total.
5. Classe Retirada

Uma classe para representar a retirada de cafés. Deve ter um método que recebe um objeto Pedido e exibe uma mensagem indicando que o pedido foi retirado.

Exemplo de Uso:

# Criar cafés
expresso = CafeExpresso()
cappuccino = CafeCappuccino()
latte = CafeLatte()

# Criar tabela de preços
tabela_precos = TabelaDePrecos()
tabela_precos.adicionar_cafe(expresso)
tabela_precos.adicionar_cafe(cappuccino)
tabela_precos.adicionar_cafe(latte)

# Criar um pedido
pedido = Pedido()
pedido.adicionar_cafe(expresso)
pedido.adicionar_cafe(cappuccino)

# Calcular e exibir o total do pedido
pedido.calcular_total(tabela_precos)
print(f"Total do Pedido: R$ {pedido.total:.2f}")

# Retirar o pedido
retirada = Retirada()
retirada.retirar_pedido(pedido)

Objetivos do Exercício:

**Herança:** Garanta que as classes CafeExpresso, CafeCappuccino, e CafeLatte herdem da classe base Cafe.

**Encapsulamento:** Mantenha os atributos das classes encapsulados, permitindo o acesso apenas por meio de métodos apropriados.

**Polimorfismo:** Utilize polimorfismo ao trabalhar com objetos do tipo Cafe no pedido, sem se preocupar com a classe específica de cada café.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

1 participant