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


Apostila java orientada a objetos, Exercícios de Programação para Java

Apostila java orientada a objetos

Tipologia: Exercícios

2021

Compartilhado em 11/02/2021

luan-silva-jtz
luan-silva-jtz 🇧🇷

1 documento

1 / 313

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 Apostila java orientada a objetos e outras Exercícios em PDF para Programação para Java, somente na Docsity!

Sumário

  • 1.1 O que é realmente importante? 1 Como Aprender Java
  • 1.2 Sobre os exercícios
  • 1.3 Tirando dúvidas e indo além
  • 2.1 Java 2 O que é Java
  • 2.2 Uma breve história do Java
  • 2.3 Máquina Virtual
  • 2.4 Java lento? Hotspot e JIT
  • 2.5 Versões do Java e a confusão do Java2
  • 2.6 JVM? JRE? JDK? O que devo baixar?
  • 2.7 Onde usar e os objetivos do Java
  • 2.8 Especificação versus implementação
  • 2.9 Como o FJ-11 está organizado
  • 2.10 Compilando o primeiro programa
  • 2.11 Executando seu primeiro programa
  • 2.12 O que aconteceu?
  • 2.13 Para saber mais: como é o bytecode?
  • 2.14 Exercícios: Modificando o Hello World
  • 2.15 O que pode dar errado?
  • 2.16 Um pouco mais...
  • 2.17 Exercícios opcionais
  • 3.1 Declarando e usando variáveis 3 Variáveis primitivas e Controle de fluxo
  • 3.2 Tipos primitivos e valores
  • 3.3 Exercícios: Variáveis e tipos primitivos
  • 3.4 Discussão em aula: convenções de código e código legível
  • 3.5 Casting e promoção
  • 3.6 O if e o else
  • 3.7 O While
  • 3.8 O For
  • 3.9 Controlando loops
  • 3.10 Escopo das variáveis
  • 3.11 Um bloco dentro do outro
  • 3.12 Para saber mais
  • 3.13 Exercícios: Fixação de sintaxe
  • 3.14 Desafios: Fibonacci
  • 4.1 Motivação: problemas do paradigma procedural 4 Orientação a objetos básica
  • 4.2 Criando um tipo
  • 4.3 Uma classe em Java
  • 4.4 Criando e usando um objeto
  • 4.5 Métodos
  • 4.6 Métodos com retorno
  • 4.7 Objetos são acessados por referências
  • 4.8 O método transfere()
  • 4.9 Continuando com atributos
  • 4.10 Para saber mais: Uma Fábrica de Carros
  • 4.11 Um pouco mais...
  • 4.12 Exercícios: Orientação a Objetos
  • 4.13 Desafios
  • 4.14 Fixando o conhecimento
  • 5.1 Controlando o acesso 5 Modificadores de acesso e atributos de classe
  • 5.2 Encapsulamento
  • 5.3 Getters e Setters
  • 5.4 Construtores
  • 5.5 A necessidade de um construtor
  • 5.6 Atributos de classe
  • 5.7 Um pouco mais...
  • 5.8 Exercícios: Encapsulamento, construtores e static
  • 5.9 Desafios
  • 6.1 O Eclipse 6 Eclipse IDE
  • 6.2 Apresentando o Eclipse
  • 6.3 Views e Perspective
  • 6.4 Criando um projeto novo
  • 6.5 Criando o main
  • 6.6 Executando o main
  • 6.7 Pequenos truques
  • 6.8 Exercícios: Eclipse
  • 6.9 Discussão em aula: Refactoring
  • 7.1 Organização 7 Pacotes - Organizando suas classes e bibliotecas
  • 7.2 Diretórios
  • 7.3 Import
  • 7.4 Acesso aos atributos, construtores e métodos
  • 7.5 Usando o Eclipse com pacotes
  • 7.6 Exercícios: Pacotes
  • 8.1 Arquivos, bibliotecas e versões 8 Ferramentas: jar e javadoc
  • 8.2 Gerando o JAR pelo Eclipse
  • 8.3 Javadoc
  • 8.4 Gerando o Javadoc
  • 8.5 Exercícios: Jar e Javadoc
  • 8.6 Importando um jar externo
  • 8.7 Exercícios: Importando um jar
  • 8.8 Manipulando a conta pela interface gráfica
  • 8.9 Exercícios: Mostrando os dados da conta na tela
  • 9.1 Repetindo código? 9 Herança, reescrita e polimorfismo
  • 9.2 Reescrita de método
  • 9.3 Invocando o método reescrito
  • 9.4 Polimorfismo
  • 9.5 Um outro exemplo
  • 9.6 Um pouco mais...
  • 9.7 Exercícios: Herança e Polimorfismo
  • 9.8 Discussões em aula: Alternativas ao atributo protected
  • 10.1 Repetindo mais código? 10 Classes Abstratas
  • 10.2 Classe abstrata
  • 10.3 Métodos abstratos
  • 10.4 Aumentando o exemplo
  • 10.5 Para saber mais...
  • 10.6 Exercícios: Classes Abstratas
  • 11.1 Aumentando nosso exemplo 11 Interfaces
  • 11.2 Interfaces
  • 11.3 Dificuldade no aprendizado de interfaces
  • 11.4 Exemplo interessante: conexões com o banco de dados
  • 11.5 Exercícios: Interfaces
  • 11.6 Exercícios opcionais
  • 11.7 Discussão: favoreça composição em relação à herança
  • 12.1 Motivação 12 Exceções e controle de erros
  • 12.2 Exercício para começar com os conceitos
  • 12.3 Exceções de Runtime mais comuns
  • 12.4 Outro tipo de exceção: Checked Exceptions
  • 12.5 Um pouco da grande família Throwable
  • 12.6 Mais de um erro
  • 12.7 Lançando exceções
  • 12.8 O que colocar dentro do try?
  • 12.9 Criando seu próprio tipo de exceção
  • 12.10 Para saber mais: finally
  • 12.11 Exercícios: Exceções
  • 12.12 Desafios
  • 12.13 Discussão em aula: catch e throws em Exception
  • 13.1 Pacote java.lang 13 O pacote java.lang
  • 13.2 Um pouco sobre a classe System
  • 13.3 java.lang.Object
  • 13.4 Métodos do java.lang.Object: equals e toString
  • 13.5 Exercícios: java.lang.Object
  • 13.6 java.lang.String
  • 13.7 Exercícios: java.lang.String
  • 13.8 Desafio
  • 13.9 Discussão em aula: O que você precisa fazer em Java?
  • 14.1 O problema 14 Um pouco de arrays
  • 14.2 Arrays de referências
  • 14.3 Percorrendo uma array
  • 14.4 Percorrendo uma array no Java 5.0
  • 14.5 Exercícios: Arrays
  • 14.6 Um pouco mais...
  • 14.7 Desafios Opcionais
  • 15.1 Arrays são trabalhosos, utilizar estrutura de dados 15 Collections framework
  • 15.2 Listas: java.util.List
  • 15.3 Listas no Java 5 e Java 7 com Generics
  • 15.4 A importância das interfaces nas coleções
  • 15.5 Ordenação: Collections.sort
  • 15.6 Exercícios: Ordenação
  • 15.7 Conjunto: java.util.Set
  • 15.8 Principais interfaces: java.util.Collection
  • 15.9 Percorrendo coleções no Java
  • 15.10 Para saber mais: Iterando sobre coleções com java.util.Iterator
  • 15.11 Mapas - java.util.Map
  • 15.12 Para saber mais: Properties
  • 15.13 Para saber mais: Equals e HashCode
  • 15.14 Para saber mais: Boas práticas
  • 15.15 Exercícios: Collections
  • 15.16 Desafios
  • 15.17 Para saber mais: Comparators, classes anônimas, Java 8 e o lambda
  • 16.1 Conhecendo uma API 16 Pacote java.io
  • 16.2 Orientação a objetos no java.io
  • 16.3 InputStream, InputStreamReader e BufferedReader
  • 16.4 Lendo Strings do teclado
  • 16.5 A analogia para a escrita: OutputStream
  • 16.6 Uma maneira mais fácil: Scanner e PrintStream
  • 16.7 Um pouco mais...
  • 16.8 Integer e classes wrappers (box)

21.3 Instalação do JDK em ambiente Windows 284

22 Apêndice - Debugging 22.1 O que é debugar 289 22.2 Debugando no Eclipse 289 22.3 Perspectiva de debug 291 22.4 Debug avançado 294 22.5 Profiling 300 22.6 Profiling no Eclipse TPTP 301

Versão: 24.8.

Caelum Sumário

CAPÍTULO 1

"Busco um instante feliz que justifique minha existência" -- Fiodór Dostoiévski

Muitos livros, ao passar dos capítulos, mencionam todos os detalhes da linguagem juntamente com seus princípios básicos. Isso acaba criando muita confusão, em especial porque o estudante não consegue distinguir exatamente o que é primordial aprender no início, daquilo que pode ser estudado mais adiante.

Se uma classe abstrata deve ou não ter ao menos um método abstrato, se o if só aceita argumentos booleanos e todos os detalhes sobre classes internas, realmente não devem se tornar preocupações para aquele cujo objetivo primário é aprender Java. Esse tipo de informação será adquirida com o tempo, e não é necessário no início.

Neste curso, separamos essas informações em quadros especiais, já que são informações extras. Ou então, apenas citamos num exercício e deixamos para o leitor procurar informações se for de seu interesse.

Por fim, falta mencionar algo sobre a prática, que deve ser tratada seriamente: todos os exercícios são muito importantes e os desafios podem ser feitos quando o curso terminar. De qualquer maneira recomendamos aos alunos estudarem em casa, e praticarem bastante código e variações.

O CURSO

Para aqueles que estão fazendo o curso Java e Orientação a Objetos, recomendamos estudarem em casa aquilo que foi visto durante a aula, tentando resolver os exercícios opcionais e os desafios apresentados.

COMO APRENDER JAVA

1.1 O QUE É REALMENTE IMPORTANTE?

1 COMO APRENDER JAVA 1

Alura:

http://www.alura.com.br/

1.3 TIRANDO DÚVIDAS E INDO ALÉM 3

CAPÍTULO 2

"Computadores são inúteis, eles apenas dão respostas" -- Picasso

Chegou a hora de responder as perguntas mais básicas sobre Java. Ao término desse capítulo, você será capaz de:

responder o que é Java; mostrar as vantagens e desvantagens do Java; entender bem o conceito de máquina virtual; compilar e executar um programa simples.

Entender um pouco da história da plataforma Java é essencial para enxergar os motivos que a levaram ao sucesso.

Quais eram os seus maiores problemas quando programava na década de 1990?

ponteiros? gerenciamento de memória? organização? falta de bibliotecas? ter de reescrever parte do código ao mudar de sistema operacional? custo financeiro de usar a tecnologia?

A linguagem Java resolve bem esses problemas, que até então apareciam com frequência nas outras linguagens. Alguns desses problemas foram particularmente atacados porque uma das grandes motivações para a criação da plataforma Java era de que essa linguagem fosse usada em pequenos dispositivos, como tvs, videocassetes, aspiradores, liquidificadores e outros. Apesar disso a linguagem teve seu lançamento focado no uso em clientes web (browsers) para rodar pequenas aplicações ( applets ). Hoje em dia esse não é o grande mercado do Java: apesar de ter sido idealizado com um propósito e lançado com outro, o Java ganhou destaque no lado do servidor.

O Java foi criado pela antiga Sun Microsystems e mantida através de um comitê (http://www.jcp.org). Seu site principal era o java.sun.com, e java.com um site mais institucional, voltado ao consumidor de produtos e usuários leigos, não desenvolvedores. Com a compra da Sun pela Oracle em 2009, muitas URLs e nomes tem sido trocados para refletir a marca da Oracle. A página principal do Java é: http://www.oracle.com/technetwork/java/

No Brasil, diversos grupos de usuários se formaram para tentar disseminar o conhecimento da

O QUE É JAVA

2.1 JAVA

4 2 O QUE É JAVA

tecnologia Java nasceu com um objetivo em mente, foi lançado com outro, mas, no final, decolou mesmo no desenvolvimento de aplicações do lado do servidor. Sorte? Há hoje o Java FX, tentando dar força para o Java não só no desktop mas como aplicações ricas na web, mas muitos não acreditam que haja espaço para tal, considerando o destino de tecnologias como Adobe Flex e Microsoft Silverlight.

Você pode ler a história da linguagem Java em: http://www.java.com/en/javahistory/

E um vídeo interessante: http://tinyurl.com/histjava

Em 2009 a Oracle comprou a Sun, fortalecendo a marca. A Oracle sempre foi, junto com a IBM, uma das empresas que mais investiram e fizeram negócios através do uso da plataforma Java. Em 2014 surge a versão Java 8 com mudanças interessantes na linguagem.

Em uma linguagem de programação como C e Pascal, temos a seguinte situação quando vamos compilar um programa:

O código fonte é compilado para código de máquina específico de uma plataforma e sistema operacional. Muitas vezes o próprio código fonte é desenvolvido visando uma única plataforma!

Esse código executável (binário) resultante será executado pelo sistema operacional e, por esse motivo, ele deve saber conversar com o sistema operacional em questão.

Isto é, temos um código executável para cada sistema operacional. É necessário compilar uma vez para Windows, outra para o Linux, e assim por diante, caso a gente queira que esse nosso software possa ser utilizado em várias plataformas. Esse é o caso de aplicativos como o OpenOffice, Firefox e outros.

2.3 MÁQUINA VIRTUAL

6 2.3 MÁQUINA VIRTUAL

Como foi dito anteriormente, na maioria das vezes, a sua aplicação se utiliza das bibliotecas do sistema operacional, como, por exemplo, a de interface gráfica para desenhar as "telas". A biblioteca de interface gráfica do Windows é bem diferente das do Linux: como criar então uma aplicação que rode de forma parecida nos dois sistemas operacionais?

Precisamos reescrever um mesmo pedaço da aplicação para diferentes sistemas operacionais, já que eles não são compatíveis.

Já o Java utiliza do conceito de máquina virtual , onde existe, entre o sistema operacional e a aplicação, uma camada extra responsável por "traduzir" - mas não apenas isso - o que sua aplicação deseja fazer para as respectivas chamadas do sistema operacional onde ela está rodando no momento:

Dessa forma, a maneira com a qual você abre uma janela no Linux ou no Windows é a mesma: você ganha independência de sistema operacional. Ou, melhor ainda, independência de plataforma em geral: não é preciso se preocupar em qual sistema operacional sua aplicação está rodando, nem em que tipo de máquina, configurações, etc.

Repare que uma máquina virtual é um conceito bem mais amplo que o de um interpretador. Como o próprio nome diz, uma máquina virtual é como um "computador de mentira": tem tudo que um computador tem. Em outras palavras, ela é responsável por gerenciar memória, threads, a pilha de execução, etc.

Sua aplicação roda sem nenhum envolvimento com o sistema operacional! Sempre conversando apenas com a Java Virtual Machine (JVM).

Essa característica é interessante: como tudo passa pela JVM, ela pode tirar métricas, decidir onde é melhor alocar a memória, entre outros. Uma JVM isola totalmente a aplicação do sistema operacional. Se uma JVM termina abruptamente, só as aplicações que estavam rodando nela irão terminar: isso não afetará outras JVMs que estejam rodando no mesmo computador, nem afetará o sistema operacional.

Essa camada de isolamento também é interessante quando pensamos em um servidor que não pode se sujeitar a rodar código que possa interferir na boa execução de outras aplicações.

2.3 MÁQUINA VIRTUAL 7

Querendo aprender ainda mais sobre? Esclarecer dúvidas dos exercícios? Ouvir explicações detalhadas com um instrutor? A Caelum oferece o curso data presencial nas cidades de São Paulo, Rio de Janeiro e Brasília, além de turmas incompany.

Consulte as vantagens do curso Java e Orientação a Objetos

Java 1.0 e 1.1 são as versões muito antigas do Java, mas já traziam bibliotecas importantes como o JDBC e o java.io.

Com o Java 1.2 houve um aumento grande no tamanho da API, e foi nesse momento em que trocaram a nomenclatura de Java para Java2, com o objetivo de diminuir a confusão que havia entre Java e Javascript. Mas lembre-se, não há versão "Java 2.0", o 2 foi incorporado ao nome, tornando-se Java2 1.2.

Depois vieram o Java2 1.3 e 1.4, e o Java 1.5 passou a se chamar Java 5, tanto por uma questão de marketing e porque mudanças significativas na linguagem foram incluídas. É nesse momento que o "2" do nome Java desaparece. Repare que para fins de desenvolvimento, o Java 5 ainda é referido como Java 1.5.

Hoje a última versão disponível do Java é a 8.

O que gostaríamos de baixar no site da Oracle?

JVM = apenas a virtual machine, esse download não existe, ela sempre vem acompanhada. JRE = Java Runtime Environment , ambiente de execução Java, formado pela JVM e bibliotecas, tudo que você precisa para executar uma aplicação Java. Mas nós precisamos de mais. JDK = Java Development Kit : Nós, desenvolvedores, faremos o download do JDK do Java SE (Standard Edition). Ele é formado pela JRE somado a ferramentas, como o compilador.

Tanto o JRE e o JDK podem ser baixados do site http://www.oracle.com/technetwork/java/. Para encontrá-los, acesse o link Java SE dentro dos top downloads. Consulte o apêndice de instalação do JDK

Você pode também fazer o curso data dessa apostila na Caelum

2.5 VERSÕES DO JAVA E A CONFUSÃO DO JAVA

2.6 JVM? JRE? JDK? O QUE DEVO BAIXAR?

2.5 VERSÕES DO JAVA E A CONFUSÃO DO JAVA2 9

para maiores detalhes.

No decorrer do curso, você pode achar que o Java tem menor produtividade quando comparada com a linguagem que você está acostumado.

É preciso ficar claro que a premissa do Java não é a de criar sistemas pequenos, onde temos um ou dois desenvolvedores, mais rapidamente que linguagens como php, perl, e outras.

O foco da plataforma é outro: aplicações de médio a grande porte , onde o time de desenvolvedores tem várias pessoas e sempre pode vir a mudar e crescer. Não tenha dúvidas que criar a primeira versão de uma aplicação usando Java, mesmo utilizando IDEs e ferramentas poderosas, será mais trabalhoso que muitas linguagens script ou de alta produtividade. Porém, com uma linguagem orientada a objetos e madura como o Java, será extremamente mais fácil e rápido fazer alterações no sistema, desde que você siga as boas práticas e recomendações sobre design orientado a objetos.

Além disso, a quantidade enorme de bibliotecas gratuitas para realizar os mais diversos trabalhos (tais como relatórios, gráficos, sistemas de busca, geração de código de barra, manipulação de XML, tocadores de vídeo, manipuladores de texto, persistência transparente, impressão, etc) é um ponto fortíssimo para adoção do Java: você pode criar uma aplicação sofisticada, usando diversos recursos, sem precisar comprar um componente específico, que costuma ser caro. O ecossistema do Java é enorme.

Cada linguagem tem seu espaço e seu melhor uso. O uso do Java é interessante em aplicações que virão a crescer, em que a legibilidade do código é importante, onde temos muita conectividade e se há muitas plataformas (ambientes e sistemas operacionais) heterogêneas (Linux, Unix, OSX e Windows misturados).

Você pode ver isso pela quantidade enorme de ofertas de emprego procurando desenvolvedores Java para trabalhar com sistemas web e aplicações de integração no servidor.

Apesar disto, a Sun empenhou-se em tentar popularizar o uso do Java em aplicações desktop, mesmo com o fraco marketshare do Swing/AWT/SWT em relação às tecnologias concorrentes (em especial Microsoft .NET). A atual tentativa é o Java FX, onde a Oracle tem investido bastante.

2.7 ONDE USAR E OS OBJETIVOS DO JAVA

10 2.7 ONDE USAR E OS OBJETIVOS DO JAVA