Fase 2 – Programação Orientada a Objetos (2–3 meses)
Classes, Objetos, Atributos e Métodos
- Estrutura de classes
- Instanciamento de objetos
- Uso de this
- Boas práticas: nomenclatura, organização de código
Encapsulamento, Herança, Polimorfismo e Abstração
- Encapsulamento: private, getters/setters, validação
- Herança: extends, sobrescrita (@Override)
- Polimorfismo: Subtipo, sobrecarga de métodos
- Abstração: visão geral, preparação para interfaces e classes abstratas
Interfaces e Classes Abstratas
- Interfaces: implements, métodos default
- Classes abstratas: métodos abstratos e concretos
- Diferenças entre interface e classe abstrata
Construtores, Inicializadores e Blocos Estáticos
- Construtores padrão e parametrizados, chamadas com this()
- Blocos de inicialização ({}) e estáticos (static {})
Enumerações
- Criação e uso de enum
- Métodos e atributos em enums
Coleções Básicas
- ArrayList: adição, remoção, iteração (for, forEach, Iterator)
- HashMap: chave-valor, operações comuns
- HashSet: eliminação de duplicatas
- Introdução a Queue e Stack (ex.: LinkedList como fila/pilha)
- Introdução ao Java Collections Framework
Algoritmos Básicos
- Busca linear e binária
- Ordenação: Bubble Sort, Collections.sort()
- Recursão: conceitos e exemplos simples (ex.: fatorial, Fibonacci)
- Introdução à complexidade (O(n), O(log n))
Generics
- Sintaxe (), coleções genéricas, métodos genéricos
- Limites (extends, super)
Stream API (Introdução)
- Operações básicas: filter, map, collect
- Exemplos com ArrayList
Testes Unitários (Introdução)
- Uso básico do JUnit
- Escrever casos de teste para classes e métodos
- Introdução a TDD (Test-Driven Development)
Projeto Final
- Sistema de Biblioteca
- Classes: Livro, Usuario, Biblioteca
- Herança: LivroDigital e LivroFisico
- Coleções: ArrayList para livros, HashMap para empréstimos
- Encapsulamento: validação de dados
- Git: commit por funcionalidade (ex.:
feature/book-management
)
- Publicar no GitHub com README explicativo
Recursos Atualizados