FJ-16 | Laboratório Java com Testes, XML e Design Patterns (Noturno)
R. Vergueiro, 3185 - 8º andar, Vila Mariana - São Paulo/São Paulo - Brasil
Descrição
Carga Horária: 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.
Conteúdo detalhado:
Tornando-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
- Palavra chave final
- Imutabilidade de objetos
- Trabalhando com datas: %%Date%% e %%Calendar%%
- Exercícios: o modelo do Argentum
- 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
- JUnit 4 e suas anotações
- Test Driven Development - TDD
- Exercícios: migrando os testes do main para JUnit
- 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
- 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 - Diálogos
- 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
- Formatando Datas: DateFormat
- Exercícios: formataçã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
- Nossos indicadores e o design pattern Strategy
- Exercícios: refatorando para uma interface e usando bem os testes
- Exercícios opcionais
- 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
- Indicadores mais Elaborados e o Design Pattern Decorator
- Exercícios: Indicadores mais espertos e o Design Pattern Decorator
- Desafio: Imprimir Candles
- Desafio: Fluent Interface
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
- Input de dados formatados: Datas
- Exercícios opcionais: filtrando por data
- Para saber mais: barra de menu
- Exercícios opcionais: escolher os indicador(es) para o gráfico
- Discussão em sala de aula: uso de IDEs para montar a tela
Reflection e Annotations
- Por que Reflection?
- Reflection: Class, Method
- Usando anotações
- Usar JTables é difícil
- Criando sua própria anotação
- Lendo anotação com Reflection
- TableModel com Reflection
- Exercícios: ReflectionTableModel
- Para saber mais: Formatter, printf e String.format
- Exercícios opcionais
- 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 - Swing Avançado
- Dificuldades com Threads e concorrência
- SwingWorker
- Exercícios: resolvendo concorrência com SwingWorker
- Para saber mais: A parte do JFreeChart
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.
Localização
Contato
Preencha os campos abaixo para enviar e-mail ao organizador.
