SENAI Goiás — Análise e Desenvolvimento de Sistemas
1ª Verificação de Aprendizagem (VA) — Parte Prática
questao1.py e questao2.py. Cada arquivo deve
conter a solução da questão correspondente e, no fim do arquivo, um
pequeno trecho de teste que demonstre o funcionamento. Dica: rode seu código e compare com a saída esperada antes de entregar.
Conceitos: classes, encapsulamento (property/setter), validação com
exceções, método e __str__.
Implemente, no arquivo questao1.py, uma classe Produto que represente um item de estoque, atendendo aos requisitos:
nome, preco e quantidade.
@property e @setter para controlar preco e quantidade. Os setters não podem aceitar valores
negativos: ao receber um valor negativo, devem levantar ValueError com mensagem clara.
valor_em_estoque() — retorna preco × quantidade.
vender(qtd) — reduz a quantidade; se qtd for maior que a disponível, levante ValueError.
__str__ — deve retornar algo no formato: Caneta — R$ 2.50 (15 em estoque).
Exemplo de teste (coloque no fim do arquivo):
p = Produto("Caneta", 2.50, 15)
print(p)
print("Valor em estoque:", p.valor_em_estoque())
p.vender(5)
print("Após vender 5:", p)
try:
p.vender(100)
except ValueError as e:
print("Erro:", e) Saída esperada:
Caneta — R$ 2.50 (15 em estoque) Valor em estoque: 37.5 Após vender 5: Caneta — R$ 2.50 (10 em estoque) Erro: Estoque insuficiente: há 10, pedido 100
Conceitos: classe abstrata (ABC), herança, polimorfismo e exceção customizada.
Implemente, no arquivo questao2.py, um pequeno sistema
de acervo de biblioteca, atendendo aos requisitos:
ItemAcervo (módulo abc): construtor recebe titulo; método abstrato prazo_dias(); __str__ usando título e prazo.
Livro (prazo 14 dias)
e Revista (prazo 7 dias), cada uma implementando prazo_dias().
ItemIndisponivelError.
Acervo com: adicionar(item); listar() que percorre a lista e exibe cada item usando
APENAS print(item) (a formatação vem do __str__ — polimorfismo); e emprestar(titulo) que localiza e
remove o item, levantando ItemIndisponivelError se não
existir.
Exemplo de teste (coloque no fim do arquivo):
acervo = Acervo()
acervo.adicionar(Livro("Python Fluente"))
acervo.adicionar(Revista("Veja"))
print("Acervo:")
acervo.listar()
emprestado = acervo.emprestar("Veja")
print("Emprestado:", emprestado)
print("Acervo após empréstimo:")
acervo.listar()
try:
acervo.emprestar("O Hobbit")
except ItemIndisponivelError as e:
print("Erro:", e) Saída esperada:
Acervo: Python Fluente (empréstimo: 14 dias) Veja (empréstimo: 7 dias) Emprestado: Veja (empréstimo: 7 dias) Acervo após empréstimo: Python Fluente (empréstimo: 14 dias) Erro: Item 'O Hobbit' não está disponível no acervo