Skip to content

Este repositório Java simula a loteria Mega Sena, implementando conceitos avançados de POO, princípios SOLID e padrão MVC. Com funcionalidades para geração de números aleatórios e interação do usuário na escolha dos números, o projeto busca ser o mais flexível e extensível possível, priorizando boas práticas de desenvolvimento em Java.

License

Notifications You must be signed in to change notification settings

SilvioCavalcantiBonfim/megasena-core

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Projeto Mega Sena

Este projeto é uma aplicação Java que simula a loteria Mega Sena, usando conceitos avançados de POO, princípios SOLID e padrão MVC. O código segue boas práticas e é extensível. Primeiro, usei arrays para manipular os dados, devido a limitações impostas ao desafio (Código da versão entregue do desafio), mas depois mudei para listas e conjuntos, que são mais flexíveis e rápidos.

Funcionalidades

  • Geração de números aleatórios para simular o sorteio da Mega Sena.
  • Interação com o usuário para escolha dos números desejados.
  • Apresentação dos números sorteados e resultados da simulação.

Diagrama de classes

Estrutura do Projeto

O projeto está estruturado utilizando o padrão de arquitetura MVC:

Model: Contém as classes relacionadas à lógica de negócios da aplicação.

  • MegaSena: Define as funcionalidades para manipulação dos números escolhidos e sorteados.
  • Drawn: Interface para geração dos números sorteados.

View: Responsável pela interação com o usuário.

  • MegaSenaView: Interface para exibição das mensagens e resultados.
  • MegaSenaViewImpl: Implementação da interface para interação com o usuário.

Controller: Controla o fluxo da aplicação.

  • MegaSenaController: Define as operações disponíveis no controller.
  • MegaSenaControllerImpl: Implementação das operações do controller.

DAO (Data Access Object): Classes relacionadas à obtenção de dados.

  • InputDAO e OutputDAO: Interfaces para entrada e saída de dados.
  • Implementações correspondentes (InputDAOImpl e OutputDAOImpl).

Fallback e SPI

  • DefaultInput e DefaultOutput: Implementações padrão para entrada e saída de dados.
  • Input e Output: Interfaces SPI (Service Provider Interface) para entrada e saída de dados personalizáveis.
  • Classes relacionadas às extensões do ControllerLifecycleHooks.

Hooks e Service Loader API

  • ControllerLifecycleHooks: Define os pontos de extensão do ciclo de vida do controller.
  • Implementação (ControllerLifecycleHooksImpl) e classes SPI associadas.

Extensibilidade com Service Loader API

O projeto foi arquitetado levando em consideração a extensibilidade, empregando a API Service Loader do Java para ampliar o Princípio Aberto-Fechado (OCP). As interfaces foram utilizadas para definir os Hooks de ciclo de vida do controlador, possibilitando a adição de novos comportamentos sem a necessidade de alterar o código já existente. Adicionalmente, a substituição de I/O pode ser realizada sem qualquer modificação no código-fonte, reforçando a flexibilidade e adaptabilidade do projeto.

Agradecimentos

Gostaria de expressar minha gratidão ao Vai na Web, e aos professores Samuel e Leno, cujo as orientações contribuiu significativamente para o desenvolvimento deste projeto. Além disso, a inspiração e base de conhecimento para a aplicação dos princípios SOLID foram obtidas através do livro Desbravando SOLID: Práticas avançadas para códigos de qualidade em Java moderno.

Este projeto visa demonstrar boas práticas de desenvolvimento em Java e serve como base para aplicações futuras, promovendo a manutenibilidade, extensibilidade e qualidade do código.

About

Este repositório Java simula a loteria Mega Sena, implementando conceitos avançados de POO, princípios SOLID e padrão MVC. Com funcionalidades para geração de números aleatórios e interação do usuário na escolha dos números, o projeto busca ser o mais flexível e extensível possível, priorizando boas práticas de desenvolvimento em Java.

Topics

Resources

License

Stars

Watchers

Forks

Languages