FJ-16 | Laboratório Java com Testes, XML e Design Patterns
[ 20 horas aula ]
O FJ-16 é um laboratório de desenvolvimento em Java focado em boas práticas de programação. Durante o curso, desenvolvemos uma aplicação de análise da bolsa de valores, que busca o histórico de uma base XML e exibe gráficos de indicadores e cotações. Nesse contexto, abordamos testes unitários com JUnit, XML com XStream, gráficos com JFreeChart, interfaces Desktop com Swing e ferramentas de build com Ant e Maven.
Há bastante foco nas boas práticas como refatorações, design patterns, Test Driven Development (TDD) e XP, além de recursos avançados da linguagem Java como reflection.
É indicado para quem acaba de fazer o FJ-11 e deseja aplicar os conceitos aprendidos além de se aprofundar em tópicos mais avançados e práticos.
Esse curso faz parte da Formação Consultor Java junto com o FJ-11 e o FJ-21.
A apostila do FJ-16 está disponível para download no Caelum Alumni para todos os alunos e ex-alunos de qualquer curso da Caelum.
Pré-requisitos: Curso FJ-11 ou equivalente com conhecimento de Orientação a Objetos e Java SE básico.
Posts relacionados no blog
- Organização de testes de aceitação com PageObjects
- Classes aninhadas: o que são e quando usar?
- Código expressivo e programação funcional em Java com LambdaJ
- Lançamento do livro Introdução à Arquitetura e Design de Software
- Trabalhando com coleções aninhadas: Maps de Maps de Lists de Lists
- Como não aprender orientação a objetos: o excesso de ifs
- As três principais teclas de atalho do Eclipse
- Facilitando a manutenção dos testes ao diminuir o acoplamento com o código
- Modelando as classes do FJ-16 em Scala
- Uma introdução a scripts de build
A opinião de quem fez o FJ-16
O curso foi muito bom. Me ajudou a aprender muito sobre Java.
Julio Cesar Maciel em 07/04/2012
O Fj-16 foi um curso muito proveitoso e trouxe uma ótima noção de orientação a objeto.
Mônica Campos S. dos Santos, Raia Drogasil S/A em 01/04/2012
Próximas Turmas do FJ-16
| Data | Período | Cidade | Comentário |
|---|---|---|---|
| 28/05 a 01/06 | Noturno (19:00 as 23:00) | São Paulo | |
| 02/06 a 16/06 | Sábado (9:00 as 17:00) | Rio de Janeiro | APENAS 3 VAGAS |
| 09/06 a 23/06 | Sábado (9:00 as 17:00) | Brasília | |
| 11/06 a 15/06 | Noturno (19:00 as 23:00) | Brasília | |
| 23/06 a 07/07 | Sábado (9:00 as 17:00) | São Paulo | Turma Lotada! Entre na Lista de Espera! |
| 25/06 a 29/06 | Noturno (18:00 as 22:00) | Rio de Janeiro | Lista de espera |
| 25/06 a 29/06 | Noturno (19:00 as 23:00) | São Paulo | |
| 30/06 a 14/07 | Sábado (9:00 as 17:00) | Rio de Janeiro | ÚLTIMAS VAGAS |
| 23/07 a 25/07 | Integral (9:00 as 17:00) | Rio de Janeiro | |
| 23/07 a 25/07 | Integral (9:00 as 17:00) | São Paulo | |
| 30/07 a 03/08 | Noturno (19:00 as 23:00) | Brasília | |
| 05/08 a 26/08 | Domingo (9:00 as 17:00) | São Paulo | |
| 06/08 a 08/08 | Integral (9:00 as 17:00) | Brasília | |
| 20/08 a 24/08 | Noturno (18:00 as 22:00) | Rio de Janeiro | |
| 15/09 a 29/09 | Sábado (9:00 as 17:00) | Brasília | |
| 15/09 a 29/09 | Sábado (9:00 as 17:00) | Rio de Janeiro | |
| 03/11 a 17/11 | Sábado (9:00 as 17:00) | Rio de Janeiro |
Conteúdo detalhado do FJ-16
Download da apostila do FJ-16Tornando-se um desenvolvedor pragmático
- O que é realmente importante?
- A importância dos exercícios
- Tirando dúvidas
- Mais bibliografia
- Para onde ir depois?
O modelo da bolsa de valores, datas e objetos imutáveis
- A bolsa de valores
- Candlesticks: O Japão e o arroz
- O projeto Tail
- O projeto Argentum: modelando o sistema
- Trabalhando com dinheiro
- Palavra chave final
- Imutabilidade de objetos
- Trabalhando com datas: %%Date%% e %%Calendar%%
- Exercícios: o modelo do Argentum
- Resumo diário dos negócios
- Exercícios: fábrica de Candlestick
- Exercícios opcionais
Testes Automatizados
- Nosso código está funcionando corretamente?
- Exercícios: testando nosso modelo sem frameworks
- Definindo melhor o sistema e descobrindo mais bugs
- Testes de Unidade
- JUnit
- Anotações
- JUnit4, convenções e anotação
- Exercícios: migrando os testes do main para JUnit
- Vale a pena testar classes de modelo?
- Exercícios: novos testes
- Para saber mais: Import Estático
- Mais exercícios opcionais
- Discussão em aula: testes são importantes?
Trabalhando com XML
- Os dados da bolsa de valores
- XML
- Lendo XML com Java de maneira difícil, o SAX
- XStream
- Exercícios: Lendo o XML
- Separando as candles
- Test Driven Design - TDD
- Exercícios: Separando os candles
- Exercícios opcionais
- Discussão em aula: Onde usar XML e o abuso do mesmo
Interfaces gráficas com Swing
- Interfaces gráficas em Java
- Portabilidade
- Look And Feel
- Componentes
- Começando com Swing - Mensagens
- Exercícios: Escolhendo o XML com JFileChooser
- Componentes: JFrame, JPanel e JButton
- O design pattern Composite: Component e Container
- Tratando eventos
- Classes internas e anônimas
- Exercícios: nossa primeira tela
- JTable
- Implementando um TableModel
- Exercícios: Tabela
- Exercícios opcionais: melhorando a apresentação
- Para saber mais
- Discussão em sala de aula: Listeners como classes top level, internas ou anônimas?
Refatoração: os Indicadores da bolsa
- Análise Técnica da bolsa de valores
- Indicadores Técnicos
- As médias móveis
- Exercícios: criando indicadores
- Refatoração
- Exercícios: Primeiras refatorações
- Refatorações maiores
- Discussão em aula: quando refatorar?
Gráficos com JFreeChart
- JFreeChart
- Utilizando o JFreeChart
- Isolando a API do JFreeChart: baixo acoplamento
- Para saber mais: Design Patterns Factory Method e Builder
- Exercícios: JFreeChart
- Exercícios opcionais
- Nossos indicadores e o design pattern Strategy
- Exercícios: refatorando para uma interface e usando bem os testes
- Exercícios opcionais
Mais Swing: layout managers, mais componentes e detalhes
- Gerenciadores de Layout
- Layout managers mais famosos
- Exercícios: usando layout managers
- Integrando JFreeChart
- Exercícios: completando a tela da nossa aplicação
- Indicadores mais Elaborados e o Design Pattern Decorator
- Exercícios: Indicadores mais espertos e o Design Pattern Decorator
- Discussão em sala de aula: uso de IDEs para montar a tela
Reflection e Annotations
- Por que Reflection?
- Class, Field e Method
- Usando anotações
- Usar JTables é difícil
- Usando bem anotações
- Criando sua própria anotação
- Exercícios: ArgentumTableModel
- Exercícios opcionais: nomes das colunas
- Para saber mais: Formatter, printf e String.format
- Para saber mais: parâmetros opcionais
- Exercícios opcionais: formatações na tabela
- Discussão em sala de aula: quando usar reflection, anotações e interfaces
Apêndice: O processo de Build: Ant e Maven
- O processo de build
- O Ant
- Exercícios com Ant
- O Maven
- O Project Object Model
- Plugins, goals e phases
- Exercícios: build com o Maven
- Uso dentro do Eclipse
- Discussão em sala de aula: IDE, ant ou Maven?
Apêndice - Mais swing e recursos avançados
- Input de dados formatados: Datas
- Exercícios opcionais: filtrando por data
- Para saber mais: barra de menu
- Exercício: escolhendo indicadores para o gráfico
- Dificuldades com Threads e concorrência
- SwingWorker
- Exercícios: pesquisando mais na API
Apêndice - Logging com Log4j
- Usando logs - LOG4J
- Níveis de logs
- Appenders e layout
- Exercícios: Adicionando logging com Log4J
- O sl4j
* Os apêndices listados são conteúdos adicionais que não fazem parte do curso regular.

