Logo Studenta
Gratis
368 pág.
apostila-java-orientacao-objetos

Vista previa | Página 1 de 50

Esta	apostila	da	Caelum	visa	ensinar	de	uma	maneira	elegante,	mostrando	apenas	o	que	é	necessário	e
quando	é	necessário,	no	momento	certo,	poupando	o	 leitor	de	assuntos	que	não	costumam	ser	de	 seu
interesse	em	determinadas	fases	do	aprendizado.
A	Caelum	espera	que	você	aproveite	esse	material.	Todos	os	comentários,	críticas	e	sugestões	serão
muito	bem-vindos.
Essa	apostila	é	constantemente	atualizada	e	disponibilizada	no	site	da	Caelum.	Sempre	consulte	o
site	para	novas	versões	e,	ao	invés	de	anexar	o	PDF	para	enviar	a	um	amigo,	indique	o	site	para	que	ele
possa	sempre	baixar	as	últimas	versões.	Você	pode	conferir	o	código	de	versão	da	apostila	logo	no	 ​nal
do	índice.
Baixe	sempre	a	versão	mais	nova	em:	www.caelum.com.br/apostilas
Esse	 material	 é	 parte	 integrante	 do	 treinamento	 Java	 e	 Orientação	 a	 Objetos	 e	 distribuído
gratuitamente	 exclusivamente	 pelo	 site	 da	 Caelum.	 Todos	 os	 direitos	 são	 reservados	 à	 Caelum.	 A
distribuição,	 cópia,	 revenda	 e	 utilização	 para	ministrar	 treinamentos	 são	 absolutamente	 vedadas.	 Para
uso	comercial	deste	material,	por	favor,	consulte	a	Caelum	previamente.
SOBRE	ESTA	APOSTILA
1
4
19
Sumário
1	Como	Aprender	Java
1.1	O	que	é	realmente	importante? 1
1.2	Sobre	os	exercícios 2
1.3	Tirando	dúvidas	e	indo	além 2
2	O	que	é	Java
2.1	Java 4
2.2	Uma	breve	história	do	Java 5
2.3	Máquina	Virtual 6
2.4	Java	lento?	Hotspot	e	JIT 8
2.5	Versões	do	Java	e	a	confusão	do	Java2 9
2.6	JVM?	JRE?	JDK?	O	que	devo	baixar? 9
2.7	Onde	usar,	e	os	objetivos	do	Java 10
2.8	Especificação	versus	implementação 11
2.9	Como	o	FJ-11	está	organizado 11
2.10	Compilando	o	primeiro	programa 12
2.11	Executando	seu	primeiro	programa 14
2.12	O	que	aconteceu? 14
2.13	Para	saber	mais:	como	é	o	bytecode? 15
2.14	Exercícios:	modificando	o	Hello	World 16
2.15	O	que	pode	dar	errado? 16
2.16	Um	pouco	mais... 17
2.17	Exercícios	opcionais 18
3	Variáveis	Primitivas	e	Controle	de	Fluxo
3.1	Declarando	e	usando	variáveis 19
3.2	Tipos	primitivos	e	valores 22
3.3	Exercícios:	Variáveis	e	tipos	primitivos 22
3.4	Discussão	em	aula:	convenções	de	código	e	código	legível 23
3.5	Casting	e	promoção 23
SumárioCaelum
35
59
75
3.6	O	if	e	o	else 26
3.7	O	While 28
3.8	O	For 28
3.9	Controlando	loops 29
3.10	Escopo	das	variáveis 30
3.11	Um	bloco	dentro	do	outro 32
3.12	Para	saber	mais 32
3.13	Exercícios:	fixação	de	sintaxe 32
3.14	Desafios:	Fibonacci 34
4	Orientação	a	Objetos	Básica
4.1	Motivação:	problemas	do	paradigma	procedural 35
4.2	Criando	um	tipo 37
4.3	Uma	classe	em	Java 39
4.4	Criando	e	usando	um	objeto 39
4.5	Métodos 41
4.6	Métodos	com	retorno 42
4.7	Objetos	são	acessados	por	referências 44
4.8	O	método	transfere() 47
4.9	Continuando	com	atributos 49
4.10	Para	saber	mais:	uma	fábrica	de	carros 51
4.11	Um	pouco	mais... 53
4.12	Exercícios:	Orientação	a	Objetos 53
4.13	Desafios 56
4.14	Fixando	o	conhecimento 57
5	Modificadores	de	Acesso	e	Atributos	de	Classe
5.1	Controlando	o	acesso 59
5.2	Encapsulamento 62
5.3	Getters	e	setters 64
5.4	Construtores 67
5.5	A	necessidade	de	um	construtor 68
5.6	Atributos	de	classe 70
5.7	Um	pouco	mais... 72
5.8	Exercícios:	encapsulamento,	construtores	e	static 72
5.9	Desafios 73
6	Eclipse	IDE
6.1	O	Eclipse 75
CaelumSumário
91
100
121
136
6.2	Apresentando	o	Eclipse 76
6.3	Views	e	Perspective 77
6.4	Criando	um	projeto	novo 79
6.5	Criando	o	main 83
6.6	Executando	o	main 85
6.7	Pequenos	truques 86
6.8	Exercícios:	Eclipse 87
6.9	Discussão	em	aula:	Refactoring 90
7	Pacotes	-	Organizando	suas	Classes	e	Bibliotecas
7.1	Organização 91
7.2	Diretórios 92
7.3	Import 93
7.4	Acesso	aos	atributos,	construtores	e	métodos 95
7.5	Usando	o	Eclipse	com	pacotes 96
7.6	Exercícios:	pacotes 98
8	Ferramentas:	JAR	e	Javadoc
8.1	Arquivos,	bibliotecas	e	versões 100
8.2	Gerando	o	JAR	pelo	Eclipse 102
8.3	Javadoc 104
8.4	Gerando	o	Javadoc 105
8.5	Exercícios:	JAR	e	Javadoc 108
8.6	Importando	um	JAR	externo 109
8.7	Exercícios:	Importando	um	JAR 109
8.8	Manipulando	a	conta	pela	interface	gráfica 111
8.9	Exercícios:	mostrando	os	dados	da	conta	na	tela 118
9	Herança,	Reescrita	e	Polimorfismo
9.1	Repetindo	código? 121
9.2	Reescrita	de	método 125
9.3	Invocando	o	método	reescrito 126
9.4	Polimorfismo 127
9.5	Um	outro	exemplo 129
9.6	Um	pouco	mais... 131
9.7	Exercícios:	herança	e	polimorfismo 131
9.8	Discussões	em	aula:	alternativas	ao	atributo	protected 135
10	Classes	Abstratas
10.1	Repetindo	mais	código? 136
SumárioCaelum
145
160
179
10.2	Classe	abstrata 137
10.3	Métodos	abstratos 139
10.4	Aumentando	o	exemplo 140
10.5	Para	saber	mais... 143
10.6	Exercícios:	classes	abstratas 143
11	Interfaces
11.1	Aumentando	nosso	exemplo 145
11.2	Interfaces 149
11.3	Dificuldade	no	aprendizado	de	interfaces 153
11.4	Exemplo	interessante:	conexões	com	o	banco	de	dados 154
11.5	Exercícios:	interfaces 155
11.6	Exercícios	opcionais 158
11.7	Discussão:	favoreça	composição	em	relação	à	herança 159
12	Exceções	e	Controle	de	Erros
12.1	Motivação 160
12.2	Exercício	para	começar	com	os	conceitos 162
12.3	Exceções	de	Runtime	mais	comuns 166
12.4	Outro	tipo	de	exceção:	Checked	Exceptions 167
12.5	Um	pouco	da	grande	família	Throwable 170
12.6	Mais	de	um	erro 171
12.7	Lançando	exceções 171
12.8	O	que	colocar	dentro	do	try? 173
12.9	Criando	seu	próprio	tipo	de	exceção 174
12.10	Para	saber	mais:	finally 175
12.11	Exercícios:	exceções 176
12.12	Desafios 177
12.13	Discussão	em	aula:	catch	e	throws	com	Exception 177
13	O	Pacote	java.lang
13.1	Pacote	java.lang 179
13.2	Um	pouco	sobre	a	classe	System 179
13.3	java.lang.Object 180
13.4	Métodos	do	java.lang.Object:	equals	e	toString 181
13.5	Exercícios:	java.lang.Object 185
13.6	java.lang.String 186
13.7	Exercícios:	java.lang.String 189
13.8	Desafio 191
CaelumSumário
192
202
232
235
13.9	Discussão	em	aula:	o	que	você	precisa	fazer	em	Java? 191
14	Um	Pouco	de	Arrays
14.1	O	problema 192
14.2	Arrays	de	referências 193
14.3	Percorrendo	uma	array 194
14.4	Percorrendo	uma	array	no	Java	5.0 195
14.5	Exercícios:	arrays 196
14.6	Um	pouco	mais... 199
14.7	Desafios	opcionais 201
15	Collections	Framework
15.1	Arrays	são	trabalhosas,	utilizar	estrutura	de	dados 202
15.2	Listas:	java.util.List 203
15.3	Listas	no	Java	5	e	Java	7	com	Generics 207
15.4	A	importância	das	interfaces	nas	coleções 208
15.5	Ordenação:	Collections.sort 209
15.6	Exercícios:	ordenação 212
15.7	Conjunto:	java.util.Set 214
15.8	Principais	interfaces:	java.util.Collection 216
15.9	Percorrendo	coleções	no	Java	5 217
15.10	Para	saber	mais:	iterando	sobre	coleções	com	java.util.Iterator 218
15.11	Mapas	-	java.util.Map 220
15.12	Para	saber	mais:	Properties 222
15.13	Para	saber	mais:	Equals	e	HashCode 223
15.14	Para	saber	mais:	boas	práticas 224
15.15	Exercícios:	Collections 224
15.16	Desafios 228
15.17	Para	saber	mais:	Comparators,	classes	anônimas,	Java	8	e	o	lambda 229
16	E	Agora?
16.1	Web 232
16.2	Praticando	Java	e	usando	bibliotecas 232
16.3	Grupos	de	usuários 233
16.4	Próximos	cursos 233
17	Pacote	java.io
17.1	Conhecendo	uma	API 235
17.2	Orientação	a	objetos	no	java.io 236
17.3	InputStream,	InputStreamReader	e	BufferedReader 236
SumárioCaelum
250
259
273
280
17.4	Lendo	Strings	do	teclado 239
17.5	A	analogia	para	a	escrita:	OutputStream 240
17.6	Uma	maneira	mais	fácil:	Scanner	e	PrintStream 241
17.7	Um	pouco	mais... 242
17.8	Integer	e	classes	wrappers	(box) 243
17.9	Autoboxing	no	Java	5.0 244
17.10	Para	saber	mais:	java.lang.Math 244
17.11	Exercícios:	Java	I/O 245
17.12	Discussão	em	aula:	Design	Patterns	e	o	Template	Method 247
18	Apêndice	-	Programação	Concorrente	e	Threads
18.1	Threads 250
18.2	Escalonador	e	trocas	de	contexto 253
18.3	Garbage	Collector 254
18.4	Exercícios 256
18.5	E	as	classes	anônimas? 257
19	Apêndice	-	Sockets
19.1	Motivação:	uma	API	que	usa	os	conceitos	aprendidos 259
19.2	Protocolo 259
19.3	Porta 260
19.4	Socket 261
19.5	Servidor 262
19.6	Cliente 263
19.7	Imagem	geral 265
19.8	Exercícios:	Sockets
Página123456789...50