Introdução
Introdução: visão geral do curso
Conceitos de programação
Visão geral do capítulo
Material de apoio do capítulo
Algoritmo, Automação, Programa de Computador
O que é preciso para se fazer um programa de computador
Linguagem de programação, léxica, sintática
IDE - Ambiente Integrado de Desenvolvimento
Introdução à linguagem Java
Visão geral do capítulo
Material de apoio do capítulo
Entendendo as versões do Java
Histórico e edições de Java
JDK / JVM - Máquina Virtual do Java
Estrutura de uma aplicação Java
Instalando Java
Instalando o Eclipse
Primeiro programa em Java no Eclipse
Estrutura sequencial
Visão geral do capítulo
Material de apoio do capítulo
Expressões aritméticas
Variáveis e tipos básicos em Java
As três operações básicas de programação
Saída de dados em Java
Processamento de dados em Java, Casting
Entrada de dados em Java - Parte 1
Entrada de dados em Java - Parte 2
Funções matemáticas em Java
AVISO: exercícios para iniciantes PARTE 1
Exercícios para Iniciantes - PARTE 1
Estrutura condicional
Visão geral do capítulo
Material de apoio do capítulo
Expressões comparativas
Expressões lógicas
Estrutura condicional (if-else)
AVISO: exercícios para iniciantes PARTE 2
Exercícios para Iniciantes - PARTE 2
Sintaxe opcional - operadores de atribuição cumulativa
Sintaxe opcional - switch-case
Expressão condicional ternária
Escopo e inicialização
Estruturas repetitivas
Visão geral do capítulo
Material de apoio do capítulo
Como utilizar o DEBUG no Eclipse (execução passo a passo)
Estrutura repetitiva enquanto (while)
Teste de mesa com estrutura repetitiva enquanto
Exercícios de teste de mesa com while
AVISO: exercícios para iniciantes PARTE 3
Exercícios para Iniciantes - PARTE 3
Estrutura repetitiva para (for)
Teste de mesa com estrutura repetitiva para
Exercícios de testes de mesa com for
AVISO: exercícios para iniciantes PARTE 4
Exercícios para iniciantes PARTE 4
Estrutura repetitiva faça-enquanto (do-while)
Outros tópicos básicos sobre Java
Material de apoio do capítulo
Restrições e convenções para nomes
Operadores bitwise
Funções interessantes para String
Comentários em Java (básico)
Funções (sintaxe)
Introdução à Programação Orientada a Objetos
Visão geral do capítulo
Material de apoio do capítulo
Resolvendo um problema sem orientação a objetos
Criando uma classe com três atributos para representar melhor o triângulo
Criando um método para obtermos os benefícios de reaproveitamento e delegação
Começando a resolver um segundo problema exemplo
Object e toString
Finalizando o programa
Exercícios de fixação
Membros estáticos - Parte 1
Membros estáticos - Parte 2
Exercício de fixação
Construtores, palavra this, sobrecarga, encapsulamento
Visão geral do capítulo
Material de apoio do capítulo
Construtores
Palavra this
Sobrecarga
Encapsulamento
Gerando automaticamente construtores, getters e setters com Eclipse
Modificadores de acesso
Exercício de fixação
Correção do exercício de fixação - Parte 1
Correção do exercício de fixação - Parte 2
Comportamento de memória, arrays, listas
Visão geral do capítulo
Material de apoio do capítulo
Tipos referência vs. tipos valor
Desalocação de memória - garbage collector e escopo local
Vetores - Parte 1
Vetores - Parte 2
Exercício de fixação
Boxing, unboxing e wrapper classes
Laço for each
Listas - Parte 1
Listas - Parte 2
Exercício proposto
Matrizes
Exercício resolvido
Exercício proposto
Tópicos especiais em Java
Material de apoio do capítulo
Trabalhando com datas - Date
Manipulando um Date com Calendar
Bônus - nivelamento sobre Git e Github
Visão geral do capítulo Git e Github
Material de apoio do capítulo
O que é Git e Github
Instalação do Git no Windows
Demo - criando um novo projeto
Arquivo .gitignore
Demo - trabalhando com um projeto existente
Importante entender - a sequência de commits deve ser respeitada
Kit de primeiros socorros
Enumerações, composição
Visão geral do capítulo Enumerações e Composição
Material de apoio do capítulo
Enumerações
Vamos falar um pouco sobre design
Composição
Exercício resolvido 1 - Parte 1
Exercício resolvido 1 - Parte 2
Exercício resolvido 2 (demo StringBuilder)
Exercício de fixação
Herança e polimorfismo
Visão geral do capítulo Herança e Polimorfismo
Material de apoio do capítulo
Herança
Upcasting e downcasting
Sobreposição, palavra super, anotação @Override
Classes e métodos final
Introdução ao polimorfismo
Exercício resolvido
Exercício de fixação
Classes abstratas
Métodos abstratos
Exercício de fixação
Tratamento de exceções
Visão geral do capítulo Tratamento de Exceções
Material de apoio do capítulo
Discussão inicial sobre exceções
Estrutura try-catch
Pilha de chamadas de métodos (stack trace)
Bloco finally
Criando exceções personalizadas
Primeira solução - muito ruim
Segunda solução - ruim
Terceira solução - boa
Exercício de fixação
Projeto: Sistema jogo de xadrez
Visão geral do capítulo Sistema Jogo de Xadrez
Material de apoio do capítulo
Criando projeto e repositório Git
Primeira classe - Position
Começando a implementar Board e Piece
Camada Chess e imprimindo o tabuleiro
Colocando peças no tabuleiro
BoardException e programação defensiva
ChessException e ChessPosition
Pequena melhoria na impressão do tabuleiro
Movendo peças
Tratando exceções e limpando a tela
Movimentos possíveis de uma peça
Implementando movimentos possíveis da Torre
Imprimindo os movimentos possíveis
Implementando os movimentos possíveis do Rei
Trocando de jogador a cada turno
Manipulando peças capturadas
Lógica de xeque - PARTE 1
Lógica de xeque - PARTE 2
Lógica de xequemate
Contagem de movimentos das peças
Peão
Bispo
Cavalo
Rainha
Jogada especial Roque - PARTE 1
Jogada especial Roque - PARTE 2
Jogada especial en passant - PARTE 1
Jogada especial en passant - PARTE 2
Jogada especial promoção
Trabalhando com arquivos
Visão geral do capítulo Trabalhando com Arquivos
Material de apoio do capítulo
Lendo arquivo texto com classes File e Scanner
FileReader e BufferedReader
Bloco try-with-resources
FileWriter e BufferedWriter
Manipulando pastas com File
Informações do caminho do arquivo
Exercício proposto
Interfaces
Visão geral do capítulo Interfaces
Material de apoio do capítulo
Interfaces
Solução do problema - PARTE 1
Solução do problema - PARTE 2 (sem interface)
Solução do problema - PARTE 3
Inversão de controle e injeção de dependência
Exercício de fixação
Herdar vs. cumprir contrato
Herança múltipla e o problema do diamante
Interface Comparable
Default methods
Generics, Set, Map
Visão geral do capítulo Generics, Set, Map
Material de apoio do capítulo
Introdução aos Generics
Genéricos delimitados
Tipos curinga
Curingas delimitados
HashCode e Equals
Set
Como Set testa igualdade
Como TreeSet compara os elementos
Exercício resolvido (Set)
Exercício de fixação (Set)
Map
Exercício de fixação (Map)
Programação funcional e expressões lambda
Visão geral do capítulo Programação Funcional e Expressões Lambda
Material de apoio do capítulo
Uma experiência com Comparator
Programação funcional e cálculo lambda
Interface funcional
Predicate
Consumer
Function
Criando funções que recebem funções como parâmetro
Stream
Pipeline (demo)
Exercício resolvido (stream)
Exercício de fixação
Acesso a banco de dados com JDBC
Visão geral do capítulo
Material de apoio do capítulo
Visão geral do JDBC
Nivelamento: Álgebra Relacional e SQL
Instalando o MySQL
Preparação do primeiro projeto no Eclipse - PARTE 1
Preparação do primeiro projeto no Eclipse - PARTE 2
Demo - recuperar dados
Demo - inserir dados
Demo - atualizar dados
Demo - deletar dados
Demo - transações
Padrão de projeto DAO (Data Access Object)
PROJETO - criando projeto e repositório Git
Classe Department
Classe Seller
Interfaces DepartmentDao e SellerDao
SellerDaoJDBC e DaoFactory
Implementando findById
Reutilizando a instanciação
Implementando findByDepartment
Implementando findAll
Implementando insert
Implementando update
Implementando delete
Implementação e teste do DepartmentDao
Interface gráfica com JavaFX
Visão geral do capítulo JavaFX
Material de apoio do capítulo
Visão Geral do JavaFX
Instalação do Scene Builder
Preparação do Eclipse
Criando um novo projeto JavaFX no Eclipse
Testando o FXML
Tratando eventos com JavaFX
Mostrando Alert
Usando TextField e Label (app para calcular soma)
Limitações para TextField, interface Initializable
ComboBox
Visão geral dos principais containers de layout
Projeto: Aplicação desktop com JavaFX e banco de dados MySQL com JDBC
Visão geral do capítulo
Material de apoio do capítulo
Criação do projeto
Tela MainView
MainView design
MainView controller
About view
DepartmentList view design
DepartmentList controller
DepartmentService
Ação de inicialização como parâmetro (Consumer)
Adicionando acesso ao banco de dados
DepartmentForm (dialog) design
DepartmentForm controller
Passando um objeto Department para o formulário
Salvando um novo departamento
Padrão de projeto Observer para atualizar a TableView
Validação de dados e ValidationException
Atualizando departamento
Deletando departamento
Deletando pasta .settings
SellerList
SellerList Tableview
SellerForm
TextField & DatePicker
Department ComboBox
Salvando Seller
Build da aplicação e preparação para distribuição
Implantação da aplicação
Opcional - criação de arquivo de lote
Opcional - criação de atalho
Java EE - Mapeamento objeto-relacional com JPA / Hibernate
Visão geral do capítulo
Material de apoio do capítulo
Instalação do STS e Postman
Nivelamento JPA / Hibernate - PARTE 1
Nivelamento JPA / Hibernate - PARTE 2 (Trabalhando com Maven)
Nivelamento JPA / Hibernate - PARTE 3
Projeto: Web services com Spring Boot e JPA / Hibernate
Material de apoio do capítulo
Criação do projeto
Entidade User e seu resource
Banco de dados H2, test profile, JPA
JPA repository, injeção de dependência, database seeding
Camada de serviço, registro de componentes
Entidade Pedido. Datas com Instant e padrão ISO 8601 - PARTE 1
Entidade Pedido. Datas com Instant e padrão ISO 8601 - PARTE 2
Enum OrderStatus
Entidade Category
Entidade Product
Associação muitos-para-muitos com JoinTable
Entidade OrderItem. Associação muitos-para-muitos com dados extras - PARTE 1
Entidade OrderItem. Associação muitos-para-muitos com dados extras - PARTE 2
Associação muitos para muitos entre Product e OrderItem
Entidade Payment, associação um para um
Métodos subtotal e total
Inserção de User
Deleção de User
Atualização de User
Tratamento de exceção - findById
Tratamento de exceção - delete
Tratamento de exceção - update
Criando app Heroku e provisionando banco PostgreSQL
Instalação do PostgreSQL
Profile dev
Obtendo script SQL a partir do PostgreSQL local
Executando script SQL no servidor remoto
Deploy do sistema no Heroku
Testando o sistema em produção
Projeto: API Restful com Spring Boot e banco MongoDB (web services + NoSQL)
Visão geral do capítulo Projeto MongoDB com Spring Boot
Material de apoio do capítulo
Instalação do STS e Postman
Instalação do MongoDB
Instalação do Mongo Compass
Nivelamento sobre NoSQL e MongoDB - PARTE 1
Nivelamento sobre NoSQL e MongoDB - PARTE 2
Primeiro commit - Projeto criado
Entity User e REST funcionando
Conectando ao MongoDB com repository e service
Operação de instanciação da base de dados
Usando padrão DTO para retornar usuários
Obtendo um usuário por id
Inserção de usuário com POST
Deleção de usuário com DELETE
Atualização de usuário com PUT
Discutindo o design do modelo de domínio
Criando entity Post com User aninhado
Projeção dos dados do autor com DTO
Referenciando os posts do usuário
Endpoint para retornar os posts de um usuário
Obtendo um post por id
Acrescentando comentários aos posts
Consulta simples com query methods
Consulta simples com @Query
Consulta com vários critérios
Seção bônus
Aula bônus: cupons para outros cursos