Skip to content

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