Sunteți pe pagina 1din 21

1

Introduo Programao
Orientada a Objetos
com Java

VersodeAgostode2014

LuizRicardo
http://luizricardo.org

Vocestautorizadoeincentivadoadistribuirestematerial.
Copie,compartilheemodifique,lembrandoapenasdecitarafonte.

O que Java?
DefinirJavaumatarefacomplexa,poisexistemvriasfacetas.Vamostentar...

Java uma linguagem de programao de alto nvel


Umalinguagemdeprogramaoumalinguagemprojetadaparacomunicarinstruesao
computador,masaomesmotemposerentendidaeescritaporsereshumanos.
Pensenumjogodedamas.Vocpodecoordenaromovimentoatravsdeinstrues.

Exemplodecomando:mover3AparaB4.
Damesmaforma,umalinguagemdeprogramaoumaformadegravaressasinstrues
queseroentoexecutadasparaatingiroresultadoesperado.

Java orientada a objetos


OrientaoaObjetosumparadigmadeprogramaoquefacilitaamodelagembaseadaem
objetosdavidareal,aumentaaflexibilidadeeacapacidadedereusodocdigo.Aprogramao
orientadaaobjetosemJavabaseadaemclasses(tipos),quepossuematributosemtodos
(aes).

Java portvel
ExecutaemqualquercomputadorousistemaoperacionalquetenhaumaversodaMquina
VirtualJava(JavaVirtualMachineJVM).

Java robusto, seguro, distribudo e concorrente


umalinguagemrelativamenterpida,evitaerrosdeexecuo,possuibonsmecanismosde
gerenciamentodememriaetratamentodeexcees,possuivriosmecanismosde

segurana,suportaambientesdistribudosemredeepermiteexecuoparalela
(multithreading).

Java uma plataforma de software


umaplataformacompostapordiversosprodutosesoluesparaasmaisvariadas
finalidades.Issosignificaquevocnocomeadozero,masconstriasoluoapartirdos
fundamentosdaplataforma.

Java uma arquitetura


Arquiteturaumaformadeorganizarumsoftwareemcomponenteseorelacionamentoentre
eles.AsdiversasAPIsdaplataformaJavadisponibilizamcomponentesindependentesque
podemosaproveitarparaconstruirnossossistemas.
API(ApplicationProgrammingInterface)aformacomoseinteragecomcadacomponente.
EmJavatemosAPIsdoJavaSE(StandardEdition)paraaplicaesdesktopeoJavaEE
(EnterpriseEdition)paraaplicaeswebdistribudas.

Java gratuito
IssosignificaquevocnoprecisapagarlicenasparadesenvolversistemasemJavanem
paraexecutarJavanaempresaouemcasa.

Como o Java funciona?


Cdigo de mquina e a Mquina Virtual
Ocomputadorexecutacdigodemquina(binrio).Diferentesconjuntosdenmerosbinrios
representamdiferentesinstruesparaaCPU.
Masnsescrevemosapenasumarquivotextoeissodevesertransformado(compilado)em
cdigobinrio.LinguagenscomoCconvertemoseucdigoparalinguagemdemquinaou
cdigoexecutvel,geralmenteparaumtipodeprocessadorespecfico.
Javacompilaparaumcdigointermediriochamadobytecode.EntoaMquinaVirtual(JVM)
entraemao.Elaresponsvelporcarregarobytecodeeexecutlocomoumprocessador
virtual.
Metfora:cdigocompiladocomoadublagemdeumfilme,feitaumavezantesparauma
lnguaespecfica.Poroutrolado,aJVMcomoumdubladorsimultneoquetemoroteiroem
mos.
Esseprocessodeixaaexecuoumpoucomaislentadoqueemlinguagensqueso
convertidasemcdigodemquina,pormhumamaiorseguranasobreoqueest
acontecendo.Porexemplo,umprogramaemCpodeacessarmemriainvlidafacilmente,j
emJavaaJVMverificaseoacessoestsendofeitopermitido.

O que um programa em Java?


Naprtica,consisteemumoumaisarquivostextocomaextenso.java.Cadaarquivo.java
declaraumoumaistipos(classe).
OcompiladorJava(javac)vaiconverteressesarquivosembytecodecomextenso.class.
DepoisaJVMvaicarregareexecutarosarquivosusadoseexecutarasinstruesemformato
bytecode.

Instalando e Executando o Java


ParacompilarerodarprogramasvocprecisainstalaroJava.Eleumprogramacomo
qualqueroutro,masnotequeexistemduasverses.

JRE (Java Runtime Edition)


ContmaJVMparaexecutarprogramasemJava.Useocomandojavaparaexecutarum
programa.

JDK (Java Development Kit)


ContmocompiladorparatransformarseucdigoJavaembytecode,almdeoutras
ferramentasmaisavanadas.
Useocomandojavacparacompilarocdigoegerarumarquivo.class.

Qual verso usar?


NasuacasavocsprecisadoJREparaentrarnobanco,executaralgumprograma,etc.
NaempresaenocursovamosusaroJDKparacriarnossosprpriosprogramas.

Exerccio: mtodo main


PorondecomeaumprogramaJava?Emummtodoespecialchamadomain.
EmJava,todocdigoficadentrodeclasses.Nohfunesoucdigosolto.
Porenquanto,vamosapenasseguiroseguintemodelo:
publicclassExercicio{

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.

Tipos de dados primitivos e Strings


Documentaooficial:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
OJavasuportaosseguintestiposdedadossimples:

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.

Tipos empacotados (Wrapers)


Almdostiposprimitivos,oJavadisponibilizaclassesquetrabalhamcomosdiferentestiposde
dados:

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.

Expresses, comandos e blocks de cdigo


Documentaooficial:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html
Expressessoconstruescomvariveis,operadoreseexecuodemtodosqueretornam
umvalornico.Exemplo:
intmedia=(x+y)/2
Comandossocomofrasesemumalinguagemnatural.EmJava,cadacomandoterminacom
umsinaldepontoevrgula.Exemplo
System.out.println("Digaoi!")
Blocosdecdigosogruposdecomandoscercadosdechaves.Exemplo:
{
comando1
comando2
comando3
}

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))
}
}

S-ar putea să vă placă și