Introdução
"Sempredesejeiqueomeuomputador
fossetãofáildeusaromoomeu
telefone.Omeudesejorealizou-se. Já
nãoseiusaromeutelefone"
BjarneStroustrup,riadorda
linguagemC
Orientação à objetoséum paradigma de programação,isto é,
umaforma ou estilo de programar. Basiamente, este modelo de
programação utiliza o oneito de objetos para agrupar as infor-
mações eoperações de entidades abstratasobjetivando a solução
de problemas. Assim, dizemos que uma linguagemé orientada a
objetosquandoeladisponibilizareursoslinguístiosquefavoreem
aimplementaçãodeprogramasusandoesteestilodeprogramação.
Comisso, podemosde ertaforma tratar aslinguagens omofer-
ramentasde implementação deste modelode programação, sendo
algumas delas mais apropriadas para a onstrução de programas
nesteestilo,eoutrasmenos.
Estematerialestáinseridoemumontextonoqualosalunosjá
ursaramaUnidadeCurriulardenominadaAlgoritmoseLógiade
Programação queintroduzosaspetosfundamentaisdeimplemen-
taçãodeprogramassobaformaproeduraleestruturada 1
eutiliza,
nesteontexto,alinguagemComoferramentadeimplementação.
Como, nesta Unidade Curriular será utilizada a linguagem Java
omoferramentade implementaçãodosoneitosdeOrientaçãoa
Objetos,éneessárioapresentaralgunsdetalhesepriípiosbásios
dalinguagemantesdeaprenderonovoparadigma. Apesardeserem
linguagenstotalmentediferentes, asintaxe do Javaémorfologia-
mentemuitopareidaomalinguagemC.EsteCapítuloapresenta
umbreveresumodasintaxe,tiposdedados,operadores,omandos
básios,estruturas linguístias,onvenções de ódigo earaterís-
tiastenológiasofereidaspelaLinguagemdeprogramaçãoJava.
1.1 Coneito de Máquina Virtual Java
Algumas linguagens de programação, omo por exemplo, C e
Pasal,ompilamseusprogramasfontesparaumaplataformaeum
sistemaoperaionalespeío. Oódigobinário geradopela om-
pilaçãoéentãoexeutadopelosistemaoperaionalnativoparaqual
elefoiompilado. Istoé,este ódigoexeutável poderáser apenas
exeutadonestesistemaoperaional. Para queomesmoprograma
funioneemoutrosistema operaional éneessárioompilaroó-
digofontenovamenteutilizandoumompiladoradequadoparaeste
novosistemaemquestão.
OJavaadotaumoneitodemáquinavirtualqueadiionauma
amadaextra entreosistema operaional ea apliação. Esta a-
madaéresponsávelporexeutaroódigoJavaompilado,interpre-
tandoos omandos emhamadas do sistema operaional no qual
estárodandonomomento. AMáquinaVirtualJavaouJavaVirtual
Mahine(JVM)éresponsávelpelainterpretaçãodosbyteodes 2
.
AFigura1.1desreveooneitogeraldaMáquinaVirtualJava.
UmódigodeprogramafonteemJavaéompiladoparabyteodes
epodendoserexeutadopormáquinasvirtuaisJavaespeíaspara
diferentesplataformas.
1
As diferenças entre os paradigmasOrientado a Objetos do paradigma
ProeduraleEstruturadoserãodisutidasnoCapítulo2.
2
Código Fonte Java Compilador Java
Bytecodes
JVM LINUX JVM Windows
Máquina Sist. Oper. LINUX
Máquina Sist. Oper. Windows
Figura1.1: ConeitogeraldaMáquinaVirtualJava.
1.2 Plataforma deDesenvolvimentoJava
Oproessoderiaçãodeapliaçõesouprogramasnalinguagem
Java passa pela edição do ódigo fonte, ompilação para byteo-
des e exeução pela máquina virtual Java. A edição do ódigo
fontepode ser feita por meiode umeditorde textosimples. En-
tretanto,existem ferramentas que failitamo desenvolvimento de
apliações Java. Estas ferramentas também sãoonheidas omo
IDE(Integrated Development Environment), ou seja, um Ambi-
ente de Desenvolvimento Integrado. Estes ambientes disponibili-
zamumasériede reursos paradarprodutividade. Dois exemplos
interessantes de IDEsão: NetBeans (http://www.netbeans.org) e
Elipse(www.elipse.org).
OJDK5.0éambientededesenvolvimentodalinguagemJava,
ontendo oonjunto de ferramentas para ompilar, depurar, exe-
utar e doumentarum programa esritoem Java. O arquivo de
instalaçãopode ser enontrado no site oialda Sun 3
, aproxima-
dente60Mbde tamanho.
Oproedimentodeinstalaçãogeralmenteésimples,exeutando
o arquivo e seguindo os passos, esolhendo o diretório desejado.
Apósainstalação,éneessárioonguraralgumasvariáveisdeam-
bienteno sistemaoperaional. Basiamentesãoduasvariáveisim-
portantes que o Java neessita que voê adiione: JAVA_HOME e
CLASSPATH.
OJavautilizaavariáveldeambientehamadaCLASSPATHpara
3
prourarpelaslassesepaotessemprequeforneessáriopelospro-
gramas.AvariávelJAVA_HOMEtornapossívelexeutaroompilador
Javaeamáquinavirtual dequalquer diretório. NoWindows(NT,
2000, e XP), voê poderá adiionar novas variáveis de ambiente
em: Iniiar Painel de Controle Sistema Avançado
Variáveisde Sistema.
Aompilaçãodoódigofonteserárealizadapeloomandojava
seguidodonomedoarquivo(.java)paraqueoompiladordoJava
gereobyteodeorrespondente. Obyteode geradoestaránosar-
quivos ontidos no diretório atual om a extensão (.lass) e o
mesmonomeda sualasse Java ompilada. A exeuçãodo byte-
ode serápor meiodo omandojavaseguidodo nomedalasse,
invoandoamáquinavirtual para interpretaroseuprograma.
1.3 Estrutura da Linguagem
Comofoi dito anteriormente a sintaxe da Linguagem Java se-
guepareidaomalinguagemC.Aseguir,apresentamosdeforma
resumidaosreursoslinguistiosbásiosdoJava.
1.3.1 Comentários
Osomentáriospodemser desritosdeduasformasgerais:
// omentário de uma únia linha
/* omentário de uma ou mais linhas */
1.3.2 Estilo e organização
Os bloos de ódigo são demarados entre haves { } e ao
nal de ada instruçãodeverá ser usado o; (ponto evírgula). A
linguagemJavaéCaseSensitive,istoé,signiaqueoompilador
iráfazeradifereniaçãoentreletrasmaiusulaseminusulas.
Toda lasse em Java deverá ser denidaom o mesmonome
do arquivo (.java), sendo adotado omo padrão que o primeiro
aratere de todas as palavras que ompõem o identiador da
lasse deve ser maiúsulo. Exemplos: Pessoa, ContaCorrente
e TimeDeFutebol. Os Métodos, Atributos e Variáveis adotam
omopadrão oprimeiro arater minúsuloe demaispalavrasini-
odigoVip. Jáasonstantesdevemadotaropadrãoomtodosos
arateresmaiúsulosedivisãodepalavrasutilizando_. Exemplos:
AZULeAZUL_CLARO.
1.4 Tipos de Dados
EmJava, omoemoutraslinguagensfortementetipadas,toda
variáveldeveser delarada desrevendootipodainformaçãoa ser
armazenada. Asintaxededelaraçãosegueidentiaautilizadapela
linguagemC.
<Tipo> <identifiador>;
ou
<Tipo> <identifiador> = valor;
ou
<Tipo> <identifiador> = valor, <identifiador> = valor... ;
TipoJava TipodeDado TamanhoemBytes
int inteiro 4
byte inteiro0até255 1
long inteirolongo 8
oat real 4
double reallongo 8
boolean lógio 1
har 1aratere 2
Tabela1.1: TiposprimitivosJava.
A Tabela 1.4 apresenta alguns tipos primitivos da linguagem
Java. As variáveis denaspara essestipos armazenam ovalor di-
retamente no espaço aloado em memória. As variáveis do tipo
referênia armazenam o endereço de memória para um determi-
nadovalorouobjeto,quedependendodainformaçãoeexeuçãodo
programa,podeterespaçodememóriavariável,omoporexemplo,
otipoStringqueserádesrito maisadiante.
Os valores literais que representam uma informação do tipo
floatdevemreeberoaraterefapós ainformação. Exemplos:
1.5 Operadores
Osoperadores nalinguagemJava adotadossão osmesmosda
linguagemC/C++.
1.5.1 Aritmétios
Operador Desrição
+ soma
- subtração
* multipliação
/ divisão
% restodadivisão(mod)
++ inremento
deremento
Tabela1.2: OperadoresAritmétios Java.
1.5.2 Lógios
Operador Desrição
&& onjunção(E)
|| disjunção(OU)
! negação(NO)
Tabela 1.3: Operadores LógiosJava.
1.5.3 Relaionais
Operador Desrição
> maior
>= maiorouigual
< menor
<= menorouigual
== igualdade
!= diferente
Tabela1.4: Operadores RelaionaisJava.
1.6 Desvios Condiionais
ALinguagemJava, omoqualqueroutralinguagemde progra-
mação,suportadesviosondiionaisutilizandoaestruturaif..else.
Quandotemosmais de umomandoa ser exeutado para umde-
terminadaondição,devemosagruparestesomandosemumbloo
delimitadoporhaves,onformeindiadonoExemplo1.1.
if (ondição)
{
comando 1
;comando 2
;...
comando n
;}
else
comando
;if (ondição)
comando
;else
{
comando 1
;
comando 2
;...
comando n
;}
if (ondição)
{
comando 1
;comando 2
;...
comando n
;}
else
{
comando 1
;comando 2
;...
comando n
;
}
Exemplo1.1: Padrõesdedesviosombloos.
Logo,quandonãohánenhumomandoaserexeutadonoaso
daondiçãoser falsa, devemosomitir aparteelsedo omandoif,
omoindiadono Exemplo1.2.
if (ondição)
comando
;
if (ondição)
{
comando 1
;comando 2
;...
comando n
;}
1.7 Laços de Repetição
A LinguagemJava, disponibiliza diversostiposde laçosde re-
petição. Asmais omuns sãoofereiadas por meiodas estruturas
whileeforonformeindiadonoExemplo1.3.
while (ondição)
comando
;for (iniio;ondição;passo)
comando
;while (ondição)
{
comando 1
;
comando 2
;...
comando n
;}
for (iniio;ondição;passo)
{
comando 1
;
comando 2
;...
comando n
;}
Exemplo1.3: Padrõesdelaçosderepetição.
1.8 Manipulação de Strings
Na linguagem Java, o tipo String é espeial. Não podemos
onsiderá-loomotipoprimitivo. Naverdade, Stringéumalasse
Java para manipular uma adeia de arateres. Comoo oneito
delasseapenasserámostradoemapítulosfuturos,pretendemos,
neste momento, apenas apresentar omo manipular esse tipo de
dado sem onheimentosdos detalhes oneituais. Diferente dos
tipos primitivos, a omparação de duas strings nãopode ser feita
expliitamente por meio dos operadoradores relaionais == != >
<,et... Alémdisso,umavariávelStringdisponibilizaalgumasope-
raçõespré-denidasqueajudamasuamanipulação. Outrodetalhe
équepodemosutilizaroperador+paraonatenarumaStringom
01 String s1 = "Oi gente.";
02 String s2 = "Tudo bem?";
03 String s3;
04
05 s3 = s1 + s2;
06 s2 = s1 + 85;
07 if ( s1.equals("Oi Pessoal") )
08 System.out.print("sim. as strings são iguais");
09 else
10 System.out.print("sim. as strings são iguais");
Exemplo1.4: ManipulaçãodeStringsemJava.
Na linha 5 do Exemplo 1.4, a string
s 3
reebe o valor "Oi gente.TudoBem?"representandoaonatenaçãodastrings 1
oms 2
. Ooperadordeonatenação+podeserapliadoaoutrostiposde valores para uma stringonformeindiado pela linha6. Neste
aso,astring
s 2
reeberáovalor "Oigente.85". Alinha7exem- pliaousodaoperaçãoequals paraomparaçãodeduasstrings.Método Desrição
harAt(n) devolveoaraterexistentenaposição
n
length() devolveotamanhodastring
equals(s) omparaumastringom
s
Tabela 1.5: AlgunsmétodosparamanipulaçãodeStrings.
1.9 Entrada e Saída de Dados
OJava disponibiliza diversaslasses que manipulama entrada
esaídabásiasparalereesrever emarquivos,envio dedadosvia
redeeoonsole 4
.
AlasseSystemdisponibilizaoaessoparaasaídaeentradapa-
drãopor meiodo System.out eSystem.in respetivamente. Estes
paqueotes ofereem métodos de impressão e leitura usadospara
manipulardadosemumprogramanoonsole.
4
Consoleéonomedadoajaneladelinhadeomandostambémonheida
1.9.1 Saída de Dados
O paote de lasses System.out oferee dois métodos básios
paraimpressão. Oprint paraapresentardadosnatelasemquebra
de linha e println para apresentar dados na tela om quebra de
linhaaonaldaimpressão.
01 int qtde = 5;
02 System.out.print("Tenho "+ qtde + "amigos.");
03
04 oat valor = 1.55f;
05 System.out.println("Tenho apenas R$:"+ valor);
Exemplo 1.5: Uso do System.out.print() e System.out.println().
O Java disponibiliza a mesma função printf()da linguagem
/
...p ensei que
euiamelivrar
da linguagem
C...
C omo um método do paote de lasses System.out, onforme
apresentadonoExemplo1.6.
01 int idade = 20;
02 System.out.printf("idade: %2d",idade);
03
04 oat preo = 123.35f;
05 System.out.printf("Preço: %.2f",preo);
Exemplo1.6: UsodoSystem.out.printf().
1.9.2 Leitura de Dados
OJavadisponibilizaalasseSannerdopaotejava.util. Essa
lasseimplementaasoperaçõesdeentradadedadospeloteladono
onsole. ParautilizaralasseSannerdeve-se importarorespe-
Z
...nãosepreo-
up e, logosa-
b erá o que é
instaniar um
objeto...
tivo paote, adiionando a linha import java.util.Sanner;
noiníiodo arquivode ódigo. Além disso,deve-se instaniar um
objetodestalasse,onformeapresentadono Exemplo1.7.
01 import java.util.Sanner;
02
03 lass lass TesteLeitura {
04 publistativoid main(String args[℄) {
06 Sanner leitor = new Sanner(System.in);
07 System.out.println("Informe uma idade:");
08 int n = leitor.nextInt();
09 System.out.println("Valor digitado: "+n);
10 }
11 }
Exemplo1.7: UsodalasseSanner.
Tipo Exemplode uso
inteiro int n = leitor.nextInt();
real(oat) oat preo = leitor.nextFloat();
real(double) double salario = leitor.nextDouble();
String(palavra) String palavra = leitor.next();
String(texto) String texto = leitor.nextLine();
Tabela1.6: Leituradosdiversostiposdevalores.
AleituradosdiversostiposdiferenteséapresentadapelaTabela
1.9.2. Enquanto leitor.next()é usado na leitura de palavras
simples, ou seja, não são separados pelo aratere de espaço, o
omandoleitor.nextLine()éusadonaleituradepalavrasom-
postas,omoporexemplo,oigente.