10

Programação Java™artutor.teiemt.gr/wp-content/uploads/2020/03/java-10-012591-XDzrjbj… · Excelente introdução [opcional] à programação funcional com lambdas e ˜ uxos!

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programação Java™artutor.teiemt.gr/wp-content/uploads/2020/03/java-10-012591-XDzrjbj… · Excelente introdução [opcional] à programação funcional com lambdas e ˜ uxos!

10a EDIÇÃOP

AU

L D

EIT

EL

HA

RV

EY

DE

ITE

L

ISBN 978-85-430-0479-2

Com

putação/P

rogramação

l o j a . p e a r s o n . c om . b r

sv.pearson.com.brA Sala Virtual oferece, para professores, apresentações em PowerPoint, manual de soluções (em inglês) e atividades experimentais (em inglês). Para estudantes, código-fonte dos exemplos apresentados no livro, apêndices e capítulos complementares (em inglês).

Este livro também está disponível para compra em formato e-book. Para adquiri-lo, acesse nosso site.

9788543004792

• Rica cobertura dos fundamentos com exemplos reais.

• Apresentação com ênfase inicial em classes e objetos.

• Uso com Java™ SE 7, Java™ SE 8 ou ambos.

• Java™ SE 8 abordado em seções modulares opcionais.

• Lambdas, � uxos e interfaces funcionais usando métodos padrão e estáticos do Java SE 8.

• Swing e GUI do JavaFX: elementos grá� cos e multimídia.

• Conjunto de exercícios Fazendo a diferença.

• Tratamento de exceções integrado.

• Arquivos, � uxos e serialização de objetos.

• Concorrência para melhor desempenho com multiprocessamento.

• O livro contém o conteúdo principal para cursos introdutórios.

• Outros tópicos: recursão, pesquisa, classi� cação, coleções genéricas, estruturas de dados, multithreading, banco de dados (JDBC ™ e JPA).

Programação Java™:

�Traz aos novos programadores o conhecimento proveniente de muitos anos de experiência no desenvolvimento de softwares!�—Edward F. Gehringer, North Carolina State University

�Java: como programar introduz noções de boas práticas de projetos e metodologias desde o começo. É um excelente ponto de partida para o desenvolvimento de aplicações Java robustas e de alta qualidade.�—Simon Ritter, Oracle Corporation

�Os exemplos do mundo real podem ser usados com Java SE 7 ou 8, permitindo � exibilidade aos alunos e professores; ótimos estudos de caso em que os professores podem se basear para desenvolver mais.�—Khallai Taylor, Triton College and Lonestar College—Kingwood

�Uma excelente visão geral de como a concorrência pode ajudar os desenvolvedores; é de leitura agradável e concentra-se em alavancar os processadores multiprocessados.�—Johan Vos, LodgON and Java Champion

�Um ótimo livro-texto com uma enorme variedade de exemplos de diversos domínios de aplicações — excelente para um curso de ciência da computação.�—William E. Duncan, Louisiana State University

�Este livro é maravilhoso se você quer aprender a programar em Java SE 8.�—Jorge Vargas, Yumbling and a Java Champion

�Excelente introdução [opcional] à programação funcional com lambdas e � uxos!�—Manfred Riem, Java Champion

�Excelente capítulo sobre JavaFX. O primeiro capítulo sobre JavaFX fornece uma ótima introdução — o sucessor do Swing. Um tratamento muito impressionante é dado a muitos conceitos JavaFX, desde desenvolver um aplicativo simples sem escrever nenhum código até o desenvolvimento de um aplicativo que contém uma grande variedade de elementos de interface grá� ca do usuário.�—James L. Weaver, Oracle Java Evangelist and author of Pro JavaFX 2

Comentários dos revisores das últimas edições

Milhões de alunos e pro� ssionais aprenderam programação e desenvolvimento de software com os livros Deitel®. Java: como programar, 10a edição, fornece uma introdução clara, simples, envolvente e divertida à programação Java com ênfase inicial em objetos. Destaques incluem:

CVR_DEIT4792_10_CVR.indd All Pages 29/06/2016 10:49:13

Page 2: Programação Java™artutor.teiemt.gr/wp-content/uploads/2020/03/java-10-012591-XDzrjbj… · Excelente introdução [opcional] à programação funcional com lambdas e ˜ uxos!

0jhtp.indb 1 07/07/2016 15:17:59

Page 3: Programação Java™artutor.teiemt.gr/wp-content/uploads/2020/03/java-10-012591-XDzrjbj… · Excelente introdução [opcional] à programação funcional com lambdas e ˜ uxos!

0jhtp.indb 2 07/07/2016 15:17:59

Page 4: Programação Java™artutor.teiemt.gr/wp-content/uploads/2020/03/java-10-012591-XDzrjbj… · Excelente introdução [opcional] à programação funcional com lambdas e ˜ uxos!

Paul DeitelDeitel & Associates, Inc.

Harvey DeitelDeitel & Associates, Inc.

Tradutor:

Edson Furmankiewicz

Docware Traduções Técnicas

Revisão técnica:Fábio Luis Picelli Lucchini

Bacharel em Ciência da Computação pelo Centro Universitário Padre Anchieta

Mestre em Engenharia da Computação pela Unicamp (FEEC) Professor Universitário do Centro Universitário Padre Anchieta

0jhtp.indb 3 07/07/2016 15:18:00

Page 5: Programação Java™artutor.teiemt.gr/wp-content/uploads/2020/03/java-10-012591-XDzrjbj… · Excelente introdução [opcional] à programação funcional com lambdas e ˜ uxos!

©2017 by Pearson Education do Brasil Ltda.

Copyright © 2015, 2012, 2009 by Pearson Education, Inc.

Todos os direitos reservados. Nenhuma parte desta publicação poderá ser reproduzida ou

transmitida de qualquer modo ou por qualquer outro meio, eletrônico ou mecânico, incluindo

fotocópia, gravação ou qualquer outro tipo de sistema de armazenamento e transmissão de

informação, sem prévia autorização, por escrito, da Pearson Education do Brasil.

Muitas das designações utilizadas por fabricantes e vendedores para distinguir seus produtos

são protegidas como marcas comerciais. Onde essas aparecem no livro, e a editora estava ciente

de uma proteção de marca comercial, as designações foram impressas com a primeira letra ou

todas as letras maiúsculas. Os nomes de empresas e produtos mencionados neste livro são marcas

comerciais ou registradas de seus respectivos proprietários.

2016

Direitos exclusivos para a língua portuguesa cedidos à

Pearson Education do Brasil Ltda., uma empresa do grupo Pearson Education

Avenida Santa Marina, 1193 CEP 05036-001 - São Paulo - SP - Brasil

Fone: 11 3821-3542

[email protected]

DIRETORA DE PRODUTOS Gabriela Diuana

SUPERVISORA Silvana Afonso

COORDENADOR Vinícius Souza

EDITORA DE TEXTO Sabrina Levensteinas

EDITORA ASSISTENTE Karina Ono

PREPARAÇÃO Ana Mendes e Sérgio Nascimento

REVISÃO Márcia Nunes

CAPA Solange Rennó, sobre o projeto original de Paul

Deitel, Harvey Deitel, Abbey Deitel, Barbara Deitel

e Laura Gardner

PROJETO GRÁFICO E DIAGRAMAÇÃO Docware Traduções Técnicas

Dados Internacionais de Catalogação na Publicação (CIP)

(Câmara Brasileira do Livro, SP, Brasil)

Deitel, Paul

Java: como programar / Paul Deitel, Harvey Deitel; tradução Edson

Furmankiewicz; revisão técnica Fabio Lucchini. -- São Paulo: Pearson

Education do Brasil, 2017.

Título original: Java: how to program 10. ed. norte-americana. Bibliografia

ISBN 978-85-4301-905-51. Java (Linguagem de programação para computador) I. Deitel,

Harvey. II . Título.

16-01233 CDD-005.133

Índice para catálogo sistemático:

1. Java : Linguagem de programação: computadores: Processamento de

dados 005.133

0jhtp.indb 4 07/07/2016 15:18:00

Page 6: Programação Java™artutor.teiemt.gr/wp-content/uploads/2020/03/java-10-012591-XDzrjbj… · Excelente introdução [opcional] à programação funcional com lambdas e ˜ uxos!

Para Brian Goetz,

projeto Lambda do Java SE 8 da Oracle:

Paul e Harvey Deitel

0jhtp.indb 5 07/07/2016 15:18:00

Page 7: Programação Java™artutor.teiemt.gr/wp-content/uploads/2020/03/java-10-012591-XDzrjbj… · Excelente introdução [opcional] à programação funcional com lambdas e ˜ uxos!

0jhtp.indb 6 07/07/2016 15:18:00

Page 8: Programação Java™artutor.teiemt.gr/wp-content/uploads/2020/03/java-10-012591-XDzrjbj… · Excelente introdução [opcional] à programação funcional com lambdas e ˜ uxos!

Sumário

Apresentação xix

Prefácio xxi

Antes de começar xxxi

1 Introdução a computadores, internet e Java 11.1 Introdução 2

1.2 Hardware e software 31.2.1 Lei de Moore 41.2.2 Organização do computador 4

1.3 Hierarquia de dados 5

1.4 Linguagens de máquina, assembly e de alto nível 7

1.5 Introdução à tecnologia de objetos 81.5.1 O automóvel como um objeto 81.5.2 Métodos e classes 91.5.3 Instanciação 91.5.4 Reutilização 91.5.5 Mensagens e chamadas de método 91.5.6 Atributos e variáveis de instância 91.5.7 Encapsulamento e ocultamento de informações 91.5.8 Herança 91.5.9 Interfaces 101.5.10 Análise e projeto orientados a objetos (OOAD) 101.5.11 A UML (unified modeling language) 10

1.6 Sistemas operacionais 101.6.1 Windows — um sistema operacional proprietário 101.6.2 Linux — um sistema operacional de código-fonte aberto 111.6.3 Android 11

1.7 Linguagens de programação 11

1.8 Java 13

1.9 Um ambiente de desenvolvimento Java típico 13

1.10 Testando um aplicativo Java 16

1.11 Internet e World Wide Web 201.11.1 A internet: uma rede de redes 201.11.2 A World Wide Web: tornando a internet amigável ao usuário 211.11.3 Serviços web e mashups 211.11.4 Ajax 221.11.5 A internet das coisas 22

1.12 Tecnologias de software 22

1.13 Mantendo-se atualizado com as tecnologias da informação 23

0jhtp.indb 7 07/07/2016 15:18:00

Page 9: Programação Java™artutor.teiemt.gr/wp-content/uploads/2020/03/java-10-012591-XDzrjbj… · Excelente introdução [opcional] à programação funcional com lambdas e ˜ uxos!

viii Java: como programar

2 Introdução a aplicativos Java – entrada/saída e operadores 272.1 Introdução 28

2.2 Nosso primeiro programa Java: imprimindo uma linha de texto 28

2.3 Modificando nosso primeiro programa Java 33

2.4 Exibindo texto com printf 35

2.5 Outra aplicação: adicionando inteiros 362.5.1 Declarações import 372.5.2 Declarando a classe Addition 372.5.3 Declarando e criando um Scanner para obter entrada do usuário a partir do teclado 372.5.4 Declarando variáveis para armazenar números inteiros 382.5.5 Solicitando entrada ao usuário 382.5.6 Obtendo um int como entrada do usuário 392.5.7 Solicitando e inserindo um segundo int 392.5.8 Usando variáveis em um cálculo 392.5.9 Exibindo o resultado do cálculo 392.5.10 Documentação da Java API 40

2.6 Conceitos de memória 40

2.7 Aritmética 41

2.8 Tomada de decisão: operadores de igualdade e operadores relacionais 43

2.9 Conclusão 47

3 Introdução a classes, objetos, métodos e strings 553.1 Introdução 56

3.2 Variáveis de instância, métodos set e métodos get 563.2.1 Classe Account com uma variável de instância, um método set e um método get 563.2.2 Classe AccountTest que cria e usa um objeto da classe Account 593.2.3 Compilação e execução de um aplicativo com múltiplas classes 613.2.4 Diagrama de classe UML de Account com uma variável de instância e os métodos set e get 613.2.5 Notas adicionais sobre a classe AccountTest 623.2.6 Engenharia de software com variáveis de instância private e métodos set e get public 63

3.3 Tipos primitivos versus tipos por referência 64

3.4 Classe Account: inicialização de objetos com construtores 643.4.1 Declaração de um construtor Account para inicialização de objeto personalizado 643.4.2 Classe AccountTest: inicialização de objetos Account quando eles são criados 65

3.5 A classe Account com um saldo; números de ponto flutuante 663.5.1 A classe Account com uma variável de instância balance do tipo double 673.5.2 A classe AccountTest para utilizar a classe Account 68

3.6 (Opcional) Estudo de caso de GUIs e imagens gráficas: utilizando caixas de diálogo 70

3.7 Conclusão 73

4 Instruções de controle: parte 1; operadores de atribuição ++ e -- 794.1 Introdução 80

4.2 Algoritmos 80

4.3 Pseudocódigo 80

4.4 Estruturas de controle 81

4.5 A instrução de seleção única if 82

4.6 Instrução de seleção dupla if…else 83

4.7 Classe Student: instruções if…else aninhadas 87

4.8 Instrução de repetição while 89

4.9 Formulando algoritmos: repetição controlada por contador 90

4.10 Formulando algoritmos: repetição controlada por sentinela 93

4.11 Formulando algoritmos: instruções de controle aninhadas 98

4.12 Operadores de atribuição compostos 102

0jhtp.indb 8 07/07/2016 15:18:00

Page 10: Programação Java™artutor.teiemt.gr/wp-content/uploads/2020/03/java-10-012591-XDzrjbj… · Excelente introdução [opcional] à programação funcional com lambdas e ˜ uxos!

Sumário ix

4.13 Operadores de incremento e decremento 102

4.14 Tipos primitivos 105

4.15 (Opcional) Estudo de caso de GUIs e imagens gráficas: criando desenhos simples 105

4.16 Conclusão 108

5 Instruções de controle: parte 2; operadores lógicos 1195.1 Introdução 120

5.2 Princípios básicos de repetição controlada por contador 120

5.3 Instrução de repetição for 121

5.4 Exemplos com a estrutura for 125

5.5 Instrução de repetição do…while 128

5.6 A estrutura de seleção múltipla switch 130

5.7 Estudo de caso da classe AutoPolicy: Strings em instruções switch 134

5.8 Instruções break e continue 137

5.9 Operadores lógicos 138

5.10 Resumo de programação estruturada 143

5.11 (Opcional) Estudo de caso de GUIs e imagens gráficas: desenhando retângulos e ovais 147

5.12 Conclusão 149

6 Métodos: um exame mais profundo 1576.1 Introdução 158

6.2 Módulos de programa em Java 158

6.3 Métodos static, campos static e classe Math 160

6.4 Declarando métodos com múltiplos parâmetros 161

6.5 Notas sobre a declaração e utilização de métodos 164

6.6 Pilhas de chamadas de método e quadros de pilha 165

6.7 Promoção e coerção de argumentos 165

6.8 Pacotes de Java API 166

6.9 Estudo de caso: geração segura de números aleatórios 167

6.10 Estudo de caso: um jogo de azar; apresentando tipos enum 171

6.11 Escopo das declarações 175

6.12 Sobrecarga de método 176

6.13 (Opcional) Estudo de caso de GUIs e imagens gráficas: cores e formas preenchidas 178

6.14 Conclusão 181

7 Arrays e ArrayLists 1917.1 Introdução 192

7.2 Arrays 192

7.3 Declarando e criando arrays 194

7.4 Exemplos que utilizam arrays 1957.4.1 Criando e inicializando um array 1957.4.2 Utilizando um inicializador de array 1957.4.3 Calculando os valores para armazenar em um array 1967.4.4 Somando os elementos de um array 1977.4.5 Utilizando gráficos de barras para exibir dados de array graficamente 1987.4.6 Utilizando os elementos de um array como contadores 1997.4.7 Utilizando os arrays para analisar resultados de pesquisas 200

7.5 Tratamento de exceções: processando a resposta incorreta 2017.5.1 A instrução try 2027.5.2 Executando o bloco catch 2027.5.3 O método toString do parâmetro de exceção 202

7.6 Estudo de caso: simulação de embaralhamento e distribuição de cartas 202

0jhtp.indb 9 07/07/2016 15:18:00