iv_ ← Todos os projetosEN ↗
Experimentos — Fundamentos de software / Exercício pessoal de OOP e CLI

Biblioteca

Um catálogo em terminal para explorar contratos e polimorfismo.

TypeScriptNode.jsOOPInterfacesPolymorphismreadline-syncCLI
ENGENHARIA / EVIDÊNCIASImplementação inspecionada

Fluxo resumido a partir da implementação revisada. Os detalhes e limites estão nas seções abaixo; esta visualização não é screenshot de produção ou prova de desempenho medido.

01Menu
02entrada
03catálogo
04regra de estoque
05resultado no terminal
01

Objetivo do exercício

Biblioteca implementa um gerenciador de catálogo e estoque no terminal. Livros físicos e e-books compartilham operações de exibição e atualização, enquanto o menu permite cadastrar, listar, vender e excluir itens.

O foco é aprender organização de objetos e contratos de software em um domínio pequeno. É um exercício de programação, não um sistema completo de empréstimos ou gestão bibliotecária institucional.

02

Interface comum e tipos concretos

ILivro define atributos e métodos esperados. LivroFisico e Ebook implementam o contrato; o e-book acrescenta tamanho de arquivo, mantendo uma interface utilizável pelo gerenciador.

A lista de ILivro permite tratar objetos diferentes pelas mesmas operações. A exibição usa o comportamento de cada classe, tornando o polimorfismo observável sem condicionar todas as ações ao tipo concreto.

03

Regras de catálogo e estoque

GerenciadorLivraria busca itens por ISBN e recusa cadastro duplicado. Venda consulta estoque e atualiza a quantidade quando a condição implementada é satisfeita; exclusão remove o item encontrado.

Esses métodos centralizam regras em vez de repeti-las no menu. Ainda é necessário validar quantidades positivas, limites e dados obrigatórios; tipagem não impede automaticamente toda entrada inválida no terminal.

04

CLI e interação síncrona

readline-sync recebe opções e valores em um loop de menu. Cada opção chama uma operação e apresenta seu resultado, mantendo a interação legível para quem acompanha o exercício.

A leitura é bloqueante e adequada ao fluxo local demonstrativo. Uma API ou interface gráfica precisaria de outro adapter de entrada, sem necessariamente reescrever todas as regras do catálogo.

05

Persistência e limites atuais

Os itens ficam em um array do gerenciador e exemplos são inseridos ao iniciar. O estado existe apenas durante o processo; não há banco, arquivo persistente ou controle simultâneo de múltiplos usuários.

Essa limitação mantém o exercício focado em OOP. Separar persistência por interface seria uma evolução coerente, permitindo testes e armazenamento sem misturar SQL ao menu.

06

Aprendizado e verificação futura

O projeto demonstra classes, interfaces, coleções, busca, controle de fluxo e contratos de domínio. A revisão inspecionou o programa sem atribuir cobertura automatizada inexistente.

Próximos passos incluem testes de duplicação, venda e estoque insuficiente, validação de entradas e separação entre regra e console. O repositório público documenta a base desse aprendizado.

Explorar o repositório público ↗