ApostilaJava e Orientação a Objetos
sumário-
1 Como Aprender Java
-
1.1 O que é realmente importante?
-
1.2 Sobre os exercícios
-
1.3 Tirando dúvidas e indo além
-
2 O que é Java
-
2.1 Java
-
2.2 Uma breve história do Java
-
2.3 Máquina Virtual
-
2.4 Java lento? Hotspot e JIT
-
2.5 Versões do Java e a confusão do Java2
-
2.6 JVM? JRE? JDK? O que devo baixar?
-
2.7 Onde usar, e os objetivos do Java
-
2.8 Especificação versus implementação
-
2.9 Como o FJ-11 está organizado
-
2.10 Compilando o primeiro programa
-
2.11 Executando seu primeiro programa
-
2.12 O que aconteceu?
-
2.13 Para saber mais: como é o bytecode?
-
2.14 Exercícios: modificando o Hello World
-
2.15 O que pode dar errado?
-
2.16 Um pouco mais...
-
2.17 Exercícios opcionais
-
3 Variáveis Primitivas e Controle de Fluxo
-
3.1 Declarando e usando variáveis
-
3.2 Tipos primitivos e valores
-
3.3 Exercícios: Variáveis e tipos primitivos
-
3.4 Discussão em aula: convenções de código e código legível
-
3.5 Casting e promoção
-
3.6 O if e o else
-
3.7 O While
-
3.8 O For
-
3.9 Controlando loops
-
3.10 Escopo das variáveis
-
3.11 Um bloco dentro do outro
-
3.12 Para saber mais
-
3.13 Exercícios: fixação de sintaxe
-
3.14 Desafios: Fibonacci
-
4 Orientação a Objetos Básica
-
4.1 Motivação: problemas do paradigma procedural
-
4.2 Criando um tipo
-
4.3 Uma classe em Java
-
4.4 Criando e usando um objeto
-
4.5 Métodos
-
4.6 Métodos com retorno
-
4.7 Objetos são acessados por referências
-
4.8 O método transfere()
-
4.9 Continuando com atributos
-
4.10 Para saber mais: uma fábrica de carros
-
4.11 Um pouco mais...
-
4.12 Exercícios: Orientação a Objetos
-
4.13 Desafios
-
4.14 Fixando o conhecimento
-
5 Modificadores de Acesso e Atributos de Classe
-
5.1 Controlando o acesso
-
5.2 Encapsulamento
-
5.3 Getters e setters
-
5.4 Construtores
-
5.5 A necessidade de um construtor
-
5.6 Atributos de classe
-
5.7 Um pouco mais...
-
5.8 Exercícios: encapsulamento, construtores e static
-
5.9 Desafios
-
6 Eclipse IDE
-
6.1 O Eclipse
-
6.2 Apresentando o Eclipse
-
6.3 Views e Perspective
-
6.4 Criando um projeto novo
-
6.5 Criando o main
-
6.6 Executando o main
-
6.7 Pequenos truques
-
6.8 Exercícios: Eclipse
-
6.9 Discussão em aula: Refactoring
-
7 Pacotes - Organizando suas Classes e Bibliotecas
-
7.1 Organização
-
7.2 Diretórios
-
7.3 Import
-
7.4 Acesso aos atributos, construtores e métodos
-
7.5 Usando o Eclipse com pacotes
-
7.6 Exercícios: pacotes
-
8 Ferramentas: JAR e Javadoc
-
8.1 Arquivos, bibliotecas e versões
-
8.2 Gerando o JAR pelo Eclipse
-
8.3 Javadoc
-
8.4 Gerando o Javadoc
-
8.5 Exercícios: JAR e Javadoc
-
8.6 Importando um JAR externo
-
8.7 Exercícios: Importando um JAR
-
8.8 Manipulando a conta pela interface gráfica
-
8.9 Exercícios: mostrando os dados da conta na tela
-
9 Herança, Reescrita e Polimorfismo
-
9.1 Repetindo código?
-
9.2 Reescrita de método
-
9.3 Invocando o método reescrito
-
9.4 Polimorfismo
-
9.5 Um outro exemplo
-
9.6 Um pouco mais...
-
9.7 Exercícios: herança e polimorfismo
-
9.8 Discussões em aula: alternativas ao atributo protected
-
10 Classes Abstratas
-
10.1 Repetindo mais código?
-
10.2 Classe abstrata
-
10.3 Métodos abstratos
-
10.4 Aumentando o exemplo
-
10.5 Para saber mais...
-
10.6 Exercícios: classes abstratas
-
11 Interfaces
-
11.1 Aumentando nosso exemplo
-
11.2 Interfaces
-
11.3 Dificuldade no aprendizado de interfaces
-
11.4 Exemplo interessante: conexões com o banco de dados
-
11.5 Exercícios: interfaces
-
11.6 Exercícios opcionais
-
11.7 Discussão: favoreça composição em relação à herança
-
12 Exceções e Controle de Erros
-
12.1 Motivação
-
12.2 Exercício para começar com os conceitos
-
12.3 Exceções de Runtime mais comuns
-
12.4 Outro tipo de exceção: Checked Exceptions
-
12.5 Um pouco da grande família Throwable
-
12.6 Mais de um erro
-
12.7 Lançando exceções
-
12.8 O que colocar dentro do try?
-
12.9 Criando seu próprio tipo de exceção
-
12.10 Para saber mais: finally
-
12.11 Exercícios: exceções
-
12.12 Desafios
-
12.13 Discussão em aula: catch e throws com Exception
-
13 O Pacote java.lang
-
13.1 Pacote java.lang
-
13.2 Um pouco sobre a classe System
-
13.3 java.lang.Object
-
13.4 Métodos do java.lang.Object: equals e toString
-
13.5 Exercícios: java.lang.Object
-
13.6 java.lang.String
-
13.7 Exercícios: java.lang.String
-
13.8 Desafio
-
13.9 Discussão em aula: o que você precisa fazer em Java?
-
14 Um Pouco de Arrays
-
14.1 O problema
-
14.2 Arrays de referências
-
14.3 Percorrendo uma array
-
14.4 Percorrendo uma array no Java 5.0
-
14.5 Exercícios: arrays
-
14.6 Um pouco mais...
-
14.7 Desafios opcionais
-
15 Collections Framework
-
15.1 Arrays são trabalhosas, utilizar estrutura de dados
-
15.2 Listas: java.util.List
-
15.3 Listas no Java 5 e Java 7 com Generics
-
15.4 A importância das interfaces nas coleções
-
15.5 Ordenação: Collections.sort
-
15.6 Exercícios: ordenação
-
15.7 Conjunto: java.util.Set
-
15.8 Principais interfaces: java.util.Collection
-
15.9 Percorrendo coleções no Java 5
-
15.10 Para saber mais: iterando sobre coleções com java.util.Iterator
-
15.11 Mapas - java.util.Map
-
15.12 Para saber mais: Properties
-
15.13 Para saber mais: Equals e HashCode
-
15.14 Para saber mais: boas práticas
-
15.15 Exercícios: Collections
-
15.16 Desafios
-
15.17 Para saber mais: Comparators, classes anônimas, Java 8 e o lambda
-
16 E Agora?
-
16.1 Web
-
16.2 Praticando Java e usando bibliotecas
-
16.3 Grupos de usuários
-
16.4 Próximos cursos
-
17 Pacote java.io
-
17.1 Conhecendo uma API
-
17.2 Orientação a objetos no java.io
-
17.3 InputStream, InputStreamReader e BufferedReader
-
17.4 Lendo Strings do teclado
-
17.5 A analogia para a escrita: OutputStream
-
17.6 Uma maneira mais fácil: Scanner e PrintStream
-
17.7 Um pouco mais...
-
17.8 Integer e classes wrappers (box)
-
17.9 Autoboxing no Java 5.0
-
17.10 Para saber mais: java.lang.Math
-
17.11 Exercícios: Java I/O
-
17.12 Discussão em aula: Design Patterns e o Template Method
-
18 Apêndice - Programação Concorrente e Threads
-
18.1 Threads
-
18.2 Escalonador e trocas de contexto
-
18.3 Garbage Collector
-
18.4 Exercícios
-
18.5 E as classes anônimas?
-
19 Apêndice - Sockets
-
19.1 Motivação: uma API que usa os conceitos aprendidos
-
19.2 Protocolo
-
19.3 Porta
-
19.4 Socket
-
19.5 Servidor
-
19.6 Cliente
-
19.7 Imagem geral
-
19.8 Exercícios: Sockets
-
19.9 Desafio: múltiplos clientes
-
19.10 Desafio: broadcast das mensagens
-
19.11 Solução do sistema de chat
-
20 Apêndice - Problemas com Concorrência
-
20.1 Threads acessando dados compartilhados
-
20.2 Controlando o acesso concorrente
-
20.3 Vector e Hashtable
-
20.4 Um pouco mais...
-
20.5 Exercícios avançados de programação concorrente e locks
-
21 Apêndice - Instalação do Java
-
21.1 Instalando no Ubuntu e em outros Linux
-
21.2 No Mac OS X
-
21.3 Instalação do JDK em ambiente Windows
-
22 Apêndice - Debugging
-
22.1 O que é debugar
-
22.2 Debugando no Eclipse
-
22.3 Perspectiva de debug
-
22.4 Debug avançado
-
22.5 Profiling
-
22.6 Profiling no Eclipse TPTP
-
23 Resoluções de exercícios
-
23.1 Exercícios 3.3: variáveis e tipos primitivos
-
23.2 Exercícios 3.13: fixação de sintaxe
-
23.3 Desafios 3.14: Fibonacci
-
23.4 Exercícios 4.12: orientação a objetos
-
23.5 Desafios 4.13
-
23.6 Exercícios 5.8: encapsulamento, construtores e static
-
23.7 Desafios 5.9
-
23.8 Exercícios 8.9: mostrando os dados da conta na tela
-
23.9 Exercícios 9.7: herança e polimorfismo
-
23.10 Exercícios 11.5: interfaces
-
23.11 Exercícios opcionais 11.6
-
23.12 Exercícios 12.11: exceções
-
23.13 Desafios 12.12
-
23.14 Exercícios 13.5: java.lang.Object
-
23.15 Exercícios 13.7: java.lang.String
-
23.16 Desafio 13.8
-
23.17 Exercícios 14.5: arrays
-
23.18 Exercícios 15.6: ordenação
-
23.19 Exercícios 15.15: collections
-
23.20 Desafios 15.16
-
23.21 Exercícios 17.11: Apêndice Java I/O