arrow_backBack to WorkVoltar para Projetos
Java · OOP · POO

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.

LanguageLinguagemJava
TypeTipoUniversity / BackendAcadêmico / Backend
ParadigmParadigmaObject-OrientedOrientado a Objetos

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

_OOP is about modeling reality — getting entity relationships right from the start saves enormous refactoring effort.POO é sobre modelar a realidade — acertar as relações entre entidades desde o início economiza muito esforço de refatoração.
_Java's type system forces you to be explicit about data flow, which I came to see as a feature, not friction.O sistema de tipos do Java obriga a ser explícito sobre o fluxo de dados, algo que passei a ver como recurso, não como atrito.
_Separation of concerns pays dividends immediately when requirements change — as they always do.Separação de responsabilidades gera retorno imediato quando os requisitos mudam — como sempre mudam.

Tech UsedTecnologias Utilizadas

Java OOP Java Streams

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