Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
i
POO-2ED 2013/8/5 9:15 page i #1
i
i
i
POO-2ED 2013/8/5 9:15 page ii #2
i
i
i
POO-2ED 2013/8/5 9:15 page iii #3
i
i
i
POO-2ED 2013/8/5 9:15 page iv #4
CDD: 005.133
CDU: 004.43
i
i
i
POO-2ED 2013/8/5 9:15 page v #5
i
i
i
i
i
POO-2ED 2013/8/5 9:15 page vi #6
i
i
i
POO-2ED 2013/8/5 9:15 page vii #7
vii
Captulo 11: Classes para Manipulao de Strings apresenta e demonstra o uso de duas classes para processamento de cadeias de caracteres: String e
StringBuilder.
Captulo 12: Colees de Objetos apresenta algumas classes que implementam
estruturas de dados simples em Java e suas aplicaes.
Alm destes captulos o livro contm o Apndice A: A classe Keyboard, que apresenta a classe Keyboard, que pode ser usada para facilitar a leitura de valores de tipos
nativos e instncias da classe String a partir do teclado, adicionando flexibilidade aos
programas que no usam interfaces grficas.
i
i
i
POO-2ED 2013/8/5 9:15 page viii #8
i
i
i
POO-2ED 2013/8/5 9:15 page ix #9
ix
e applets. Detalhes e mecanismos de criao de classes em Java sero vistos no
captulo 2.
Aplicaes ou Programas. Aplicaes ou programas podem ser executadas por um
sistema operacional, podendo envolver ou no maior interao com o usurio, e
podendo ou no ter uma interface grfica. Informaes sobre a criao de aplicaes
em Java (sem uso de interface grfica) sero mostradas no captulo 3. Aplicaes
que so executadas em um servidor (servlets, Java Server Pages, web services e
similares) no sero cobertas neste livro.
Classes como conjuntos de rotinas. Classes podem conter somente mtodos (rotinas) ao invs de representar dados. Estas classes funcionam como bibliotecas de
mtodos ou funes que tem algo em comum. Detalhes sobre a criao deste tipo
de classes sero vistos no captulo 5.
Esta lista no considera aplicaes com interfaces grficas, aplicaes que so executadas em um servidor, aplicaes embarcadas ou para dispositivos mveis como smartphones, que no so cobertas neste livro.
Dedicatria e Agradecimentos
Este livro dedicado a minha esposa Yukari, pela enorme pacincia e suporte, e a nossos
filhos Miyuki e Hiroshi, pela constante alegria que proporcionam. Dedico tambm o livro
aos meus pais, Elias e Mariza, pelas vrias lies de vida.
i
i
i
i
POO-2ED 2013/8/5 9:15 page x #10
i
i
i
POO-2ED 2013/8/5 9:15 page xi #11
Sumrio
Prefcio para a segunda edio
Sumrio
xi
Lista de Figuras
xiv
Lista de Listagens
xv
Lista de Tabelas
xxii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
2
5
6
7
8
10
12
14
16
18
18
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
20
20
20
23
24
26
28
29
33
34
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
xi
i
i
i
i
i
POO-2ED 2013/8/5 9:15 page xii #12
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
43
43
43
47
53
55
4 Construtores e sobrecarga
4.1 Introduo . . . . . . . . . . . . . . . . . . . .
4.2 O que so construtores? . . . . . . . . . . . .
4.3 Sobrecarga de mtodos . . . . . . . . . . . . .
4.3.1 A palavra-chave this . . . . . . . . .
4.3.2 Cuidados com sobrecarga de mtodos
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
57
57
60
64
69
72
.
.
.
.
.
.
75
75
75
82
85
86
89
.
.
.
.
.
.
94
94
95
100
100
104
105
. . . . . .
. . . . . .
. . . . . .
aplicaes
. . . . . .
. . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
110
110
111
113
117
121
125
8 Reutilizao de classes
8.1 Introduo . . . . . . . . . . . . .
8.2 Delegao ou composio . . . .
8.2.1 Delegao e modificadores
8.2.2 Delegao e construtores .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
134
134
135
141
145
. . . . . .
. . . . . .
de acesso
. . . . . .
.
.
.
.
i
i
i
POO-2ED 2013/8/5 9:15 page xiii #13
Sumrio xiii
8.3
8.4
Herana . . . . . . . . . . . . . . . . . . . . . .
8.3.1 A palavra-chave super . . . . . . . . . .
8.3.2 Sobreposio e ocultao . . . . . . . .
8.3.3 O modificador protected . . . . . . . .
8.3.4 Polimorfismo . . . . . . . . . . . . . . .
Comentrios finais sobre composio e herana
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
10 Arrays em Java
10.1 Introduo . . . . . . . . . . . . . . . . . . . .
10.2 Arrays unidimensionais . . . . . . . . . . . .
10.2.1 Laos para iterao em arrays . . . . .
10.3 Arrays de instncias de classes . . . . . . . .
10.4 Arrays multidimensionais . . . . . . . . . . .
10.4.1 Arrays irregulares . . . . . . . . . . .
10.5 Processando argumentos da linha de comando
10.6 Argumentos variveis . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
145
152
160
165
170
178
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
179
179
180
185
194
203
.
.
.
.
.
.
.
.
208
208
209
216
217
222
227
230
233
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
236
236
236
237
238
241
243
244
246
246
248
248
12 Colees de objetos
12.1 Introduo . . . . . . . . . .
12.1.1 Tipos Genricos . .
12.1.2 Autoboxing . . . . .
12.2 Conjuntos (sets) de objetos
12.2.1 Diferenas adicionais
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
252
252
253
254
255
263
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
entre as classes
. . . . .
. . . . .
. . . . .
. . . . .
TreeSet
.
.
.
.
e
. . . . . .
. . . . . .
. . . . . .
. . . . . .
HashSet .
i
i
i
POO-2ED 2013/8/5 9:15 page xiv #14
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
264
271
277
282
283
.
.
.
.
.
291
291
292
303
305
307
ndice Remissivo
309
Lista de Figuras
1.1
1.2
1.3
1.4
1.5
1.6
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
7
8
11
13
15
3.1
3.2
48
49
5.1
76
7.1
7.2
7.3
8.1
i
i
i
POO-2ED 2013/8/5 9:15 page xv #15
Lista de Listagens xv
Lista de Listagens
1.1
1.2
1.3
1.4
O
O
O
O
.
.
.
.
9
11
13
15
2.1
2.2
22
2.3
2.4
2.5
2.6
2.7
2.8
3.1
3.2
3.3
3.4
3.5
4.1
4.2
4.3
modelo
modelo
modelo
modelo
Lampada, em pseudocdigo. . . . . . . . . . . . . .
ContaBancariaSimplificada, em pseudocdigo. .
Data, em pseudocdigo. . . . . . . . . . . . . . . .
RegistroAcademico, em pseudocdigo. . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
26
27
30
33
35
38
41
44
49
51
53
55
57
59
61
i
i
i
POO-2ED 2013/8/5 9:15 page xvi #16
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
5.10
5.11
5.12
5.13
5.14
5.15
5.16
62
65
68
69
72
73
77
77
78
79
80
81
81
83
84
85
87
88
89
90
91
93
i
i
i
POO-2ED 2013/8/5 9:15 page xvii #17
7.1
7.2
7.3
7.4
7.5
7.6
7.7
7.8
7.9
7.10
7.11
7.12
7.13
7.14
7.15
A classe Comparavel, que encapsula um valor e contm mtodos para compar-lo com outros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A classe UsaComparavel, que demonstra usos de instncias e mtodos da
classe Comparavel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pseudocdigo usado para calcular o preo de uma entrada de cinema. . . .
A classe EntradaDeCinema, que calcula o preo de uma entrada de cinema.
Trecho de cdigo que demonstra ifs aninhados. . . . . . . . . . . . . . . .
Trecho de cdigo que demonstra ifs aninhados e blocos de comandos. . . .
A classe DataIf, com um mtodo que demonstra o uso da instruo if em
cascata. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A classe ComparaSimples, que demonstra o uso do operador condicional ?.
A classe DataSwitch, com mtodos que demonstram a instruo switch. .
A classe UsaEstadosDoBrasilComSwitch, que demonstra como as constantes do enumerador EstadosDoBrasil podem ser usadas com a instruo
switch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A classe ExemplosWhile, que demonstra vrios usos do lao while. . . . .
A classe EscolhaComWhile, que encapsula um mecanismo de escolha de
valores (usando um bloco while). . . . . . . . . . . . . . . . . . . . . . . .
A classe EscolhaComWhileEContinue, que encapsula um mecanismo de
escolha de valores (usando um bloco while e o comando continue). . . . .
A classe EscolhaComDoWhile, que encapsula um mecanismo de escolha de
valores (usando um bloco do-while). . . . . . . . . . . . . . . . . . . . . .
A classe JogoDeAdivinhacao, que implementa um jogo simples de adivinhao de nmeros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A classe UsaJogoDeAdivinhacao, que demonstra o uso de uma instncia
da classe JogoDeAdivinhacao. . . . . . . . . . . . . . . . . . . . . . . . . .
A classe ExemplosFor, que demonstra vrios usos do lao for. . . . . . . .
A classe Combinatoria, que contm alguns mtodos estticos para clculos
bsicos de combinatria. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A classe UsaCombinatoria, que demonstra o uso dos mtodos estticos da
classe Combinatoria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A classe ExemplosForEnumeradores, que demonstra como percorrer as
constantes do enumerador EstadosDoBrasil com um lao for. . . . . . .
Pseudocdigo para calcular somatria recursivamente. . . . . . . . . . . . .
A classe SomatoriaRecursiva, que demonstra o clculo da somatria recursiva dos primeiros N nmeros inteiros. . . . . . . . . . . . . . . . . . . .
Resultado da execuo da classe SomatoriaRecursiva com o valor 6. . . .
A classe TorresDeHanoi, que demonstra a soluo recursiva para o problema das Torres de Hani. . . . . . . . . . . . . . . . . . . . . . . . . . . .
A classe FibonacciRecursiva, que demonstra o clculo da srie de Fibonacci recursivamente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
96
99
100
101
102
102
103
104
105
108
113
114
116
117
119
120
121
123
124
125
126
126
128
130
131
i
i
i
POO-2ED 2013/8/5 9:15 page xviii #18
8.11
8.12
8.13
8.14
8.15
8.16
8.17
8.18
8.19
8.20
8.21
8.22
8.23
8.24
A classe DataHora, que reutiliza as classes Data e Hora atravs do mecanismo de delegao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A classe RegistroAcademicoDeGraduacao, que reutiliza a classe Data atravs de delegao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
O enumerador CursosDeGraduacao, que contm constantes e mtodos para
representar alguns cursos de graduao. . . . . . . . . . . . . . . . . . . . .
A classe UsaRegistroAcademicoDeGraduacao, que demonstra a criao e
o uso de instncias da classe RegistroAcademicoDeGraduacao. . . . . . .
A classe PessoaSimples, que encapsula os dados de identificao de uma
pessoa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A classe FuncionarioSimples, que encapsula os dados bsicos de um funcionrio de uma empresa. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A classe UsaFuncionarioSimples, que demonstra o uso de uma instncia
da classe FuncionarioSimples. . . . . . . . . . . . . . . . . . . . . . . . .
A classe Pessoa, que encapsula os dados de identificao de uma pessoa. .
A classe Funcionario, que encapsula os dados bsicos de um funcionrio
de uma empresa e herda da classe Pessoa. . . . . . . . . . . . . . . . . . .
A classe ChefeDeDepartamento, que encapsula os dados bsicos de um
chefe de um departamento de uma empresa e que herda da classe Funcionario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A classe ObjetoSimulado, que encapsula os dados de um objeto genrico
em um simulador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A classe ObjetoMovelSimulado, que encapsula os dados de um objeto simulado que pode se mover. . . . . . . . . . . . . . . . . . . . . . . . . . . .
O enumerador DirecoesSimulador, que lista os possveis valores para a
direo para movimento de um objeto simulado. . . . . . . . . . . . . . . .
A classe ObjetoRoboSimulado, que herda da classe ObjetoMovelSimulado
e que representa um rob simulado. . . . . . . . . . . . . . . . . . . . . . .
A classe SimuladorSimples, que cria e usa algumas instncias de classes
que herdam de ObjetoSimulado. . . . . . . . . . . . . . . . . . . . . . . .
A classe ObjetoRoboPesadoSimulado, que herda de ObjetoRoboSimulado.
A classe SimuladorSimplesRobos, que cria e usa algumas instncias de
ObjetoRoboSimulado e ObjetoRoboPesadoSimulado. . . . . . . . . . . . .
A classe Pessoa (segunda verso). . . . . . . . . . . . . . . . . . . . . . . .
A classe Funcionario (segunda verso). . . . . . . . . . . . . . . . . . . .
A classe ChefeDeDepartamento (segunda verso). . . . . . . . . . . . . . .
A classe SimuladorPolimorfismo, que demonstra polimorfismo com instncias de ObjetoSimulado e classes herdeiras. . . . . . . . . . . . . . . . .
A classe EmprestimoBancario, que demonstra implementao de mtodos
com polimorfismo e sobrecarga. . . . . . . . . . . . . . . . . . . . . . . . .
A classe EmprestimoBancarioComCast, que demonstra implementao de
mtodos com polimorfismo e cast de instncias. . . . . . . . . . . . . . . .
Trecho de cdigo que demonstra algumas regras de cast de instncias de
classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
135
137
139
140
141
142
143
146
147
149
154
156
157
157
159
161
162
165
166
168
170
172
175
177
i
i
i
POO-2ED 2013/8/5 9:15 page xix #19
10.1
10.2
10.3
181
182
183
184
185
186
187
189
191
192
194
195
196
197
198
199
200
202
203
204
205
i
i
i
POO-2ED 2013/8/5 9:15 page xx #20
11.1
11.2
11.3
11.4
11.5
11.6
11.7
11.8
212
213
215
217
217
219
221
223
223
225
226
228
229
231
233
237
238
241
246
247
249
250
250
i
i
i
POO-2ED 2013/8/5 9:15 page xxi #21
254
256
257
259
261
262
263
265
266
266
267
269
270
272
272
274
275
276
278
279
280
282
283
284
i
i
i
POO-2ED 2013/8/5 9:15 page xxii #22
A.1
A.2
A.3
285
285
287
288
289
A classe Keyboard, que permite a leitura de valores simples via teclado. . . 292
A classe UsaKeyboard, que demonstra o uso da classe Keyboard. . . . . . . 303
Um exemplo de arquivo de respostas para uso com a classe UsaKeyboard. . 308
Lista de Tabelas
2.1
2.2
22
25
i
i