Java Como Programar

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Author(s): Paul Deitel; Harvey Deitel
Edition: 8 Edição
Publisher: Pearson education
Year: 2010

Language: Portuguese
Pages: 1180

Prefácio......Page 19
Antes de você começar......Page 29
1. Introdução aos computadores, à Internet e à World Wide Web......Page 33
1.1 Introdução......Page 34
1.3 Organização do computador......Page 35
1.5 Computação pessoal distribuída e computação cliente/servidor......Page 36
1.7 Linguagens de máquina, linguagens assembly e linguagens de alto nível......Page 37
1.9 História do Java......Page 38
1.11 Fortran, Cobol, Pascal e Ada......Page 39
1.13 Ambiente típico de desenvolvimento Java......Page 40
1.15 Testando um aplicativo Java......Page 43
1.16 Estudo de caso de engenharia de software: introdução à tecnologia de objetos e à UML......Page 47
1.17 Web 2.0......Page 49
1.18 Tecnologias de software......Page 50
1.20 Recursos da Web......Page 51
2. Introdução aos aplicativos Java......Page 60
2.2 Nosso primeiro programa Java: imprimindo uma linha de texto......Page 61
2.3 Modificando nosso primeiro programa Java......Page 66
2.4 Exibindo texto com printf......Page 67
2.5 Outro aplicativo: somando inteiros......Page 68
2.6 Conceitos de memória......Page 72
2.7 Aritmética......Page 73
2.8 Tomada de decisão: operadores de igualdade e operadores relacionais......Page 75
2.9 Conclusão......Page 79
3. Introdução a classes e objetos......Page 88
3.2 Classes, objetos, métodos e variáveis de instância......Page 89
3.3 Declarando uma classe com um método e instanciando um objeto de uma classe......Page 90
3.4 Declarando um método com um parâmetro......Page 93
3.5 Variáveis de instância, métodos set e get......Page 95
3.6 Tipos primitivos versus tipos por referência......Page 99
3.7 Inicializando objetos com construtores......Page 100
3.8 Números de ponto flutuante e tipo double......Page 102
3.9 (Opcional) Estudo de caso de GUI e imagens gráficas: utilizando caixas de diálogo......Page 105
3.10 Conclusão......Page 107
4. Instruções de controle: Parte I......Page 113
4.3 Pseudocódigo......Page 114
4.4 Estruturas de controle......Page 115
4.5 A instrução de seleção única if......Page 116
4.6 A instrução de seleção dupla if...else......Page 117
4.7 A instrução de repetição while......Page 120
4.8 Formulando algoritmos: repetição controlada por contador......Page 121
4.9 Formulando algoritmos : repetição controlada por sentinela......Page 125
4.10 Formulando algoritmos: instruções de controle aninhadas......Page 131
4.12 Operadores de incremento e decremento......Page 134
4.14 (Opcional) Estudo de caso de GUI e imagens gráficas: criando desenhos simples......Page 137
4.15 Conclusão......Page 140
5. Instruções de controle: Parte 2......Page 151
5.2 Princípios básicos de repetição controlada por contador......Page 152
5.3 Instrução de repetição for......Page 153
5.4 Exemplos com a estrutura for......Page 156
5.5 Instrução de repetição do…while......Page 159
5.6 A estrutura de seleção múltipla switch......Page 161
5.7 Instruções break e continue......Page 166
5.8 Operadores lógicos......Page 168
5.9 Resumo de programação estruturada......Page 172
5.10 (Opcional) Estudo de caso de GUI e imagens gráficas: desenhando retângulos e ovais......Page 176
5.11 Conclusão......Page 179
6. Métodos: uma visão mais aprofundada......Page 186
6.2 Módulos de programa em Java......Page 187
6.3 Métodos static, campos static e classe Math......Page 188
6.4 Declarando métodos com múltiplos parâmetros......Page 190
6.6 Pilha de chamadas de método e registros de ativação......Page 193
6.7 Promoção e coerção de argumentos......Page 194
6.8 Pacotes da Java API......Page 195
6.9 Estudo de caso: geração de números aleatórios......Page 196
6.10 Estudo de caso: um jogo de azar; introdução a enumerações......Page 200
6.11 Escopo das declarações......Page 204
6.12 Sobrecarga de método......Page 206
6.13 (Opcional) Estudo de caso de GUI e imagens gráficas: cores e formas preenchidas......Page 208
6.14 Conclusão......Page 211
7. Arrays e ArrayLists......Page 221
7.2 Arrays......Page 222
7.3 Declarando e criando arrays......Page 223
7.4 Exemplos que utilizam arrays......Page 224
7.5 Estudo de caso: simulação de embaralhamento e distribuição de cartas......Page 231
7.6 A estrutura for aprimorada......Page 234
7.7 Passando arrays para métodos......Page 235
7.8 Estudo de caso: classe GradeBook utilizando um array para armazenar notas......Page 237
7.9 Arrays multidimensionais......Page 241
7.10 Estudo de caso: classe GradeBook utilizando um array bidimensional......Page 244
7.11 Listas de argumentos de comprimento variável......Page 249
7.12 Utilizando argumentos de linha de comando......Page 250
7.13 Classe Arrays......Page 251
7.14 Introdução a coleções e classe ArrayList......Page 253
7.15 (Opcional) Estudo de caso de GUI e imagens gráficas: desenhando arcos......Page 255
7.16 Conclusão......Page 257
8. Classes e objetos:uma visão mais aprofundada......Page 273
8.2 Estudo de caso da classe Time......Page 274
8.3 Controlando o acesso a membros......Page 277
8.4 Referenciando membros do objeto atual com a referência this......Page 278
8.5 Estudo de caso da classe Time: construtores sobrecarregados......Page 280
8.7 Notas sobre os métodos set e get......Page 284
8.8 Composição......Page 285
8.9 Enumerações......Page 288
8.11 Membros da classe static......Page 290
8.12 Importação static......Page 293
8.13 Variáveis de instância fi nal......Page 294
8.14 Estudo de caso da classe Time: criando pacotes......Page 296
8.15 Acesso de pacote......Page 299
8.16 (Opcional) Estudo de caso de GUI e imagens gráficas: utilizando objetos com imagens gráficas......Page 301
8.17 Conclusão......Page 303
9. Programação orientada a objetos: herança......Page 310
9.2 Superclasses e subclasses......Page 311
9.4 Relacionamento entre superclasses e subclasses......Page 313
9.6 Engenharia de software com herança......Page 329
9.7 Classe Object......Page 330
9.8 (Opcional) Estudo de caso de GUI e imagens gráficas: exibindo texto e imagens com rótulos......Page 331
9.9 Conclusão......Page 333
10. Programação orientada a objetos: polimorfismo......Page 336
10.1 Introdução......Page 337
10.2 Exemplos de polimorfismo......Page 338
10.3 Demonstrando um comportamento polimórfico......Page 339
10.4 Classes e métodos abstratos......Page 341
10.5 Estudo de caso: sistema de folha de pagamentos utilizando polimorfismo......Page 342
10.7 Estudo de caso: criando e utilizando interfaces......Page 353
10.8 (Opcional) Estudo de caso de GUIs e imagens gráficas: desenhando compolimorfismo......Page 362
10.9 Conclusão......Page 363
11. Tratamento de exceções......Page 367
11.2 Visão geral do tratamento de erros......Page 368
11.3 Exemplo de divisão por zero sem tratamento de exceções......Page 369
11.4 Exemplo de tratamento de ArithmeticExceptions e InputMismatchExceptions......Page 371
11.5 Quando usar tratamento de exceções......Page 374
11.6 Hierarquia de exceções no Java......Page 375
11.7 Bloco finally......Page 377
11.8 Desempilhamento de pilha......Page 380
11.9 printStackTrace, getStackTrace e getMessage......Page 381
11.10 Exceções encadeadas......Page 383
11.11 Declarando novos tipos de exceção......Page 385
11.13 Assertivas......Page 386
11.14 Conclusão......Page 387
12. Estudo de caso de ATM, Parte 1: projeto orientado a objetos com UML......Page 392
12.2 Examinando o documento de requisitos......Page 393
12.3 Identificando classes em um documento de requisitos......Page 398
12.4 Identificando atributos de classe......Page 403
12.5 Identificando estados e atividades dos objetos......Page 406
12.6 Identificando operações de classe......Page 409
12.7 Indicando colaboração entre objetos......Page 414
12.8 Conclusão......Page 419
13. Estudo de caso de ATM, Parte 2: Implementando um projeto orientado a objetos......Page 422
13.2 Começando a programar as classes do sistema ATM......Page 423
13.3 Incorporando herança e polimorfismo ao sistema ATM......Page 427
13.4 Implementação do estudo de caso de ATM......Page 431
13.5 Conclusão......Page 448
14. Componentes GUI: Parte 1......Page 450
14.1 Introdução......Page 451
14.2 A nova interface Nimbus do Java......Page 452
14.3 Entrada/saída baseada em GUI simples com JOptionPane......Page 453
14.4 Visão geral de componentes Swing......Page 455
14.5 Exibição de texto e imagens em uma janela......Page 457
14.6 Campos de texto e uma introdução ao tratamento de evento com classes aninhadas......Page 460
14.7 Tipos comuns de eventos GUI e interfaces ouvintes......Page 465
14.8 Como o tratamento de evento funciona......Page 466
14.9 JButton......Page 467
14.10 Botões que mantêm o estado......Page 470
14.11 JComboBox e uso de uma classe interna anônima para tratamento de evento......Page 475
14.12 JList......Page 477
14.13 Listas de seleção múltipla......Page 479
14.14 Tratamento de evento de mouse......Page 481
14.15 Classes adaptadoras......Page 484
14.16 Subclasse Jpanel para desenhar com o mouse......Page 487
14.17 Tratamento de evento-chave......Page 490
14.18 Introdução a gerenciadores de layout......Page 492
14.19 Utilizando painéis para gerenciar layouts mais complexos......Page 499
14.20 JTextArea......Page 500
14.21 Conclusão......Page 503
15. Imagens gráficas e Java 2D™......Page 515
15.2 Contextos gráficos e objetos gráficos......Page 516
15.3 Controle de cor......Page 518
15.4 Manipulando fontes......Page 523
15.5 Desenhando linhas, retângulos e ovais......Page 527
15.6 Desenhando arcos......Page 530
15.7 Desenhando polígonos e polilinhas......Page 532
15.8 Java 2D API......Page 535
15.9 Conclusão......Page 540
16. Strings, caracteres e expressões regulares......Page 547
16.2 Fundamentos de caracteres e strings......Page 548
16.3 Classe String......Page 549
16.4 Classe StringBuilder......Page 558
16.5 Classe Character......Page 563
16.6 Tokenização de Strings......Page 567
16.7 Expressões regulares, classe Pattern e classe Matcher......Page 568
16.8 Conclusão......Page 574
17. Arquivos, fluxos e serialização de objetos......Page 583
17.2 Hierarquia de dados......Page 584
17.3 Arquivos e fluxos......Page 586
17.4 Classe File......Page 587
17.5 Arquivos de texto de acesso sequencial......Page 590
17.6 Serialização de objetos......Page 601
17.7 Classes java.io adicionais......Page 608
17.8 Abrindo arquivos com JFileChooser......Page 610
17.9 Conclusão......Page 613
18. Recursão......Page 621
18.1 Introdução......Page 622
18.3 Exemplo que utiliza recursão: fatoriais......Page 623
18.4 Exemplo que utiliza recursão: série de Fibonacci......Page 626
18.5 Recursão e a pilha de chamadas de método......Page 628
18.6 Recursão vs. iteração......Page 629
18.7 Torres de Hanói......Page 630
18.8 Fractais......Page 632
18.9 Retorno recursivo......Page 639
18.10 Conclusão......Page 640
19. Pesquisa, classifIcação e Big O......Page 646
19.2 Algoritmos de pesquisa......Page 647
19.3 Algoritmos de classificação......Page 654
19.4 Conclusão......Page 664
20. Coleções genéricas......Page 668
20.2 Visão geral das coleções......Page 669
20.4 Autoboxing e auto-unboxing......Page 670
20.6 Listas......Page 671
20.7 Métodos de coleções......Page 677
20.8 Classe Stack do pacote java.util......Page 686
20.9 Classe PriorityQueue e interface Queue......Page 687
20.10 Conjuntos......Page 688
20.11 Mapas......Page 690
20.12 Classe Properties......Page 693
20.13 Coleções sincronizadas......Page 695
20.15 Implementações abstratas......Page 696
20.16 Conclusão......Page 697
21. Classes e métodos genéricos......Page 702
21.2 Motivação para métodos genéricos......Page 703
21.3 Métodos genéricos: implementação e tradução em tempo de compilação......Page 705
21.4 Questões adicionais da tradução em tempo de compilação: métodos que utilizam um parâmetro de tipo como tipo de retorno......Page 707
21.5 Sobrecarregando métodos genéricos......Page 709
21.6 Classes genéricas......Page 710
21.7 Tipos brutos......Page 715
21.8 Curingas em métodos que aceitam parâmetros de tipo......Page 719
21.10 Conclusão......Page 722
22. Estruturas de dados genéricas personalizadas......Page 726
22.2 Classes autorreferenciais......Page 727
22.4 Listas vinculadas......Page 728
22.5 Pilhas......Page 736
22.6 Filas......Page 739
22.7 Árvores......Page 741
22.8 Conclusão......Page 746
23. Applets e Java Web Start......Page 754
23.2 Applets de exemplo fornecidas com o JDK......Page 755
23.3 Applet Java simples: desenhando uma string......Page 759
23.4 Métodos de ciclo de vida de applet......Page 762
23.5 Inicializando uma variável de instância com o método init......Page 763
23.6 Modelo de segurança da caixa de areia......Page 764
23.7 Java Web Start e o Java Network Launch Protocol (JNLP)......Page 765
23.8 Conclusão......Page 769
24. Multimídia: applets e aplicativos......Page 774
24.2 Carregando, exibindo e dimensionando imagens......Page 775
24.3 Animação de uma série de imagens......Page 780
24.4 Mapas de imagem......Page 785
24.5 Carregando e reproduzindo clipes de áudio......Page 788
24.6 Reproduzindo vídeo e outros tipos de mídia com o Java Media Framework......Page 790
24.8 Recursos da Web......Page 793
25. Componentes GUI: Parte 2......Page 800
25.2 JSlider......Page 801
25.3 Windows: notas adicionais......Page 804
25.4 Utilizando menus com frames......Page 805
25.5 JPopupMenu......Page 811
25.6 Aparência e comportamento plugável......Page 813
25.7 JDesktopPane e JInternalFrame......Page 816
25.8 JTabbedPane......Page 819
25.9 Gerenciadores de layout: BoxLayout e GridBagLayout......Page 821
25.10 Conclusão......Page 830
26. Multithreading......Page 835
26.1 Introdução......Page 836
26.2 Estados de thread: ciclo de vida de uma thread......Page 837
26.3 Prioridades de thread e agendamento de thread......Page 839
26.4 Criando e executando threads......Page 840
26.5 Sincronização de thread......Page 844
26.6 Relacionamento entre produtor e consumidor sem sincronização......Page 850
26.7 Relacionamento de produtor/consumidor: ArrayBlockingQueue......Page 855
26.8 Relacionamento entre produtor e consumidor com sincronização......Page 857
26.9 Relacionamento de produtor/consumidor: buffers limitados......Page 861
26.10 Relacionamento de produtor/consumidor: as interfaces Lock e Condition......Page 867
26.11 Multithreading com GUI......Page 872
26.13 Conclusão......Page 883
27. Redes......Page 890
27.1 Introdução......Page 891
27.2 Manipulando URLs......Page 892
27.3 Lendo um arquivo em um servidor da Web......Page 895
27.4 Estabelecendo um servidor simples utilizando sockets de fluxo......Page 898
27.5 Estabelecendo um cliente simples utilizando sockets de fluxo......Page 899
27.6 Interação cliente/servidor com conexões de socket de fluxo......Page 900
27.7 Interação cliente/servidor sem conexão com datagramas......Page 909
27.8 Jogo da velha cliente/servidor que utiliza um servidor com multithread......Page 914
27.10 Conclusão......Page 925
28. Acesso a bancos de dados com o JDBC......Page 930
28.1 Introdução......Page 931
28.3 Visão geral de um banco de dados relacional: o banco de dados books......Page 932
28.4 SQL......Page 935
28.6 Instruções para configuração de uma conta de usuário MySQL......Page 942
28.8 Manipulando bancos de dados com o JDBC......Page 943
28.9 Interface RowSet......Page 956
28.10 Java DB/Apache Derby......Page 958
28.11 PreparedStatements......Page 959
28.12 Procedures armazenadas......Page 970
28.15 Recursos da Web......Page 971
29. Aplicativos Web JavaServer™Faces......Page 978
29.2 Transações HTTP simples......Page 979
29.4 Tecnologias Web Java......Page 982
29.5 Criando e executando um aplicativo simples no NetBeans......Page 984
29.6 Componentes JSF......Page 993
29.7 Monitoramento de sessão......Page 1002
29.8 Conclusão......Page 1018
30. Aplicativos Web JavaServer™Faces compatíveis com Ajax......Page 1026
30.2 Acessando bancos de dados em aplicativos Web......Page 1027
30.3 Componentes JSF compatíveis com o Ajax......Page 1037
30.4 Criando um Text Field de autocompletamento e utilizando formulários virtuais......Page 1038
30.5 Conclusão......Page 1045
31. Serviços Web......Page 1049
31.1 Introdução......Page 1050
31.3 Simple Object Access Protocol (SOAP)......Page 1051
31.6 Publicando e consumindo serviços Web baseados em SOAP......Page 1052
31.7 Publicando e consumindo serviços Web XML baseados em REST......Page 1060
31.8 Publicando e consumindo serviços Web JSON baseados em REST......Page 1064
31.9 Rastreamento de sessão em um serviço Web baseado em SOAP......Page 1067
31.10 Consumindo um serviço Web baseado em SOAP orientado a banco dedados......Page 1077
31.11 Gerador de equação: retornando tipos definidos pelo usuário......Page 1083
31.12 Conclusão......Page 1091
Apêndices A. Tabela de precedênciade operadores......Page 1098
Apêndices B. Conjunto de caracteres ASCII......Page 1100
Apêndice C. Palavras-chave epalavras reservadas......Page 1101
Apêndices D. Tipos primitivos......Page 1102
E.2 Navegando pela Java API......Page 1103
Apêndices F. Utilizando o depurador......Page 1109
F.2 Pontos de interrupção e os comandos run, stop, cont e print......Page 1110
F.3 Os comandos print e set......Page 1113
F.4 Controlando a execução utilizando os comandos step, step up e next......Page 1114
F.5 O comando watch......Page 1117
F.6 O comando clear......Page 1118
F.7 Resumo......Page 1120
Apêndices G. Saída formatada......Page 1122
G.3 Formatando a saída com printf......Page 1123
G.5 Imprimindo números de ponto flutuante......Page 1124
G.7 Imprimindo datas e horas......Page 1126
G.8 Outros caracteres de conversão......Page 1128
G.9 Imprimindo com larguras e precisões de campos......Page 1130
G.10 Utilizando flags na string de formato printf......Page 1131
G.11 Imprimindo com índices de argumento......Page 1134
G.13 Formatando saída com a classe Formatter......Page 1135
G.14 Conclusão......Page 1136
Apêndice Q. Padrões de design......Page 1141
Índice remissivo......Page 1142