Académique Documents
Professionnel Documents
Culture Documents
Introduo Programao
Orientada a Objetos
com Java
VersodeAgostode2014
LuizRicardo
http://luizricardo.org
Vocestautorizadoeincentivadoadistribuirestematerial.
Copie,compartilheemodifique,lembrandoapenasdecitarafonte.
O que Java?
DefinirJavaumatarefacomplexa,poisexistemvriasfacetas.Vamostentar...
Exemplodecomando:mover3AparaB4.
Damesmaforma,umalinguagemdeprogramaoumaformadegravaressasinstrues
queseroentoexecutadasparaatingiroresultadoesperado.
Java portvel
ExecutaemqualquercomputadorousistemaoperacionalquetenhaumaversodaMquina
VirtualJava(JavaVirtualMachineJVM).
segurana,suportaambientesdistribudosemredeepermiteexecuoparalela
(multithreading).
Java gratuito
IssosignificaquevocnoprecisapagarlicenasparadesenvolversistemasemJavanem
paraexecutarJavanaempresaouemcasa.
publicstaticvoidmain(String[]args){
System.out.println("MeuprimeiroprogramaemJava!")
DigiteocontedoacimanumarquivotextousandoumeditorcomooNotepad++ouoBlocode
notas.
Tomecuidadocomosespaamentosecomletrasmaisculaseminsculas,poisoJavafaz
diferenaentreaeA,seSeassimpordiante.
SalveoarquivocomonomeExercicio.javaemumapastaqualquerondevoctem
permissodeleituraeescrita.OEmaisculoimportante.Evitatambmcolocarespaos
embrancononomedapasta,poisissovaidificultaracesslavialinhadecomando.
Abraopromptdecomando(cmd)evataunidadeediretrioondesalvouoarquivousandoo
comandocd.Exemplo:
c:
cd\minha_pasta
Compileaclassecomocomando:
javacExercicio.java
Finalmente,executeoprogramacomocomando:
javaExercicio
Programao Estruturada
Aprenderumalinguagemdeprogramaosemelhanteaaprenderumanovalngua.Primeiro
vocdeveaprendersobreaestruturaeousodaspalavras.Comotempovocsetornafluente.
Nestaseo,vamosaprendercomodeclarareusarvaloresbsicos,almdecomocontrolaro
fluxodaexecuodeumprograma.Usaremosumpoucodelgicaparacriarprogramas
simples.
Somentedepoisdeassimilarosfundamentospartiremosparaumnvelmaisprofundofalando
sobreOrientaoaObjetos.
byte:nmerointeiroquevariade128a127
short:nmerointeiroquevariade32.768a32.767
int:nmerointeiroquevariade231a2311
long:nmerointeiroquevariade263a2631
float:nmerodecimalde32bits
double:nmerodecimalde64bits
char:armazenaumcaractere
boolean:armazenatrue(verdadeiro)oufalse(falso)
String(noumprimitivo):armazenaumtexto,isto,umasequnciadecaracteres.
Byte,Short,Integer,Long,Float,Double,Character,Boolean
Essasclassesvmcomdiversasfunesauxiliares,porexemplo,paraconvertervaloresde
umtipoparaoutro.
Paratrabalharcomnmerosprecisos,existeaclassejava.math.BigDecimal,muitausadaem
clculosfinanceiros.Exemplo:
BigDecimalvalor=newBigDecimal("1.99")
valor=valor.add(newBigDecimal("0.01"))
ParalidarcomDataeHora,temosasclassesjava.util.Dateejava.util.Calendar.Aclasse
Datepoderepresentaradataeahoraatuais,masaclasseCalendarrecomendvelpara
manipulardatas.Exemplo:
Calendarcal=Calendar.getInstance()
cal.set(2015,0,1)//definedia1dejaneirode2015
Datedata=cal.getTime()
Pacotes
Vocdeveternotadoquealgunstiposmencionadoslogoacimapossuemumprefixocomo
java.utiloujava.math,enquantooutrosno.
EmJava,usamospacotesparaorganizarostipos.Existeumpacoteespecialchamado
java.langquesempreestdisponvelparauso,portantonoprecisaserusado.Quando
usamosotipoString,porexemplo,naverdaeoJavaentendejava.lang.String.
Quandocriamosumtipo,podemosdeixarelesempacoteouentoespecificaremqualpacote
queremosqueelefique,colocandoopackagenaprimeiralinhadoarquivo.Exemplo:
packagebr.com.empresa.projeto
Notequeopacotebr.com.empresa.projetocomoumendereodeinternetinvertido:
projeto.empresa.com.br.
Almdisso,oarquivoquecontmessadeclaraodeveestaremumdiretrioquereflitacada
partedopacote.Porexemplo,seoprojetoJavaestemc:\projeto,entoaclassedeveestar
nodiretrioc:\projeto\br\com\empresa\projeto.
Importao de tipos
ParausarmostiposqueestoemoutrospacotesprecisamosinformaraoJavaondeeles
esto.
Issopodeserfeitocolocandoopacoteantesdonome,comoemjava.math.BigDecimal.
Ouentopodemosfazeraimportaodostiposnocomeodoarquivo.Asimportaesdevem
ficardepoisdalinhacomopackageeantesdadeclaraodaclasse.Exemplo:
packagebr.com.empresa.projeto
importjava.math.BigDecimal
importjava.util.Date
publicclassExemplo{}
10
Valores Literais
Consistenumvalorescritodiretamentenocdigo.Exemplos:
int:1
long:123L
float:3.14f
double:3.14d
String:"Umtextoqualquer"
Variveis ou Campos
Documentaooficial:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html
Varivelumarefernciaparaumvaloremmemriaatravsdeumnome.Exemplos:
intidade=38
floatsaldo=1590.55f
doublepi=3.14159d
charletra='a'
booleanvalorVerdadeiro=true
Stringnome="C.S.Lewis"
Umavarivelpodereceberovalordeoutravarivel.Exemplo:
Stringnome=outroNome
Tantoasvariveisquantoosvaloresficamnamemria.Considereoseguinteexemplo:
OJavamantmumatabelacomasvariveisdeclaradasapontandoparaosvaloresem
memria.Essesvalorespodemseralocadosedesalocadosdinamicamente,atolimite
permitidopelaJavaVirtualMachine.
11
Palavras reservadas
Documentaooficial:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
SonomesquevocnopodeusarporquetemumsignificadoespecialnalinguagemJava.
abstract
continue
for
new
switch
assert
default
goto
package
synchronized
boolean
do
if
private
this
break
double
implements protected
throw
byte
else
import
public
throws
case
enum
instanceof return
transient
catch
extends
int
short
try
char
final
interface
static
void
class
finally
long
strictfp
volatile
const
float
native
super
while
Tenhacalma!Vocnoprecisaconhecercadaumadelas.Masalgumasvocjdevesaber,
quesoostiposdedadoscitadosalgunstpicosacima!
Exerccios
1.EscrevaumprogramaemJavaquedeclareeimprimavariveiscomseunome,sexo,idade
ealtura.Utilizeotipoprimitivomaisadequadoemcadavarivelparaarmazenarovalor.
2.EscrevaumprogramaemJavaquedeclareeimprimavariveiscomseunome,sexo,idade
ealtura.Utilizeotipowrappermaisadequadoemcadavarivelparaarmazenarovalor.
Arrays ou Vetores
Documentaooficial:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html
Penseemarrayscomoumacoleodeobjetosdomesmotipo.
Exemplosdedeclaraoecriaodearrays:
int[]numerosInteiros={100,200,300}
char[]caracteres=newchar[2]
char[0]='m'
char[1]='n'
Amemriadeveseralocadaantesdeusaroarray.
Otamanhodosarraysfixo,isto,nopodesermudado.Parasaberotamanhodeumarray,
useapropriedadelength.
12
Exempo:
caracteres.length
Exerccio
3.EscrevaumprogramaemJavaquedeclareumvetordeStringscom5posies.Preencha
asposiescomnomesdeseusamigoseentoimprimaosnomesapartirdovetor.
Valores Nulos
Comexceodostiposprimitivos,variveisquereferenciamwrappers,vetoreseoutrostipos
complexospodemassumirvaloresnulos.
Umvalornulonocomoumnmerozeroouumtextosemnenhumcaracter.Elerepresenta
aausnciadevalor.Tentativasdeusarumavarivelnulogeralmenteresultamemerro.
int[]numerosInteiros=null
Integernumero=null
Operadores
Documentaooficial:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/opsummary.html
Sosmbolospararealizaroperaescomvaloresliteraisevariveis.
Atribuio
Defineovalordeumavarivel
inti=1
Aritmtica
SomaduasvariveisnumricasouconcatenaduasvariveisString
intsoma=1+2
Stringnome="Pipoca"+"Doce"
*/% Respectivamente:subtrao,multiplicao,divisoemdulo(restodediviso)
Negao
Negaumvalorbooleano
booleanverdadeiro=true
booleanfalso=!verdadeiro
13
Comparao
==
Igual
1==1
!=
Diferente
1!=2
>
Maiorque
2>1
>=
Maiorouigual
2>=1
<
lessthan
1<2
<=
lessthanorequalto
1<=2
Lgica
||
Ou
booleanresultado=false||true
&&
E
booleanresultado=true&&true
Comparao de Objetos
importanteatentarque,diferentesdetiposprimitivos,acomparaodeobjetosnofunciona
bemusandoooperador==.Paraobjetosesteoperadorinformaapenasseestamos
comparandoomesmoobjeto.
Asoluoparaissousaromtodoequals.Ento,usandoobjetosdotipoString,porexemplo,
devemosfazerassim:
StringvariavelTexto=...
StringoutraVariavelTexto=...
variavelTexto.equals(outraVariavelTexto)
14
EmJava,vriosobjetosjpossuemomtodoequalsprontoparauso.Porm,quandocriamos
nossosprpriostipos,seprecisarmosfazercomparaes,devemosnsmesmosfazera
implementao.
Exerccio
4.EscrevaumprogramaemJavaquedeclareduasvariveiscomnotasdeprovas,calculee
imprimaamdiadasnotas.
Estruturas de controle
Documentaooficial:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/flow.html
if (se-ento)
Aestruturadecontrolebsicadamaioriadaslinguagensdeprogramaooif.Elefazcom
queumtrechodecdigosejaimplementadoapenasseumadeterminadacondiofor
verdadeira.Exemplo:
if(nota>=7.5){
System.out.println("Passou!")
}
15
if-else (se-ento-seno)
Permitedefinirumcomandoouumblocodecomandosqueseroexecutadoscasouma
condionosejaverdadeira(seno).Exemplo:
if(nota>=7.5){
System.out.println("Passou!")
}else{
System.out.println("Nopassou!")
}
Vejaaindaumexemplocomencadeamentodeifs:
if(nota>=7.5){
System.out.println("Passou!")
}elseif(nota>=5.0){
System.out.println("Ficouderecuperao!")
}else{
System.out.println("Nopassou!")
}
switch
Oswitchpermiteescolherumadentrevriasalternativas.Exemplo:
switch(diaDaSemana){
case1:
System.out.println("Segunda")
break
case2:
System.out.println("Tera")
break
case3:
System.out.println("Quarta")
break
default:
System.out.println("Ops!")
}
16
while (enquanto)
Owhilepermiterepetirumcomandooublocoenquantoumacondioforverdadeira.
Exemplo:
while(velocidade<10){
velocidade+=1
}
do-while (faa-enquanto)
Tambmrepeteumbloco,comadiferenadequeaverificaodacondiofeitaapsuma
execuo.Exemplo:
do{
velocidade+=1
}while(velocidade<10)
for
Ofortambmrepeteaexecuodeumcomandooubloco,maselepermiterealizar
operaesdeinicializaoeincremento.Exemplo:
for(inti=1i<=10i++){
System.out.println("Contando:"+i)
}
Olaoacimaexibenmerosde1a10.Notequeoforpossuitrspartesprincipais:
Aprimeiradeclaraavariveiieainicializacomovalor1
Asegundatesteseovalordeimenorouiguala10
Aterceiraaumentaovalordeiem1(incremento)
foreach (para-cada)
Existeumavariaodolaoforquefacilitaacessartodososelementosdeumvetoroulistade
elementos.Exemplo:
String[]vetorPessoas={"Joo","Maria","Jos"}
for(Stringpessoa:vetorPessoas){
System.out.println(pessoa)
}
17
break
Interrompeumlao,mesmoqueacondionormalnosejaatendida.Exemplo:
while(true){
if(!temSaldo)break
pagarContas()
}
return
Interrompeaexecuodomtodoatualepossibilitaretornaralgumvalor.Exemplo:
doublepi(){
return3.14159
}
Exerccios
Treinoamelhorformadefixareaprofundaroconhecimento.Utilizeosconceitos
apresentadosatagoraparaescreverprogramasemJavaconformeasorientaesaseguir:
5.Imprimaosnmerosde11a17.
6.Imprimaosnmerosmparesentre0e100.
7.imprimaosnmerosprimosde1a100.
8.Imprima50vezesaletraZusandoconcatenaodetexto.
9.ImprimaalternadamenteasletrasAeBpor10vezescadauma.
10.Crieumvetordedoublecom10posiesecoloquenmerosaleatriosemcadaposio,
depoisimprimaosnmeros.Dica:useocomandoMath.random().
11.ImprimatodososdiasdomsatualusandoaclasseCalendar.
12.Imprimatodososdiasdesemanadomsatual,exibindoonomeporextensodecadadia.
Exemplo:1Segunda,2Teraeassimpordiante.
Tratamento de Erros
Errospodemocorreremqualquerlugardocdigo:aotentaracessarumavarivelnula,uma
posiodoarraymaiorqueotamanho,umarquivoquenoexiste,ouumaconexodainternet
quecaiu.
18
NalinguagemJava,errossochamadosdeexcees,porissotambmfalamosem
tratamentoexcepcional.AAPIdoJavavemcomvriostipospararepresentarexcees,por
exemplo:Exception,ArithmeticException,RuntimeException,Errorevriosoutros
derivadosdesses.
Existeummecanismodecapturadeerrosquepermiterealizarotratamentoadequadodeles.
Exemplo:
try{
int[]numeros={1,2}
System.out.println(numeros[2])
}catch(ArrayIndexOutOfBoundsExceptione){
e.printStackTrace()
}
OJavaficaatentoparatudooqueocorredentrodoblocktry.Seocorrerumerrodotipo
declaradonocatch,entoorespectivoblococomeaaserexecutado.Seumaexceo
ocorrerenohouverumblocodetratamento,oprogramainteiroencerrado.
Noexemploacima,aexceocapturadanavarivele.Eumtipoquepossuiamensagem
doerroeumapilha.Essapilhamostraexatamenteondeocorreoerroequaissclassese
mtodosforamchamados.OmtodoprintStackTraceexibetodasessasinformaes.
Lanando erros
Muitasvezesvocmesmoprecisalanarumerro.Porexemplo,nocasodeumusuriodigitar
umvalorinvlidoparaseuprograma.
Paraissovocpodeusarocomandothrowseguidodeumaexceo.
if(nome.equals("")){
thrownewException("Onomenopodeserembranco!")
}
Nocdigoacima,lanamosumanovaexceodotipoException.Issoirinterrompera
execuodoprograma,anoserqueemalgumlugaroerrosejatratado,isto,capturadopor
umblococatch.
Exerccios
13.Escrevaumprogramaquegereumadivisoporzero,captureaexceoeimprimaoerro.
19
Exerccios de Fixao
1. Faixa de Valores
Useomodeloabaixoeimplementearotinaquerecebeumnmerointeirodeformaqueretorne
valoresdaseguinteforma:
menorque9retorna0
10a19retorna1
20a29retorna2
90a91retorna9
100oumaisretorna10
publicclassExercicio{
publicstaticintcalculaFaixa(intn){
intresultado
???
returnresultado
}
publicstaticvoidmain(String[]args){
System.out.println("Resultado:"+calculaFaixa(1))
System.out.println("Resultado:"+calculaFaixa(0))
System.out.println("Resultado:"+calculaFaixa(19))
System.out.println("Resultado:"+calculaFaixa(20))
System.out.println("Resultado:"+calculaFaixa(99))
System.out.println("Resultado:"+calculaFaixa(100))
System.out.println("Resultado:"+calculaFaixa(101))
}
}
20
2. Cabea e Cauda
Useomodeloabaixoeimplementearotinaquerecebeumarraydecaracteres,retornandotrue
quandooprimeiroeoltimoelementosdoarrayforemiguaisefalsecasocontrrio.
publicclassExercicio{
publicstaticbooleancabecaCauda(char[]n){
booleanresultado
???
returnresultado
}
publicstaticvoidmain(String[]args){
int[]teste1={1,3,1}
System.out.println("Resultado:"+cabecaCauda(teste1))
int[]teste2={1,3,5}
System.out.println("Resultado:"+cabecaCauda(teste2))
}
}
21
3. Expresso e Comparao
Useomodeloabaixoeimplementearotinaquerecebetrsnmerosa,beceretorneo
seguinteresultado:
SOMA,sec=a+b
SUBTRAO,sec=ab
null
publicclassExercicio{
publicstaticbooleancomparar(inta,intb,intc){
Stringresultado=null
???
returnresultado
}
publicstaticvoidmain(String[]args){
System.out.println("Resultado:"+comparar(1,2,3))
System.out.println("Resultado:"+comparar(1,3,5))
System.out.println("Resultado:"+comparar(3,1,2))
System.out.println("Resultado:"+comparar(1,3,2))
}
}