FUNDAMENTOS DA LINGUAGEM
JAVA - 40 HORAS

 Módulo 1: "Iniciando"
- Listar as características chaves da linguagem de programação Java™
- Descrever a máquina virtual Java™ ( JVM = Java™ Virtual Machine)
- Explicar como o "Coletor de Lixo" trabalha (Garbage Collection)
- Descrever as características de segurança do ambiente Java™
- Escrever uma aplicação simples de Java™, compilá-la e executá-la

Módulo 2: "Programação Orientada a Objetos"
- Descrever os seguintes termos: Classe, Objeto, Atributo, Método e Construtor.
- Escrever o código (programa) para definir um método
- Acessar as "Variáveis Membro" de um objeto, usando a notação de ponto (dot notation)
- Escrever o código para criar e inicializar um objeto
- Usar a palavra reservada "This" para acessar o objeto corrente.
- Usar modificadores de acesso "Private" e "Public"
- Escrever o código para invocar um método em um objeto particular.
- Escrever Construtores da classe e invocar construtores particulares usando "New" como argumento.
- Compreender o uso das indicações das instruções "Package" e "Import" para o acesso à biblioteca
- Usar a documentação "On Line" da API Java™ (Application Programming Interface)

Módulo 3: "Identificadores, Palavras Reservadas (keywords), e tipos"
- Usando comentários em um programa
- Distinguir entre identificadores válidos e inválidos
- Reconhecer os "keywords" na linguagem de programação Java™
- Listar os oito tipos primitivos em Java.
- Definir valores literais para tipos numéricos e textual
- Descrever as convenções de codificação para classes, interfaces, métodos, variáveis, constantes, e estruturas do controle
- Críar uma definição de classe para uma classe simples que contem variáveis primitivas como membro da classe.
- Declarar variáveis de "Classe"
- Descrever o significado de uma Variável de Referência e indicar as conseqüências da atribuição entre variáveis do tipo Classe.

Módulo 4: "Expressões e controle de fluxo"
- Distinguir entre variáveis Membro e variáveis Automáticas
- Descrever a iniciação de variáveis Membro
- Reconheçer e corrijir um erro de Compilação denominado de "Possível referência antes da Atribuição"
- Reconhecer, Descrever, e Usar operadores
- Distinguir entre atribuições legais e ilegais de tipos primitivos
- Reconhecer expressões booleanas e indicar os requerimentos para estas em construções de controle.
- Reconhecer a compatibilidade de atribuição e "Coerção" requerida em tipos Fundamentais
- Fazer o uso apropriado do If, Switch, For, While, e fazer construções utilizando as instruções "Break" e "Continue"
- Aprender a usar o novo “For”, introduzido com o Java 5.0 para trabalhar com Matrizes e Collections

Módulo 5: "Desenho de Classes"
- Conceitos de Encapsulamento, Polimorfismo, e Herança
- Usar o conceito de "subclassing"
- Criar e usar Coleções heterogêneas
- Criar e usar os métodos que aceitam tipos genéricos como argumento
- Usar níveis de Controle de Acesso
- Invocar métodos "sobrecarregados" e "construtores"
- Escrever métodos "sobreescritos" em uma subclasse e descrever o fluxo da execução ao executar um método "sobreescrito".
- Invocar métodos "sobreescritos" e descrever como um método é escolhido.
- Invocar construtores "sobreescritos".
- Controlar a chamada de um Construtor de uma Classe Pai.
- Usar Classes "Wrapper"
- Autoboxing (Java 5.0)


Módulo 6: "Características Avançadas de Classes"
- Declarar e usar variáveis e métodos "Estáticos"
- Declarar e usar classes, métodos, e variáveis "Finais"
- Usar métodos "Abstratos" e "Interfaces"


Módulo 7: "Arrays e Coleções"
- Declarar e criar Arrays Primitivas, de classe, ou Array de tipos.
- Explicar porque e mostrar como inicializar os elementos de um Array
- Determinar o número dos elementos de um Array
- Escrever o código para cópia de Arrays
- Java 5.0 – Tipos Genéricos (Genercis) aplicados à Coleções (Java 5.0)

Módulo 8: "Exceções"
- Definir Exceções
- Descrever o uso dos keywords "Try", "Catch" e "Finally"
- Descrever categorias das Exceções
- Identificar Exceções comuns
- Escrever o código para gerenciar suas próprias Exceções

Módulo 9: "Aplicações Baseadas em Texto"
- Escrever código para acessar "Argumentos de Linha de Comando" e propriedades de sistema.
- Examinar e manipular Arquivos e Diretórios
- Ler de Arquivos e escrever em Arquivos (File I/O)
- Descrever as coleções API
- Usar "Iterators"
- Documentar software usando a ferramenta Java™doc do ambiente Java™ 2 SDK
- O uso do Static Import (Java 5.0)

Módulo 10: "Fluxo de I/O Avançado"
- Usar a versão Streams (Fluxo) do pacote de Java.io
- Construir e usar Fluxo de I/O (I/O Streams)
- Distinguir "Readers" e "Writers" dos Streams
- Construir e usar Streams.
- Compreender como criar suas próprias classes de processamento de Fluxo (Streams)
- Ler, escrever, e atualizar dados em Arquivos de acesso aleatório
- Usar a Interface "Serialization" para codificar o estado de um objeto em um Fluxo de I/O e implementar a persistencia do objeto.
Módulo 11: "Threads"
- Descrever uma Thread
- Criar Threads separadas, controlando o código e os dados que são usadas por essas Threads
- Controlar a execução de uma Thread e escrever o código independente de plataforma utilizando Threads.
- Descrever algumas das dificuldades que surgem quando múltiplas Threads compartilham dados.
- Usar a palavra reservada "Sincronized" para proteger dados compartilhados.
- Usar os métodos wait() e notify() para comunicação entre Threads.

Módulo 12: "Acessando Banco de Dados com JAVA"
- Entender o que são Drivers
- Diferenciar ODBC, JDBC e DRIVERMANAGER
- Desenvolver uma aplicação Java para conexão com Banco de Dados
- Criar um objeto a partir da classe "Statement"
- Utilizar os métodos executeUpdate e executeQuery da classe "Statement"
- Saber configurar o ODBC da Microsoft para criar uma fonte de dados
- Saber utilizar os métodos das Classes DataBaseMetaData e ResultSetMetaData
- Saber criar as "Prepared Statement"
- Entender e aplicar o conceito de Transação