Sistema de Vendas
A full management system built for a university course on object-oriented programming. Covers product & customer registration, order processing, and reporting — all designed with OOP principles at the core.Um sistema completo de gestão construído para uma disciplina universitária de programação orientada a objetos. Cobre cadastro de produtos e clientes, processamento de pedidos e relatórios — tudo projetado com princípios de POO no centro.
01 OverviewVisão Geral
Built as a university assignment for the Programming Languages course, this project goes beyond the typical "hello world" OOP exercises. It models a real-world sales management domain with multiple interacting entities: products, customers, orders, and reports.Construído como trabalho acadêmico para a disciplina de Linguagens de Programação, este projeto vai além dos exercícios típicos de POO estilo "hello world". Ele modela um domínio real de gestão de vendas com várias entidades interagindo: produtos, clientes, pedidos e relatórios.
The system emphasizes proper class hierarchies, encapsulation, and the separation of concerns — principles that carry directly into production Java development.O sistema enfatiza hierarquias de classes bem definidas, encapsulamento e separação de responsabilidades — princípios que se conectam diretamente com desenvolvimento Java em produção.
02 ArchitectureArquitetura
Entity LayerCamada de Entidades
Core entities (Product, Customer, Order, OrderItem) are plain Java objects with proper encapsulation, validation in setters, and meaningful toString representations.As entidades centrais (Product, Customer, Order, OrderItem) são objetos Java simples, com encapsulamento correto, validações em setters e representações `toString` úteis.
Service LayerCamada de Serviços
Business logic lives in service classes separate from entities. Order processing validates stock, calculates totals, and updates inventory atomically — no business logic in the UI layer.A lógica de negócio fica em classes de serviço separadas das entidades. O processamento de pedidos valida estoque, calcula totais e atualiza inventário de forma atômica — sem lógica de negócio na camada de interface.
ReportingRelatórios
Report generation is handled by dedicated classes that use Java streams for filtering and aggregation — total sales by product, customer purchase history, and revenue summaries.A geração de relatórios é feita por classes dedicadas que usam Java Streams para filtragem e agregação — total de vendas por produto, histórico de compras por cliente e resumos de faturamento.
03 LearningsAprendizados
Tech UsedTecnologias Utilizadas
Key FeaturesPrincipais Recursos
- ✓Product & customer registrationCadastro de produtos e clientes
- ✓Order processing with stock controlProcessamento de pedidos com controle de estoque
- ✓Revenue & sales reportsRelatórios de receita e vendas
- ✓Clean entity separationSeparação limpa entre entidades