Sistema em Java utilizando Programação Orientada a Objetos (POO) para cadastro e notificação de eventos que ocorrem em uma cidade. O sistema permite que usuários se cadastrem, vejam eventos disponíveis e participem dos que desejarem.
- ✓ Paradigma Orientado a Objetos (POO)
- ✓ Repositório GIT com versionamento
- ✓ Diagrama de classes UML
- ✓ Projeto em Console
- ✓ Sistema de cadastro de usuários (3+ atributos)
- ✓ Sistema de cadastro de eventos com: nome, endereço, categoria, horário, descrição
- ✓ Categorias delimitadas (Festa, Esportivo, Show, etc)
- ✓ Consulta de eventos e participação
- ✓ Visualização de eventos confirmados
- ✓ Cancelamento de participação
- ✓ Ordenação por horário (eventos próximos)
- ✓ Status de eventos (ocorrendo, próximo, finalizado)
- ✓ Persistência em arquivo (events.data)
- ✓ Carregamento de dados ao iniciar
- Enumeração de categorias (enum)
- Uso de LocalDateTime para controle preciso de horários
- Interface amigável com menu interativo
- Validação de entrada de dados
- Capacidade máxima de participantes
- Feedback visual com símbolos (✓, ✗)
┌─────────────────────────────────────────────┐
│ SISTEMA DE EVENTOS │
└─────────────────────────────────────────────┘
┌──────────────────┐ ┌──────────────────┐
│ USUARIO │ │ EVENTO │
├──────────────────┤ ├──────────────────┤
│ - id: int │ │ - id: int │
│ - nome: String │ │ - nome: String │
│ - email: String │ │ - endereco: String
│ - telefone: Str │ │ - categoria: Enum│
│ - cidade: String │ │ - horario: LDT │
│ - eventos: List │ │ - descricao: Str │
├──────────────────┤ │ - capacidade: int│
│ + getId() │ │ - participantes │
│ + getNome() │ ├──────────────────┤
│ + adicionarEvt() │ │ + getId() │
│ + removerEvt() │ │ + getNome() │
└──────────────────┘ │ + getStatus() │
△ │ + addParticipant │
│ │ + removePartici. │
│ participa └──────────────────┘
│
┌─────────────────────────────────────────────┐
│ GERENCIADOR EVENTOS │
├─────────────────────────────────────────────┤
│ - eventos: List<Evento> │
│ - usuarios: List<Usuario> │
│ - proximoId: int │
├─────────────────────────────────────────────┤
│ + cadastrarUsuario() │
│ + cadastrarEvento() │
│ + listarEventos() │
│ + participarEvento() │
│ + cancelarParticipacao() │
│ + listarMeusEventos() │
│ + listarEventosPorStatus() │
│ + salvarEventos() │
│ + carregarEventos() │
└─────────────────────────────────────────────┘
△
│ controla
│
┌─────────────────────────────────────────────┐
│ SISTEMA EVENTOS (Main) │
├─────────────────────────────────────────────┤
│ + main() │
│ + exibirMenu() │
│ + cadastrarUsuario() │
│ + cadastrarEvento() │
│ + participarEvento() │
│ - gerenciador: GerenciadorEventos │
└─────────────────────────────────────────────┘
┌────────────────────────────────────┐
│ CATEGORIA EVENTO (Enum) │
├────────────────────────────────────┤
│ FESTA │
│ ESPORTIVO │
│ SHOW │
│ PALESTRA │
│ CINEMA │
│ GASTRONOMIA │
│ CULTURA │
│ OUTRO │
└────────────────────────────────────┘
javac SistemaEventos.javajava SistemaEventos================= SISTEMA DE EVENTOS =================
1. Cadastrar Usuário
2. Listar Usuários
3. Cadastrar Evento
4. Listar Todos os Eventos
5. Participar de um Evento
6. Cancelar Participação
7. Meus Eventos
8. Eventos Próximos
9. Eventos Ocorrendo Agora
10. Eventos Finalizados
0. Sair
1. Cadastrar um usuário
2. Cadastrar alguns eventos
3. Participar de eventos (opção 5)
4. Ver seus eventos (opção 7)
5. Visualizar eventos por status (próximos, ocorrendo, finalizados)
sistema-eventos/
├── SistemaEventos.java # Arquivo principal com todas as classes
├── events.data # Arquivo de persistência (criado automaticamente)
├── README.md # Este arquivo
└── .git/ # Repositório Git
Os eventos são salvos automaticamente no arquivo events.data em formato delimitado:
id|nome|endereco|categoria|horario|descricao|capacidade|participantes
Exemplo:
1|Show Clássico|Av. Brasil, 1000|SHOW|2024-03-20 19:00|Show de música clássica|100|1,2,3
Ao reiniciar o programa, todos os eventos são carregados automaticamente.
- Encapsulamento: Variáveis privadas com getters/setters
- Herança: Relacionamento entre classes
- Abstração: Separação de responsabilidades
- Polimorfismo: Métodos com diferentes comportamentos
- Enum: Para categorias de eventos
- ArrayList: Para coleções dinâmicas
- LocalDateTime: Para manipulação de datas/horas
- MVC Conceitual: Separação lógica (Modelo, Visualização, Controle)
- Linguagem: Java 8+
- IDE: Eclipse, NetBeans, IntelliJ ou Replit
- Versão Control: Git
- Persistência: Arquivo de texto (.data)
| Requisito | Status |
|---|---|
| POO | ✅ |
| Repositório GIT | ✅ |
| Diagrama de Classes | ✅ |
| Projeto Console | ✅ |
| Cadastro de Usuário (3+ atributos) | ✅ (4 atributos) |
| Cadastro de Eventos | ✅ |
| Categorias Delimitadas | ✅ |
| Participação em Eventos | ✅ |
| Ordenação por Horário | ✅ |
| Status dos Eventos | ✅ |
| Persistência em Arquivo | ✅ |
| Carregamento de Dados | ✅ |
Igor Pinheiro Ferreira
Estudante de Gestão da Tecnologia da Informação
Rio de Janeiro, 2026
Para dúvidas ou melhorias, consulte a documentação do Java e as referências da Unidade Curricular.
Desenvolvido com ❤️ para Imersão Digital