A sophisticated domain modeling project that simulates a Tech Education Platform. This system demonstrates mastery in Object-Oriented Programming (OOP) pillars and explores modern Java 17 features like the Stream API.
- Domain-Driven Abstraction: Usage of an abstract class Conteudo as a base for Curso and Mentoria, enforcing DRY (Don't Repeat Yourself) principles.
- Collections API Mastery: Strategic use of LinkedHashSet to maintain enrollment order while preventing duplicate content.
- Functional Logic: Implementation of Stream API for clean, declarative data processing, especially in XP calculation and student ranking.
- Business Rules: Custom logic for bootcamp graduation and performance-based leaderboards.
The project follows a modular package structure to ensure separation of concerns:
src/
└── dio.desafio.dominio/
├── Main.java # Entry point / Ranking & Simulation
├── Bootcamp.java # Domain entity managing contents and devs
├── Conteudo.java # Abstract Base Class for learning material
├── Curso.java # Specific content with workload logic
├── Mentoria.java # Live sessions with date handling
└── Dev.java # Core logic for progression and XP calculation
- Clone the repository
- Open in IntelliJ IDEA
- Ensure JDK 17 is configured
- Run the Main.java file
Um projeto sofisticado de modelagem de domínio que simula uma Plataforma de Ensino Tecnológico. Este sistema demonstra domínio nos pilares de Programação Orientada a Objetos (POO) e explora recursos modernos do Java 17, como a Stream API.
- Abstração de Domínio: Uso da classe abstrata Conteudo como base para Curso e Mentoria, aplicando princípios DRY (Don't Repeat Yourself).
- Domínio de Collections: Uso estratégico de LinkedHashSet para manter a ordem de inscrição e evitar conteúdos duplicados.
- Lógica Funcional: Implementação de Stream API para processamento de dados declarativo, especialmente no cálculo de XP e ranking de alunos.
- Regras de Negócio: Lógica customizada para graduação no bootcamp e quadros de líderes baseados em performance.
O projeto segue uma estrutura de pacotes modular para garantir a separação de responsabilidades:
src/
└── dio.desafio.dominio/
├── Main.java # Ponto de entrada / Simulação e Ranking
├── Bootcamp.java # Entidade que gerencia conteúdos e devs
├── Conteudo.java # Classe Abstrata Base para materiais
├── Curso.java # Conteúdo específico com carga horária
├── Mentoria.java # Sessões ao vivo com gestão de datas
└── Dev.java # Lógica central de progressão e cálculo de XP
- Clone o repositório
- Abra no IntelliJ IDEA
- Certifique-se de usar o JDK 17
- Execute o arquivo Main.java
Developed by Yuri Vieira