FJ-16 - Laboratório Java com Swing, XML e Testes
O curso FJ-16 foca no desenvolvimento desktop com Swing usando as boas práticas do desenvolvimento orientado a objetos, integrando a tecnologias como XML com JAXB, testes unitários com JUnit e JFreeChart. Durante o curso, desenvolvemos uma aplicação de análise da bolsa de valores, que busca o histórico de uma base XML dos dados e exibição de gráficos de indicadores e cotações.
Além disso, durante o desenvolvimento, diversos design patterns aparecem no código, juntamente com refatorações e o uso de ferramentas de build, para que o desenvolvedor se habitue com a codificação java do dia a dia.
É o curso indicado para quem acaba de fazer o FJ-11 e deseja colocar em prática os conceitos aprendidos e entrar em tópicos mais avançados e práticos. Entre os tópicos abordados estão Swing, XML, testes unitários, JFreeChart, Ant, Maven, refactoring, annotations e reflection.
Informações
Carga Horária: 20 horas aula
Pré-requisitos: Curso FJ-11 ou equivalente com conhecimento de Orientação a Objetos e Java SE básico.
Próximas Turmas
| Início | Término | Período |
|---|---|---|
| 29/11 | 13/12 | Sabado (9:00 as 17:00) |
| 15/12 | 19/12 | Noturno (19:00 as 23:00) |
| 10/01 | 24/01 | Sabado (9:00 as 17:00) |
| 19/01 | 21/01 | Integral (9:00 as 17:00) |
| 02/02 | 06/02 | Noturno (19:00 as 23:00) |
| 28/03 | 11/04 | Sabado (9:00 as 17:00) |
| Início | Término | Período |
|---|---|---|
| 21/01 | 23/01 | Integral (09:00 as 17:00) |
Conteúdo detalhado do FJ-16
Como Aprender Java
- O que é realmente importante?
- Sobre os exercícios
- Tirando dúvidas
- Bibliografia
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: classes básicas para o modelo do Argentum
- Exercícios opcionais
Testes Automatizados
- Nosso código está funcionando?
- Exercícios: testando nosso modelo sem frameworks
- Exercícios opcionais: definindo melhor o sistema e descobrindo mais bugs
- Testes unitários
- Testes funcionais
- Testes de integração
- JUnit
- Anotações
- Import Estático
- Test Driven Development
- Exercícios: migrando os testes do main para JUnit
- Exercícios: novos testes
- 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: Separando os candles
- Exercícios: Lendo o XML
- Exercícios opcionais
- Discussão em aula: Onde usar XML e o abuso da tecnologia
Rafatoraçã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
- Usando logs - LOG4J
- Exercícios: Adicionando logging com Log4J
- Refatoração
- Exercícios: Primeiras refatorações
- Nossos indicadores e o design patterns Decorator e Strategy
- Exercícios: refatorando para uma interface e usando bem os testes
- Exercícios opcionais
- Discussão em aula: quando refatorar?
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 Strings: DateFormat, Formatter, printf e String.format
- Exercícios: formatação
- Para saber mais
- Discussão em sala de aula: Listeners como classes top level, internas ou anônimas?
Gráficos com JFreeChart
- JFreeChart
- Preparando um projeto no Eclipse para utilizar o 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 adicionais
- Desafio: Imprimir Candles
- Desafio: Fluent Interface
Mais Swing: layout managers, threads e detalhes
- Gerenciadores de Layout
- Layout managers mais famosos
- Exercícios: usando layout managers
- Dificuldades com Threads e concorrência
- SwingWorker
- Exercícios: resolvendo os problemas de concorrência com SwingWorker
- Integrando JFreeChart
- Exercícios: completando a tela da nossa aplicação
- Exercícios opcionais: zoom no gráfico e salvar como PNG
- Discussão em sala de aula: uso de IDEs para montar a tela
Reflection e Annotations
- Porquê Reflection?
- Reflection: Class, Field
- Usando anotações
- Usar JTables é difícil
- Criando sua própria anotação
- Lendo anotação com Reflection
- TableModel com Reflection
- Exercícios: ReflectionTableModel
- 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
- Discussão em sala de aula: IDE, ant ou Maven?
