Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Programação Orientada a Objetos: Conceitos e Exemplos em Java, Notas de aula de Programação Orientada a Objetos

Manual de Programação Orientada a Objetos

Tipologia: Notas de aula

2021

Compartilhado em 29/04/2021

frrtiien
frrtiien 🇵🇹

1 documento

1 / 514

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Pré-visualização parcial do texto

Baixe Programação Orientada a Objetos: Conceitos e Exemplos em Java e outras Notas de aula em PDF para Programação Orientada a Objetos, somente na Docsity!

ii

Cópia

Reprodução,

distribuição

e venda

proibidas

Prefácio

Sobre este livro

Este livro tem como finalidade possibilitar ao estudante o aprendizado dos conceitos básicos de programação orientada a objetos usando a linguagem Java. O livro parte do pressuposto de que o estudante conhece e usa computadores, tem noções elementares de algoritmos e sabe o que é uma linguagem de programação, mas sem necessariamente possuir conhecimentos profundos de uma. Evidentemente o livro também pode ser usado por estudantes que já conheçam alguma linguagem de programação mas estejam interessados em aprender Java.

O livro foi inicialmente desenvolvido como sendo o material sugerido para as disciplinas Progra- mação Orientada a Objetos I e Programação Orientada a Objetos II dos cursos de Ciência da Computação e Engenharia da Computação oferecidos pela Faculdade de Ciência da Computação da Universidade do Vale do Paraíba (UNIVAP). O material original foi ampliado consideravel- mente para a publicação como livro.

Ao desenvolver este livro, minha motivação principal foi apresentar os conceitos de programa- ção orientada a objetos com clareza e simplicidade, mostrando exemplos e sugerindo problemas práticos e ilustrativos dos conceitos e de algoritmos em geral. Muitos livros de programação ori- entada a objetos (abreviadamente, POO), especialmente usando a linguagem Java, concentram-se em aspectos visuais, deixando de lado a teoria e explicação dos detalhes que são necessárias para melhor compreensão das técnicas e conceitos. Na maioria dos casos, demonstrações das capaci- dades da linguagem são apresentadas desde cedo, sem as explicações necessárias para compreen- são do que acontece nos programas-exemplo. Em contraste, este livro concentra-se nas técnicas de programação orientada a objetos, explicando a teoria e apresentando a prática de cada tópico. Espero que com isto os estudantes estejam mais confortáveis com os conceitos de classes e obje- tos quando forem utilizá-los em aplicações mais complexas.

Para reforçar a aplicabilidade deste livro em cursos de programação em escolas técnicas e uni- versidades, 169 programas, classes e trechos de código foram incluidos, com comentários para esclarecer os pontos mais importantes. Ao final de cada capítulo, vários exercícios de fixação com diferentes níveis de complexidade são apresentados, em um total de 881 exercícios.

Sobre a organização deste livro

Este livro é dividido em cinco partes principais, cada uma subdividida em vários capítulos. Cada capítulo cobre um tema específico. As partes e capítulos são:

  • Parte I: Introdução à Programação Orientada a Objetos apresenta os conceitos básicos de programação orientada a objetos. Esta parte é dividida nos seguintes capítulos:

Introdução à Programação Orientada a Objetos usando Java Rafael Santos

iv

Cópia

Reprodução,

distribuição

e venda

proibidas

- Capítulo ??: Classes para Representação de Estruturas de Dados apresenta algu- mas classes que implementam estruturas de dados simples em Java e suas aplicações. - Capítulo ??: Exceções apresenta os mecanismos de tratamento e criação de exce- ções em Java para processamento de erros. - Capítulo ??: Entrada e Saída usando Arquivos apresenta as classes em Java que permitem a abstração de acesso à arquivos de diversos tipos. - Capítulo ??: Recebendo e Enviando Dados via Internet apresenta um mecanismo simples de envio e recebimento de dados via Internet. - Capítulo ??: Programação Cliente-Servidor com Sockets mostra como podemos criar aplicações simples com o modelo cliente/servidor e a classe Socket. - Capítulo ??: Linhas de Execução ( Threads ) mostra como programas podem ser preparados para executar mais de uma tarefa simultaneamente através do uso de li- nhas de execução.

  • Parte III: Classes de Java para Programas com Interfaces Gráficas apresenta as classes principais de Java que permitem a criação de programas com interfaces gráficas, e está dividida nos seguintes capítulos: - Capítulo ??: Introdução à Programação com Interfaces Gráficas apresenta os conceitos básicos de programação com interfaces gráficas, e introduz as classes Frame e Canvas. - Capítulo ??: Introdução à Programação com Eventos apresenta os conceitos bá- sicos de programação com eventos, e sua relação com programas com interfaces gráficas, além de demonstrar usos de instâncias da classe Button. - Capítulo ??: Usando Diferentes Layouts Gráficos mostra como layouts podem ser usados para distribuir diversos componentes em programas com interfaces gráficas. - Capítulo ??: Usando Campos de Texto apresenta as classes Label, TextField e TextArea, para apresentação e entrada de texto em programas com interfaces gráfi- cas. - Capítulo ??: Usando Listas e Opções apresenta classes cujas instâncias represen- tam listas e opções para interação com usuários. - Capítulo ??: Usando Menus mostra como menus podem ser criados em programas com interfaces gráficas, e como funções do programa podem ser executados caso opções dos menus sejam escolhidas. - Capítulo ??: Introdução à Programação de Applets mostra como Applets (pro- gramas que podem ser carregados via Internet e mostrados em um navegador) podem ser criados com os conceitos mostrados anteriormente.
  • Parte IV: Projetos Sugeridos apresenta três projetos sugeridos para leitores interessa- dos. Estes projetos são mostrados como aplicações quase completas mas que podem ser melhoradas com sugestões apresentadas como exercícios. Os projetos são: - Capítulo ??: Um Colorizador de Código Java propõe a criação de um programa que analisa e anota códigos em Java criando arquivos HTML que contém o código colorizado. - Capítulo ??: Interface Orientada a Objetos para o Software POV propõe a cri- ação de classes que modelam os componentes gráficos usados no software gratuito POV ( Persistence of Vision ).

Introdução à Programação Orientada a Objetos usando Java Rafael Santos

Cópia

Reprodução,

distribuição

e venda

proibidas

v

- Capítulo ??: Uma Planilha Simples apresenta as estruturas e conceitos para desen- volvimento de uma planilha de cálculos simples, e exercícios para fazer um aplicativo mais útil.

  • **Parte V: Apêndices
  • Apêndice A: Tipos de Dados em Java** apresenta os tipos de dados nativos em Java com exemplos de usos corretos e incorretos. - Apêndice B: A classe Keyboard apresenta a classe Keyboard, que pode ser usada para facilitar a leitura de valores de tipos nativos e instâncias da classe String a partir do teclado, adicionando flexibilidade aos programas que não usam interfaces gráficas. - Apêndice B.1: Usando o Java Development Kit apresenta a ferramenta escolhida para desenvolvimento de programas, classes e applets em Java. - Apêndice ??: Documentação de Classes e Programas em Java mostra como pode- mos criar documentação para aplicativos e classes em Java através da documentação do código-fonte.

Convenções usadas neste livro

Para destacar alguns conceitos apresentados neste livro, fontes diferentes serão usadas. Nomes de classes, métodos, pacotes, comandos, etc. serão mostrados em fonte proporcional. Concei- tos apresentados pela primeira vez ou que mereçam destaque e palavras que não sejam parte do português corrente serão mostrados em fonte itálica.

Adicionalmente, os programas incluídos no livro serão colorizados , isto é, palavras-chave e par- tes do código como comentários serão mostradas em cores diferentes para facilitar a leitura. As linhas dos programas também serão numeradas para fácil referência.

Os exercícios apresentados ao fim de cada capítulo são divididos em cinco categorias de dificul- categorias de dade, marcadas com um número de estrelas correspondente: exercícios

  • Uma estrela (? ) : Exercícios teóricos ou práticos que podem ser resolvidos rapidamente, geralmente através de consultas a programas mostrados ou respostas de outros exercícios, e modificação de exemplos ou outras respostas. Em muitos casos podem ser resolvidos mentalmente, isto é, sem a necessidade de escrever, compilar e executar programas. Existem 330 exercícios desta categoria no livro.
  • Duas estrelas (?? ) : Exercícios teóricos ou práticos que exigem um pouco mais de racio- cínio e modificações ligeiras de exemplos apresentados. Exercícios desta categoria geral- mente precisarão ser compilados e executados para verificação dos resultados. Existem 229 exercícios desta categoria no livro.
  • Três estrelas (??? ) : Exercícios que requerem compreensão mais completa dos conceitos envolvidos, mas mesmo assim podem ser resolvidos com base em exemplos ou respostas a outros exercícios. Existem 227 exercícios desta categoria no livro.
  • Quatro estrelas (???? ) : Exercícios que requerem compreensão ainda mais completa e profunda dos conceitos, e que geralmente exigem um conhecimento razoável de algoritmos e técnicas de programação. Existem 68 exercícios desta categoria no livro.

Rafael Santos Introdução à Programação Orientada a Objetos usando Java

Cópia

Reprodução,

distribuição

e venda

proibidas

vii

existem limitações na distribuição da máquina virtual, fazendo de Java uma plataforma extremamente econômica para desenvolvedores e usuários finais.

Java é robusta. Administração de memória (alocação e liberação) e o uso de ponteiros, duas das fontes de erros e bugs mais frequentes em programas em C e C++, são administrados internamente na linguagem, de forma transparente para o programador. De maneira geral, programas em Java tem restrições no acesso à memória que resultam em maior segurança para os programas sem diminuir a utilidade dos mesmos. Java também tem um poderoso mecanismo de exceções que permite melhor tratamento de erros em tempo de execução dos programas.

Java tem bibliotecas prontas para diversas aplicações. As bibliotecas de classes de Java con- tém várias classes que implementam diversos mecanismos de entrada e saída, acesso à Internet, manipulação de Strings em alto nível, poderosas estruturas de dados, utilitários diversos e um conjunto completo de classes para implementação de interfaces gráficas. Vale a pena relembrar que estas bibliotecas são padrão de Java - qualquer máquina virtual Java permite o uso destas bibliotecas, sem a necessidade de instalar pacotes adicionais, e que mesmo que o compilador usado não tenha interface gráfica similar à de linguagens vi- suais, os programas criados com este compilador podem ter interfaces gráficas complexas.

Categorias de softwares em Java

Existem basicamente quatro categorias de softwares que podem ser criados em Java:

Classes para representação de modelos. Classes são usadas para representar, em linguagem classes para representação de modelos

de programação, modelos e abstrações de dados como os mostrados nos capítulos 1. Clas- ses para representação de modelos não podem ser executadas diretamente, mas instâncias destas classes podem ser usadas dentro de aplicações e applets. Detalhes e mecanismos de criação de classes em Java serão vistos no capítulo 2.

Classes como conjuntos de rotinas. Classes podem conter somente métodos (rotinas) ao invés bibliotecas de representar dados. Estas classes funcionam como bibliotecas de métodos ou funções que tem algo em comum. Detalhes sobre a criação deste tipo de classes serão vistos na seção 5.3.

Aplicações ou Programas. Aplicações ou programas podem ser executadas a partir de um ter- aplicações minal do sistema operacional (terminais gráficos de Unix ou da janela do MS-DOS), po- dendo envolver ou não maior interação com o usuário, e podendo ou não ter uma interface gráfica. Informações sobre a criação de programas em Java serão mostradas no capítulo 3 (sem uso de interface gráfica) e nos capítulos da parte III (com interfaces gráficas).

Applets****. Applets são programas executáveis em Java que podem ser embutidos em páginas em applets HTML e carregados e executados via Internet. Sua execução é controlada pelo navegador que está sendo usado para ler as páginas. Por razões de segurança, applets são limitadas nas tarefas que podem fazer, e obrigatoriamente devem ter interface gráfica. Detalhes e mecanismos de criação de applets em Java serão vistos no capítulo ??.

O que não será visto neste livro

Eis aqui uma lista dos tópicos que não serão cobertos pelo livro. Ao invés de considerar a lista como um atestado de que o livro está incompleto, por favor considere que o livro é uma introdução, e certos tópicos são complexos demais para um livro deste tipo ou simplesmente não são interessantes, úteis ou comuns o suficiente para merecer discussão.

Rafael Santos Introdução à Programação Orientada a Objetos usando Java

viii

Cópia

Reprodução,

distribuição

e venda

proibidas

  • Comandos break e continue com labels.
  • Inner classes (classes aninhadas).

Dedicatória e Agradecimentos

Este livro é dedicado a minha esposa Yukari, e a nossa filha Miyuki, pela infinita paciência, cari- nho e suporte demonstrados durante a criação deste livro; e aos meus pais pelas várias lições de vida.

Sou grato aos estudantes dos cursos da Faculdade de Ciência da Computação da Univap que con- tribuiram com idéias e perguntas que resultaram em exemplos e exercícios, e em especial, aos estudantes que participaram na revisão do livro. Entre estes, destaco Nádia Maria França Borges, por inúmeras correções e sugestões.

Sou também grato aos professores Paulo de Castro Lobo, Moacir de Almeida Prado e Carlos Manoel Fenile Péris por esclarecimentos necessários para alguns exercícios.

Modificações

Esta seção somente será mantida enquanto o livro estiver em desenvolvimento.

Plano de Modificações

A lista de modificações previstas para as próximas versões deste livro são, em ordem aproximada de prioridade:

  1. Completar o capítulo 12.
  2. Completar o capítulo 13.
  3. Completar o apêndice B.1.
  4. Completar o apêndice A.
  5. Completar o apêndice B.
  6. Escrever os capítulos restantes.

Introdução à Programação Orientada a Objetos usando Java Rafael Santos

x

Cópia

Reprodução,

distribuição

e venda

proibidas

Introdução à Programação Orientada a Objetos usando Java

SUMÁRIO

Cópia

Reprodução,

distribuição

e venda

proibidas

Rafael Santos

LISTA DE FIGURAS

Cópia

Reprodução,

distribuição

e venda

proibidas

xiii

Lista de Figuras

1.1 O quadro-branco do Restaurante Caseiro Hipotético................ 4 1.2 O modelo Lampada, seus dados e atributos..................... 8 1.3 O modelo ContaBancariaSimplificada, seus dados e atributos........ 10 1.4 O modelo Data, seus dados e atributos....................... 12 1.5 O modelo RegistroAcademico, seus dados e atributos.............. 14

2.1 Pontos, linhas e retângulos no espaço cartesiano bidimensional........... 54

3.1 Referências e instâncias criadas na classe MaisDemoData............. 58 3.2 Coordenadas no espaço cartesiano de duas dimensões............... 59

5.1 Bancos com e sem fila única............................ 93

6.1 Intersecção de dois retângulos............................ 125

7.1 Chamadas recursivas ao método fibonacci.................... 140

8.1 Esquema de herança envolvendo várias classes.................. 187 8.2 Herança com várias classes e separação para métodos polimórficos sobrecarregados

9.1 Duas maneiras de se modificar a escala de um retângulo.............. 251

11.1 Exemplo de array irregular de duas dimensões................... 284 11.2 Retângulo envolvente de uma série de pontos................... 305 11.3 Jogo da velha e respectiva matriz de decisão da próxima jogada.......... 312 11.4 Vizinhanças para cálculo da heurística de jogo do jogo go............. 313 11.5 Primeiro passo do algoritmo da resolução de um sistema de equações lineares pelo método de Gauss................................ 315 11.6 Segundo passo do algoritmo da resolução de um sistema de equações lineares pelo método de Gauss................................ 316 11.7 Algumas iterações do jogo da vida, mostradas como imagens........... 318 11.8 Valores numéricos de algumas iterações do jogo da vida.............. 318

13.1 Rotação de um ponto em duas dimensões em volta da origem do sistema de coordenadas..................................... 375 13.2 Representação gráfica da aproximação da integral pela somatória das áreas de trapézios....................................... 378 13.3 Ilustração do algoritmo de bisecção sucessiva para localização de raízes de uma função........................................ 380 13.4 Representação gráfica do algoritmo de Buffon.................... 382 13.5 Medidas de uma parábola.............................. 396 13.6 Movimento de um robô com orientação livre.................... 416 13.7 O casco convexo de um conjunto de pontos..................... 417

Rafael Santos Introdução à Programação Orientada a Objetos usando Java

xiv

Cópia

Reprodução,

distribuição

e venda

proibidas

LISTA DE LISTAGENS

Lista de Listagens

1.1 O modelo Lampada, em pseudo-código....................... 9 1.2 O modelo ContaBancariaSimplificada, em pseudo-código........... 10 1.3 O modelo Data, em pseudo-código......................... 12 1.4 O modelo RegistroAcademico, em pseudo-código................ 14

2.1 Uma classe vazia em Java.............................. 25 2.2 A classe RegistroAcademicoSimples....................... 28 2.3 A classe DataSemMetodos.............................. 29 2.4 A classe DataSimples................................ 31 2.5 A classe Triangulo................................. 34 2.6 A classe DemoDataSimples, que pode ser executada e que demonstra o uso de instâncias da classe DataSimples.......................... 35 2.7 A classe Data, que implementa uma política de ocultação de campos....... 38 2.8 A classe DemoData, que pode ser executada e que demonstra o uso de instâncias da classe Data.................................... 40

3.1 A classe MaisDemoData, que demonstra mais usos de instâncias da classe Data.. 56 3.2 A classe Ponto2D, que encapsula um ponto no espaço cartesiano de duas dimen- sões.......................................... 59 3.3 A classe DemoPonto2D, que demonstra usos da classe Ponto2D.......... 61 3.4 A classe DemoReferencias, que demonstra mais exemplos de referências..... 62 3.5 A classe DemoPonto2DK, que demonstra usos da classe Ponto2D, que serão ini- cializados com valores lidos do teclado....................... 64

4.1 A classe RegistroAcademicoSemConstrutor, que encapsula alguns dados de um registro acadêmico................................ 71 4.2 A classe DemoRegistroAcademicoSemConstrutor, que demonstra o uso de instâncias da classe RegistroAcademicoSemConstrutor............. 72 4.3 A classe EventoAcademico, que representa um evento acadêmico......... 74 4.4 A classe DemoEventoAcademico, que demonstra o uso de instâncias da classe EventoAcademico.................................. 75 4.5 A classe RoboSimples0, que encapsula dados de um robô móvel simulado.... 77 4.6 A classe DemoRoboSimples0, que demonstra a criação e uso de instâncias da classe RoboSimples0................................ 79 4.7 A classe RoboSimples, que encapsula dados de um robô móvel simulado (com melhorias)...................................... 81 4.8 A classe DemoRoboSimplesComErros, que demonstra o uso de chamadas com argumentos incorretos à construtores e métodos da classe RoboSimples...... 83

Introdução à Programação Orientada a Objetos usando Java Rafael Santos

xvi

Cópia

Reprodução,

distribuição

e venda

proibidas

LISTA DE LISTAGENS

7.12 Trecho de código que demonstra o uso de variáveis auxiliares de ponto flutuante para evitar variáveis de controle de ponto flutuante em laços............ 143 7.13 A classe OtimizacaoDesenrolamentoDeLacos, que demonstra otimização de código eliminando pequenos laços onde for possível................ 143 7.14 A classe OtimizacaoRemocaoDeChamadasAMetodos, que demonstra otimiza- ção de código eliminando chamadas desnecessárias à métodos............ 145

8.1 A classe DataHora, que reusa as classes Data e Hora através de delegação.... 174 8.2 A classe RegistroAcademicoDeGraduacao, que reusa a classe Data através de delegação....................................... 175 8.3 A classe DemoRegistroAcademicoDeGraduacao, que demonstra a criação e o uso de instâncias da classe RegistroAcademicoDeGraduacao........... 177 8.4 A classe Pessoa0, que encapsula os dados de identificação de uma pessoa..... 178 8.5 A classe Funcionario0, que encapsula os dados básicos de um funcionário de uma empresa..................................... 179 8.6 A classe DemoFuncionario0, que demonstra o uso de uma instância da classe Funcionario0.................................... 180 8.7 A classe Pessoa, que encapsula os dados de identificação de uma pessoa..... 183 8.8 A classe Funcionario, que encapsula os dados básicos de um funcionário de uma empresa e herda da classe Pessoa....................... 183 8.9 A classe ChefeDeDepartamento, que encapsula os dados básicos de um chefe de um departamento de uma empresa e herda da classe Funcionario....... 186 8.10 A classe Automovel, que encapsula os dados de um automóvel simples à venda.. 190 8.11 A classe AutomovelBasico, que encapsula os dados de um automóvel básico à venda, e que herda da classe Automovel....................... 192 8.12 A classe AutomovelDeLuxo, que encapsula os dados de um automóvel de luxo à venda, e que herda da classe AutomovelBasico.................. 194 8.13 A classe DemoAutomoveis, que demonstra instâncias das classes Automovel, AutomovelBasico e AutomovelDeLuxo...................... 196 8.14 A classe ConcessionariaDeAutomoveis, que demonstra polimorfismo com ins- tâncias das classes herdeiras da classe Automovel................. 199 8.15 A classe EmprestimoBancario, que demonstra polimorfismo com instâncias das classes herdeiras da classe Pessoa.......................... 200 8.16 A classe EmprestimoBancarioComCast, que demonstra polimorfismo e cast de instâncias de classes................................. 203

9.1 A classe abstrata RoboAbstrato, que define que métodos e campos mínimos uma classe que implementa um robô deve conter.................. 217 9.2 A classe RoboSimples, que herda da classe RoboAbstrato e que representa um robô de comportamento simples........................... 220 9.3 A classe RoboABateria, que estende a classe RoboAbstrato e representa um robô que consome energia com seus movimentos.................. 221 9.4 A classe DemoRobos, que demonstra instâncias e usos dos métodos das classes RoboSimples e RoboABateria........................... 222 9.5 A interface ObjetoGeometrico, que representa um objeto geométrico bidimen- sional......................................... 224 9.6 A classe Circulo, que implementa a interface ObjetoGeometrico e representa um círculo...................................... 225 9.7 A classe Retangulo, que implementa a interface ObjetoGeometrico e repre- senta um retângulo.................................. 226

Introdução à Programação Orientada a Objetos usando Java Rafael Santos

LISTA DE LISTAGENS

Cópia

Reprodução,

distribuição

e venda

proibidas

xvii

9.8 A classe DemoObjetosGeometricos, que demonstra instâncias de classes que implementam a interface ObjetoGeometrico.................... 227 9.9 A classe DemoObjetosGeometricosEPolimorfismo, que demonstra caracterís- ticas de polimorfismo com interfaces e classes que as implementam........ 229 9.10 A interface Escalavel, que define que métodos um objeto que seja escalável (possa ter seu tamanho modificável)......................... 230 9.11 A classe CirculoEscalavel, que implementa as interfaces ObjetoGeometrico e Escalavel..................................... 230 9.12 A classe DemoCirculoEscalavel, que demonstra o uso dos métodos da classe CirculoEscalavel................................. 232 9.13 A interface ItemDeBiblioteca, que declara os campos e métodos que qualquer item em uma biblioteca deve ter........................... 233 9.14 A classe Livro, que encapsula os dados de um livro................ 234 9.15 A classe LivroDeBiblioteca, que encapsula os dados de um livro de uma bi- blioteca........................................ 235 9.16 A classe DemoLivroDeBiblioteca, que demonstra o uso de instâncias da classe LivroDeBiblioteca................................. 237 9.17 A interface ItemRaroDeBiblioteca, que declara os campos e métodos que itens raros de uma biblioteca devem ter.......................... 237 9.18 A classe Mapa, que encapsula os dados de um mapa................. 238 9.19 A classe MapaDeBiblioteca, que encapsula os dados de um mapa de uma bibli- oteca......................................... 239

10.1 A classe Data, que encapsula os dados de uma data qualquer e que faz parte do pacote DataHora................................... 253 10.2 A classe Hora, que encapsula os dados de uma hora qualquer e que faz parte do pacote DataHora................................... 254 10.3 A classe DataHora, que encapsula os dados de uma data e uma hora simultane- amente e que faz parte do pacote DataHora..................... 255 10.4 A classe DemoDataHora, que demonstra usos de instâncias das classes que fazem parte do pacote DataHora.............................. 256 10.5 A classe Pessoa, que encapsula os dados de identificação de uma pessoa e que faz parte do pacote Pessoal............................. 258 10.6 A classe Funcionario, que encapsula os dados básicos de um funcionário de uma empresa e que faz parte do pacote Pessoal.................. 259 10.7 A classe ChefeDeDepartamento, que encapsula os dados básicos de um chefe de departamento de uma empresa e que faz parte do pacote Pessoal........ 261 10.8 A classe DemoPessoal, que demonstra usos de instâncias das classes que fazem parte do pacote Pessoal............................... 262

11.1 Trecho de código que demonstra a declaração de arrays em Java.......... 270 11.2 Trecho de código que demonstra a declaração e inicialização de arrays em Java.. 270 11.3 A classe CalculoPiQuadradoSobre6, que calcula o valor de pi quadrado sobre seis.......................................... 272 11.4 A classe ArrayDeFloats, que encapsula um array de valores do tipo float.... 273 11.5 A classe DemoArrayDeFloats, que demonstra o uso de instâncias da classe ArrayDeFloats................................... 276 11.6 A classe Equipe, que demonstra o uso de um array de instâncias da classe Funcionario..................................... 277

Rafael Santos Introdução à Programação Orientada a Objetos usando Java

LISTA DE LISTAGENS

Cópia

Reprodução,

distribuição

e venda

proibidas

xix

A.2 A classe DemoTipoBooleanComErros, que demonstra usos incorretos do tipo nativo boolean.................................... 425 A.3 A classe DemoTipoChar, que demonstra usos do tipo nativo char......... 426 A.4 A classe DemoTipoCharComErros, que demonstra usos incorretos do tipo nativo char......................................... 427 A.5 A classe DemoTipoByte, que demonstra usos do tipo nativo byte......... 428 A.6 A classe DemoTipoByteComErros, que demonstra usos incorretos do tipo nativo byte......................................... 428 A.7 A classe DemoTipoShort, que demonstra usos do tipo nativo short........ 430 A.8 A classe DemoTipoShortComErros, que demonstra usos incorretos do tipo nati- vo short....................................... 430 A.9 A classe DemoTipoInt, que demonstra usos do tipo nativo int........... 431 A.10 A classe DemoTipoIntComErros, que demonstra usos incorretos do tipo nativo int.......................................... 431 A.11 A classe DemoTipoLong, que demonstra usos do tipo nativo long......... 432 A.12 A classe DemoTipoLongComErros, que demonstra usos incorretos do tipo nativo long......................................... 433 A.13 A classe DemoTipoFloat, que demonstra usos do tipo nativo float........ 434 A.14 A classe DemoTipoFloatComErros, que demonstra usos incorretos do tipo nati- vo float....................................... 435 A.15 A classe DemoTipoDouble, que demonstra usos do tipo nativo double...... 436 A.16 A classe DemoTipoDoubleComErros, que demonstra usos incorretos do tipo na- tivo double...................................... 437 A.17 A classe DemoClasseBoolean, que demonstra usos da classe Boolean...... 438 A.18 A classe DemoClasseBooleanComErros, que demonstra usos incorretos da clas- se Boolean...................................... 439 A.19 A classe DemoClasseCharacter, que demonstra usos da classe Character.... 441 A.20 A classe DemoClasseCharacterComErros, que demonstra usos incorretos da classe Character.................................. 442 A.21 A classe DemoClasseByte, que demonstra usos da classe Byte.......... 444 A.22 A classe DemoClasseByteComErros, que demonstra usos incorretos da classe Byte......................................... 445 A.23 A classe DemoClasseShort, que demonstra usos da classe Short......... 448 A.24 A classe DemoClasseShortComErros, que demonstra usos incorretos da classe Short......................................... 449 A.25 A classe DemoClasseInteger, que demonstra usos da classe Integer...... 452 A.26 A classe DemoClasseIntegerComErros, que demonstra usos incorretos da clas- se Integer...................................... 453 A.27 A classe DemoClasseLong, que demonstra usos da classe Long.......... 456 A.28 A classe DemoClasseLongComErros, que demonstra usos incorretos da classe Long......................................... 457 A.29 A classe DemoClasseFloat, que demonstra usos da classe Float......... 460 A.30 A classe DemoClasseFloatComErros, que demonstra usos incorretos da classe Float......................................... 461 A.31 A classe DemoClasseDouble, que demonstra usos da classe Double........ 464 A.32 A classe DemoClasseDoubleComErros, que demonstra usos incorretos da classe Double........................................ 465

B.1 A classe Keyboard, que permite entrada simples via teclado............ 467 B.2 A classe DemoKeyboard, que demonstra o uso dos métodos na classe Keyboard.. 476

Rafael Santos Introdução à Programação Orientada a Objetos usando Java

xx

Cópia

Reprodução,

distribuição

e venda

proibidas

LISTA DE LISTAGENS

B.3 A classe DataKeyboard, cujo construtor lê os valores dos campos do teclado... 478 B.4 A classe DemoDataKeyboard, que demonstra instâncias da classe DataKeyboard. 478 B.5 Um exemplo de arquivo de respostas para uso com a classe DemoDataKeyboard. 481

Introdução à Programação Orientada a Objetos usando Java Rafael Santos