Sumário. Introdução... xvi. 1 Fundamentos da linguagem Java... 1

Documentos relacionados
Java Básico. Carga Horária: 32 horas. Pré-requisito: Lógica de Programação; JAVA. Conteúdo Programático

Sumário. Capítulo 1 Introdução 29. Capítulo 2 Utilizando Objetos 59

SUMÁRIO CAPÍTULO 1 INTRODUÇÃO AO JAVA...1

Sumário. Capítulo 1 Fundamentos da programação Java 3 PARTE I A LINGUAGEM JAVA 1

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

CONTEÚDO PROGRAMÁTICO

1) DADOS DA OBRA: Programando em Java 2 Teoria e Aplicações Rui Rossi dos Santos 2004 Axcel Books (

PACOTE COM OS CURSOS (LÓGICA DE PROGRAMAÇÃO PROGRAMAÇÃO ORIENTADA A OBJETOS SQL BÁSICO JAVA BÁSICO JAVA AVANÇADO)

Linguagem Java - Introdução

Sumário. Introdução 1

Sumário. 1 Introdução 1. Parte um: A linguagem Objective-C 2 Programação com Objective-C 7. 3 Classes, objetos e métodos 27

No final deste curso, saberás criar programas através da linguagem de programação Java.

Tipos, Literais, Operadores

Tipos, Literais, Operadores

CONTEÚDO PROGRAMÁTICO

Palavras Reservadas da Linguagem Java

Programação de Computadores II TCC Turma A-1

Linguagem de Programação II Implementação

Linguagem de Programação III

Programação Orientada a Objetos SANTOS, Rafael (PLT)

Módulo 03. Identificadores, Palavras Reservadas, e Tipos

Desenvolva de qualquer sistema operacional para qualquer sistema operacional. Sem limites.

Tipos Primitivos, estruturas de iteração e decisão.

JAVA. Professor: Bruno Toledo

Sumário. Parte I JavaScript básica. 1 Introdução a JavaScript Estrutura léxica Tipos, valores e variáveis... 28

Lição 4 Fundamentos da programação

Análise de Programação

Noçõ linguagem Java. Profs. Marcel Hugo e Jomi Fred Hübner. Departamento de Sistemas e Computação Universidade Regional de Blumenau - FURB

Unidade 7: Documentação de Código A Importância dos Comentários Prof. Daniel Caetano

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

Java 2 Standard Edition Tipos, literais, operadores e controle de fluxo

Classes e Objetos. Sintaxe de classe em Java

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

MsC. João Maria MsC. Liviane Melo

Programação Estruturada e Orientada a Objetos

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

CONTEÚDO PROGRAMÁTICO

Curso Profissional de Técnico de Informática - Sistemas

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Notas de Aula 09: Tratamento de exceções

Formação JAVA Web.

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Introdução à Programação para Dispositivos Móveis

Modelo de plano analitico

Java. Guia do Programador. Peter Jandl Junior. Novatec

Aula 1 POO 1 Prática. Profa. Elaine Faria UFU

Revisão da Linguagem C Prof. Evandro L. L. Rodrigues

PLANIFICAÇÃO

Notas de Aula 01: Introdução à linguagem de programação Java e ao ambiente de desenvolvimento NetBeans

Programação Orientada a Objetos II

Fundamentos de programação

Programação com Acesso a BD. Programação com OO Acesso em Java

Criando Relatórios com PHP Pablo Dall Oglio

CONTEÚDO PROGRAMÁTICO

Variáveis primitivas e Controle de fluxo

Linguagem de Programação III

Programação de Computadores - I. Profª Beatriz Profº Israel

Linguagem Java. Introdução. Rosemary Silveira Filgueiras Melo

Dmitry Jemerov e Svetlana Isakova. Novatec

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Introdução à Linguagem de Programação Java 1 INTRODUÇÃO À LINGUAGEM DE PROGRAMAÇÃO JAVA

Material III-Bimestre Introdução e conceitos fundamentais da Linguagem C#

Linguagens de Programação I

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Programação Orientada a Objetos II Java Segunda aula. Prof. Rogério Albuquerque de Almeida

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S

Aula 9 Herança. Prof. Jefersson Alex dos Santos

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

Tratamento de Exceções. LPG II Java. Tratamento de Exceções. Conceito de Exceções. Exemplo

Programação Orientada a Objetos

Orientação a Objetos e Java

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

Programação científica C++

Transcrição:

Introdução... xvi 1 Fundamentos da linguagem Java... 1 Origem da linguagem Java... 3 Qual a relação entre Java, C e C++?... 4 Qual a relação entre Java e C#?... 4 Contribuições da linguagem Java para a Internet... 5 Applets Java... 5 Segurança... 5 Portabilidade... 6 O segredo da linguagem Java: o bytecode... 6 O jargão Java... 8 Programação orientada a objetos... 9 Encapsulamento... 10 Polimorfismo... 10 Herança... 11 Obtendo o Java Development Kit... 11 Um primeiro programa simples... 12 Inserindo o programa... 13 Compilando o programa... 13 Primeiro exemplo de programa linha a linha... 14 Tratando erros de sintaxe... 16 Um segundo programa simples... 17 Outro tipo de dado... 19

vi Sumário Tente Isto 1-1 Converta galões em litros... 20 Duas instruções de controle... 21 A instrução if... 22 O laço for... 23 Crie blocos de código... 25 Ponto e vírgula e posicionamento... 26 Práticas de recuo... 26 Tente Isto 1-2 Melhore o conversor... 27 As palavras-chave Java... 28 Identificadores em Java... 29 As bibliotecas de classes Java... 29 Teste do Capítulo 1... 30 2 Introdução a tipos de dados e operadores... 31 Por que os tipos de dados são importantes... 32 Tipos primitivos da linguagem Java... 32 Inteiros... 33 Tipos de ponto flutuante... 35 Caracteres... 35 O tipo booleano... 37 Tente Isto 2-1 Qual é a distância do relâmpago?... 38 Literais... 39 Literais hexadecimais, octais e binários... 39 Sequências de escape de caracteres... 40 Literais de strings... 40 Um exame mais detalhado das variáveis... 41 Inicializando uma variável... 42 Inicialização dinâmica... 42 Escopo e tempo de vida das variáveis... 43 Operadores... 45 Operadores aritméticos... 46 Incremento e decremento... 47 Operadores relacionais e lógicos... 48 Operadores lógicos de curto-circuito... 50 O operador de atribuição... 51 Atribuições abreviadas... 51 Conversão de tipos em atribuições... 53 Convertendo tipos incompatíveis... 54 Precedência de operadores... 56 Tente Isto 2-2 Tabela-verdade para os operadores lógicos... 56 Expressões... 58 Conversão de tipos em expressões... 58 Espaçamento e parênteses... 60 Teste do Capítulo 2... 60

vii 3 Instruções de controle de programa... 62 Caracteres de entrada do teclado... 63 A instrução if... 64 Ifs aninhados... 66 A escada if-else-if... 67 A instrução switch... 68 Instruções switch aninhadas... 71 Tente Isto 3-1 Construa um sistema de ajuda Java... 72 O laço for... 74 Algumas variações do laço for... 76 Partes ausentes... 77 O laço infinito... 78 Laços sem corpo... 78 Declarando variáveis de controle de laço dentro do laço for... 79 O laço for melhorado... 79 O laço while... 80 O laço do-while... 81 Tente Isto 3-2 Melhore o sistema de ajuda Java... 83 Use break para sair de um laço... 86 Use break como uma forma de goto... 88 Use continue... 92 Tente Isto 3-3 Termine o sistema de ajuda Java... 93 Laços aninhados... 97 Teste do Capítulo 3... 98 4 Introdução a classes, objetos e métodos... 100 Fundamentos das classes... 101 Forma geral de uma classe... 102 Definindo uma classe... 103 Como os objetos são criados... 106 As variáveis de referência e a atribuição... 106 Métodos... 107 Adicionando um método à classe Vehicle... 107 Retornando de um método... 110 Retornando um valor... 110 Usando parâmetros... 112 Adicionando um método parametrizado a Vehicle... 114 Tente Isto 4-1 Crie uma classe de ajuda... 116 Construtores... 121 Construtores parametrizados... 122 Adicionando um construtor à classe Vehicle... 123 O operador new revisitado... 124 Coleta de lixo... 125 O método finalize( )... 125

viii Sumário Tente Isto 4-2 Demonstre a coleta de lixo e a finalização... 126 A palavra-chave this... 129 Teste do Capítulo 4... 130 5 Mais tipos de dados e operadores... 132 Arrays... 133 Arrays unidimensionais... 134 Tente Isto 5-1 Classifique um array... 137 Arrays multidimensionais... 139 Arrays bidimensionais... 139 Arrays irregulares... 140 Arrays de três ou mais dimensões... 141 Inicializando arrays multidimensionais... 141 Sintaxe alternativa para a declaração de arrays... 142 Atribuindo referências de arrays... 143 Usando o membro length... 144 Tente Isto 5-2 Uma classe Queue... 146 O laço for de estilo for-each... 150 Iterando por arrays multidimensionais... 153 Aplicando o laço for melhorado... 154 Strings... 155 Construindo strings... 155 Operando com strings... 156 Arrays de strings... 158 Strings não podem ser alterados... 158 Usando um string para controlar uma instrução switch... 160 Usando argumentos de linha de comando... 161 Os operadores bitwise... 162 Os operadores bitwise AND, OR, XOR e NOT... 163 Os operadores de deslocamento... 167 Atribuições abreviadas bitwise... 169 Tente Isto 5-3 Uma classe ShowBits... 169 O operador?... 172 Teste do Capítulo 5... 174 6 Verificação minuciosa dos métodos e classes... 175 Controlando o acesso a membros de classes... 176 Modificadores de acesso da linguagem Java... 177 Tente Isto 6-1 Melhore a classe Queue... 181 Passe objetos para os métodos... 182 Como os argumentos são passados... 184 Retornando objetos... 186 Sobrecarga de métodos... 188 Sobrecarregando construtores... 193

ix Tente Isto 6-2 Sobrecarregue o construtor de Queue... 195 Recursão... 198 Entendendo os membros estáticos... 200 Blocos estáticos... 203 Tente Isto 6-3 A classificação rápida... 204 Introdução às classes aninhadas e internas... 206 Varargs: argumentos em quantidade variável... 209 Aspectos básicos dos varargs... 210 Sobrecarregando métodos varargs... 213 Varargs e ambiguidade... 214 Teste do Capítulo 6... 216 7 Herança... 218 Aspectos básicos de herança... 219 Acesso a membros e a herança... 222 Construtores e herança... 225 Usando super para chamar construtores da superclasse... 227 Usando super para acessar membros da superclasse... 231 Tente Isto 7-1 Estenda a classe Vehicle... 232 Criando uma hierarquia de vários níveis... 235 Quando os construtores são chamados?... 237 Referências da superclasse e objetos da subclasse... 239 Sobreposição de métodos... 243 Métodos sobrepostos dão suporte ao polimorfismo... 246 Por que sobrepor métodos?... 248 Aplicando a sobreposição de métodos a TwoDShape... 248 Usando classes abstratas... 252 Usando final... 256 A palavra-chave final impede a sobreposição... 256 A palavra-chave final impede a herança... 256 Usando final com membros de dados... 257 A classe Object... 258 Teste do Capítulo 7... 259 8 Pacotes e interfaces... 260 Pacotes... 261 Definindo um pacote... 262 Encontrando pacotes e CLASSPATH... 263 Exemplo breve de pacote... 263 Pacotes e o acesso a membros... 265 Exemplo de acesso a pacote... 266 Entendendo os membros protegidos... 267 Importando pacotes... 269 Biblioteca de classes Java fica contida em pacotes... 270 Interfaces... 271 Implementando interfaces... 272 Usando referências de interfaces... 276

x Sumário Tente Isto 8-1 Crie uma interface Queue... 277 Variáveis em interfaces... 283 Interfaces podem ser estendidas... 284 Métodos padrão das interfaces... 285 Fundamentos dos métodos padrão... 286 Um exemplo mais prático de um método padrão... 287 Problemas da herança múltipla... 289 Use métodos static em uma interface... 289 Considerações finais sobre os pacotes e interfaces... 290 Teste do Capítulo 8... 291 9 Tratamento de exceções... 292 Hierarquia de exceções... 294 Fundamentos do tratamento de exceções... 294 Usando try e catch... 295 Exemplo de exceção simples... 295 Consequências de uma exceção não capturada... 297 Exceções permitem que você trate erros normalmente... 299 Usando várias instruções catch... 299 Capturando exceções de subclasses... 300 Blocos try podem ser aninhados... 302 Lançando uma exceção... 303 Relançando uma exceção... 304 Exame mais detalhado de Throwable... 305 Usando finally... 306 Usando throws... 308 Três recursos das exceções adicionados recentemente... 309 Exceções internas da linguagem Java... 311 Criando subclasses de exceções... 313 Tente Isto 9-1 Adicione exceções à classe Queue... 315 Teste do Capítulo 9... 318 10 Usando I/O... 320 I/O Java é baseado em fluxos... 322 Fluxos de bytes e fluxos de caracteres... 322 Classes de fluxos de bytes... 322 Classes de fluxos de caracteres... 323 Fluxos predefinidos... 324 Usando os fluxos de bytes... 325 Lendo a entrada do console... 325 Gravando a saída do console... 327 Lendo e gravando arquivos usando fluxos de bytes... 328 Gerando entradas em um arquivo... 328 Gravando em um arquivo... 332 Fechando automaticamente um arquivo... 334 Lendo e gravando dados binários... 337

xi Tente Isto 10-1 Utilitário de comparação de arquivos... 340 Arquivos de acesso aleatório... 341 Usando os fluxos baseados em caracteres da linguagem Java... 343 Entrada do console com o uso de fluxos de caracteres... 344 Saída do console com o uso de fluxos de caracteres... 347 I/O de arquivo com o uso de fluxos de caracteres... 349 Usando um FileWriter... 349 Usando um FileReader... 350 Usando os encapsuladores de tipos da linguagem Java para converter strings numéricos... 351 Tente Isto 10-2 Criando um sistema de ajuda baseado em disco... 354 Teste do Capítulo 10... 360 11 Programação com várias threads... 362 Fundamentos do uso de várias threads... 363 A classe Thread e a interface Runnable... 364 Criando uma thread... 365 Algumas melhorias simples... 368 Tente Isto 11-1 Estendendo Thread... 370 Criando várias threads... 372 Determinando quando uma thread termina... 375 Prioridades das threads... 378 Sincronização... 381 Usando métodos sincronizados... 381 A instrução synchronized... 384 Comunicação entre threads com o uso de notify( ), wait( ) e notifyall( )... 387 Exemplo que usa wait( ) e notify( )... 388 Suspendendo, retomando e encerrando threads... 393 Tente Isto 11-2 Use a thread principal... 396 Teste do Capítulo 11... 398 12 Enumerações, autoboxing, importação estática e anotações... 399 Enumerações... 400 Fundamentos da enumeração... 401 As enumerações Java são tipos de classe... 403 Métodos values( ) e valueof( )... 403 Construtores, métodos, variáveis de instância e enumerações... 405 Duas restrições importantes... 407 Enumerações herdam Enum... 407 Tente Isto 12-1 Semáforo controlado por computador... 409 Autoboxing... 414 Encapsuladores de tipos... 414 Fundamentos do autoboxing... 417 Autoboxing e os métodos... 417 Autoboxing/unboxing ocorre em expressões... 419 Advertência... 420

xii Sumário Importação estática... 421 Anotações (metadados)... 424 Teste do Capítulo 12... 426 13 Tipos genéricos... 428 Fundamentos dos tipos genéricos... 429 Exemplo simples de genérico... 430 Genéricos só funcionam com tipos de referência... 434 Tipos genéricos diferem de acordo com seus argumentos de tipo... 434 Classe genérica com dois parâmetros de tipo... 435 A forma geral de uma classe genérica... 436 Tipos limitados... 436 Usando argumentos curingas... 440 Curingas limitados... 443 Métodos genéricos... 445 Construtores genéricos... 448 Interfaces genéricas... 448 Tente Isto 13-1 Crie uma fila genérica... 451 Tipos brutos e código legado... 455 Inferência de tipos com o operador losango... 458 Erasure... 459 Erros de ambiguidade... 460 Algumas restrições dos genéricos... 461 Parâmetros de tipos não podem ser instanciados... 461 Restrições aos membros estáticos... 461 Restrições aos arrays genéricos... 461 Restrições a exceções genéricas... 463 Continuando seu estudo sobre genéricos... 463 Teste do Capítulo 13... 463 14 Expressões lambda e referências de método... 465 Introdução às expressões lambda... 466 Fundamentos das expressões lambda... 467 Interfaces funcionais... 468 As expressões lambda em ação... 470 Expressões lambda de bloco... 475 Interfaces funcionais genéricas... 476 Tente Isto 14-1 Passe uma expressão lambda como argumento... 478 Expressões lambda e a captura de variáveis... 483 Lance uma exceção de dentro de uma expressão lambda... 484 Referências de método... 486 Referências a métodos static... 486 Referências a métodos de instância... 488 Referências de construtor... 492 Interfaces funcionais predefinidas... 495 Teste do Capítulo 14... 496

xiii 15 Applets, eventos e tópicos diversos... 498 Aspectos básicos dos applets... 499 Organização e elementos essenciais dos applets... 503 A arquitetura do applet... 503 Esqueleto de applet completo... 504 Inicialização e encerramento do applet... 505 Solicitando atualização... 506 Método update( )... 507 Tente Isto 15-1 Applet de banner simples... 507 Usando a janela de status... 511 Passando parâmetros para applets... 511 A classe Applet... 513 Tratamento de eventos... 515 Modelo de delegação de eventos... 515 Eventos... 515 Fontes de eventos... 516 Ouvintes de eventos... 516 Classes de eventos... 516 Interfaces de ouvintes de eventos... 517 Usando o modelo de delegação de eventos... 518 Tratando eventos do mouse e de seus movimentos... 519 Applet de evento de mouse simples... 519 Mais palavras-chave Java... 522 Modificadores transient e volatile... 523 instanceof... 523 strictfp... 524 assert... 524 Métodos nativos... 525 Teste do Capítulo 15... 526 16 Introdução a Swing... 528 Origens e filosofia de design de Swing... 530 Componentes e contêineres... 532 Componentes... 532 Contêineres... 533 Painéis do contêiner de nível superior... 533 Gerenciadores de leiaute... 534 Um primeiro programa Swing simples... 535 Primeiro exemplo de Swing linha a linha... 536 Use JButton... 540 Trabalhe com JTextField... 544 Crie um JCheckBox... 547 Trabalhe com JList... 551 Tente Isto 16-1 Utilitário de comparação de arquivos baseado em Swing... 555 Use classes internas anônimas ou expressões lambda para tratar eventos... 560 Crie um applet Swing... 562 Teste do Capítulo 16... 564

xiv Sumário 17 Introdução a JavaFX... 566 Conceitos básicos de JavaFX... 568 Os pacotes JavaFX... 568 As classes Stage e Scene... 568 Nós e grafos de cena... 569 Leiautes... 569 A classe Application e os métodos de ciclo de vida... 569 Iniciando um aplicativo JavaFX... 570 Esqueleto de aplicativo JavaFX... 570 Compilando e executando um programa JavaFX... 573 A thread do aplicativo... 574 Um controle JavaFX simples: o rótulo... 574 Usando botões e eventos... 576 Aspectos básicos de Event... 576 Introdução ao controle de botão... 577 Demonstrando o tratamento de eventos e o botão... 577 Mais três controles JavaFX... 581 CheckBox... 581 Tente Isto 17-1 Use o estado indeterminado de CheckBox... 585 ListView... 586 TextField... 591 Introdução aos efeitos e transformações... 594 Efeitos... 594 Transformações... 596 Demonstrando os efeitos e transformações... 597 O que há mais?... 600 Teste do Capítulo 17... 601 A Respostas dos testes... 603 Capítulo 1: Fundamentos da linguagem Java... 604 Capítulo 2: Introdução aos tipos de dados e operadores... 606 Capítulo 3: Instruções de controle de programa... 607 Capítulo 4: Introdução às classes, objetos e métodos... 610 Capítulo 5: Mais tipos de dados e operadores... 611 Capítulo 6: Verificação minuciosa dos métodos e classes... 615 Capítulo 7: Herança... 620 Capítulo 8: Pacotes e interfaces... 622 Capítulo 9: Tratamento de exceções... 624 Capítulo 10: Usando I/O... 627 Capítulo 11: Programação com várias threads... 630 Capítulo 12: Enumerações, autoboxing, importação estática e anotações... 633 Capítulo 13: Tipos genéricos... 636 Capítulo 14: Expressões lambda e referências de método... 641 Capítulo 15: Applets, eventos e tópicos diversos... 644 Capítulo 16: Introdução a Swing... 650 Capítulo 17: Introdução a JavaFX... 655

xv B Usando comentários de documentação da linguagem Java... 661 Tags de javadoc... 662 @author... 663 {@code}... 663 @deprecated... 663 {@docroot}... 663 @exception... 663 {@inheritdoc}... 664 {@link}... 664 {@linkplain}... 664 {@literal}... 664 @param... 664 @return... 664 @see... 665 @serial... 665 @serialdata... 665 @serialfield... 665 @since... 665 @throws... 666 {@value}... 666 @version... 666 Forma geral de um comentário de documentação... 666 O que javadoc gera... 667 Exemplo que usa comentários de documentação... 667 Índice... 669