from modelos.avaliacao import Avaliacao
from modelos.cardapio.item_cardapio import ItemCardapio
class Restaurante:
restaurantes = []
def __init__(self,nome,categoria,):
self. _nome =nome.title()
self._categoria =categoria.upper()
self._ativo = False
self._avaliacao=[]
self._cardapio = []
Restaurante.restaurantes.append(self)
def __str__(self):
return f'{self._nome} |{self._categoria}'
@classmethod
def listar_restaurantes(cls):
print(f'{'Nome do restaurante'.ljust(25)} | {'Categoria'.ljust(25)} |{'Avaliação'.ljust(25)} |{'Status'}')
for restaurante in cls.restaurantes:
print(f'{restaurante._nome.ljust(25)} | {restaurante._categoria.ljust(25)} |{str(restaurante.media_avaliacao).ljust(25)} | {restaurante._ativo}')
@property
def alternar_estado(self):
self._ativo = not self._ativo
def recebe_avaliacao(self,cliente,nota):
if 0 <nota <=5:
avaliacao=Avaliacao(cliente,nota)
self._avaliacao.append(avaliacao)
@property
def media_avaliacao(self):
if not self._avaliacao:
return 'Restaurante sem nota'
soma_das_notas = sum(avaliacao._nota for avaliacao in self._avaliacao)
quantidade_de_notas=len(self._avaliacao)
media =round(soma_das_notas / quantidade_de_notas,1)
return media
def adiciona_item_no_cardapio(self,item):
if isinstance (item,ItemCardapio):
self._cardapio.append(item)
@property
def exibi_cardapio(self):
print(f'Cardapio do restaurante {self._nome}\n')
for i , item in enumerate (self._cardapio,start=1):
if hasattr(item,'tamanho'):
mensagem_prato= f'{i}.Nome:{item._nome} | Preço: R${item._preco} | descricao {item._descricao}'
print(mensagem_prato)
else:
mensagem_bebida= f'{i}.Nome:{item._nome} | Preço: R${item._preco} | tamanho {item._tamanho}'
print(mensagem_bebida)
``class Prato(ItemCardapio):
def __init__(self,nome,preco,descricao):
super().__init__(nome,preco)
self._descricao=descricao
self._tamanho= None
def __str__(self) :
return self._nome`
class ItemCardapio:
def __init__(self,nome,preco):
self._nome=nome
self._preco=preco
class Bebida(ItemCardapio):
def __init__(self,nome,preco,tamanho):
super().__init__(nome,preco)
self._tamanho=tamanho
self._descricao = None
def __str__(self) :
return self._nome
from modelos.restaurante import Restaurante
from modelos.cardapio.bebida import Bebida
from modelos.cardapio.prato import Prato
restaurante_praca = Restaurante('praça','Gourmet')
bebida_suco = Bebida('Suco de Melancia',5,'Grande')
prato_paozinho = Prato('Paozinho',2,'O melhor pão da cidade')
restaurante_praca.adiciona_item_no_cardapio(bebida_suco)
restaurante_praca.adiciona_item_no_cardapio(prato_paozinho)
def main():
restaurante_praca.exibi_cardapio
if __name__ =='__main__':
main()