You are on page 1of 242

Clayton Escouper das Chagas

Cssia Blondet Baruque


Lcia Blondet Baruque

Volume nico

Java Bsico e
Orientao a Objeto

Java Bsico e
Orientao a Objeto
Volume nico

Apoio:

Clayton Escouper das Chagas


Cssia Blondet Baruque
Lcia Blondet Baruque

Fundao Cecierj / Extenso


Rua Visconde de Niteri, 1364 Mangueira Rio de Janeiro, RJ CEP 20943-001
Tel.: (21) 2334-1569 Fax: (21) 2568-0725
Presidente
Masako Oya Masuda
Vice-presidente
Mirian Crapez
Coordenadoras da rea de Governana: Gesto, Auditoria
e Tecnologia da Informao
Lcia Blondet Baruque
Cssia Blondet Baruque

Material Didtico
Departamento de Produo

ORGANIZAO

Cssia Blondet Baruque


ELABORAO DE CONTEDO

Clayton Escouper das Chagas


Cssia Blondet Baruque
Lcia Blondet Baruque

EDITORA

PROGRAMAO VISUAL

Tereza Queiroz

Mrcia Valria de Almeida


Ronaldo dAguiar Silva

COPIDESQUE

Cristina Freixinho
REVISO TIPOGRFICA

Elaine Bayma
Daniela Souza
Janana Santana
Thelenayce Ribeiro
COORDENAO DE
PRODUO

ILUSTRAO

Jefferson Caador
CAPA

Sami Souza
PRODUO GRFICA

Osias Ferraz
Vernica Paranhos

Katy Araujo

Copyright 2009, Fundao Cecierj / Consrcio Cederj


Nenhuma parte deste material poder ser reproduzida, transmitida e gravada, por qualquer meio
eletrnico, mecnico, por fotocpia e outros, sem a prvia autorizao, por escrito, da Fundao.

C433j
Chagas, Clayton Escouper das.
Java Bsico e Orientao a Objeto: volume nico / Clayton Escouper
das Chagas, Cssia Blondet Baruque, Lcia Blondet Baruque. Rio de
Janeiro: Fundao CECIERJ, 2010.
238p.; 19 x 26,5 cm.
ISBN: 978-85-7648-648-0
1. Linguagem de programao. 2. Java. 3. Programao grfica. I.
Baruque, Cssia Blondet. II. Baruque, Lcia Blondet. III.Ttulo.

2010/1

CDD: 005.133
Referncias Bibliogrficas e catalogao na fonte, de acordo com as normas da ABNT e AACR2.

Governo do Estado do Rio de Janeiro

Governador
Srgio Cabral Filho

Secretrio de Estado de Cincia e Tecnologia


Alexandre Cardoso

Universidades Consorciadas
UENF - UNIVERSIDADE ESTADUAL DO
NORTE FLUMINENSE DARCY RIBEIRO
Reitor: Almy Junior Cordeiro de Carvalho

UFRJ - UNIVERSIDADE FEDERAL DO


RIO DE JANEIRO
Reitor: Alosio Teixeira

UERJ - UNIVERSIDADE DO ESTADO DO


RIO DE JANEIRO
Reitor: Ricardo Vieiralves

UFRRJ - UNIVERSIDADE FEDERAL RURAL


DO RIO DE JANEIRO
Reitor: Ricardo Motta Miranda

UFF - UNIVERSIDADE FEDERAL FLUMINENSE


Reitor: Roberto de Souza Salles

UNIRIO - UNIVERSIDADE FEDERAL DO ESTADO


DO RIO DE JANEIRO
Reitora: Malvina Tania Tuttman

DEDICATRIA

Dedico este trabalho memria da professora Cssia Blondet Baruque, principal responsvel por minha participao neste importante projeto de ensino a distncia junto ao CECIERJ/
CEDERJ.
Seu dinamismo e competncia deixaram ensinamentos a todos. Onde estiver, tenho certeza
de que est feliz com o resultado alcanado, fruto das sementes por ela lanadas.

Java Bsico e
Orientao a Objeto
SUMRIO

Volume nico

Prefcio ........................................................................................................ 9
Rubens Nascimento Melo

Introduo ............................................................................................... 15
Clayton Escouper das Chagas / Cssia Blondet Baruque / Lcia Blondet Baruque

Aula 1 Introduo ao Java ........................................................................ 25


Clayton Escouper das Chagas / Cssia Blondet Baruque / Lcia Blondet Baruque

Aula 2 Tipos de dados e estrutura de programao em Java ..................... 45


Clayton Escouper das Chagas / Cssia Blondet Baruque / Lcia Blondet Baruque

Aula 3 Estruturas de controle e entrada de dados em Java ....................... 65


Clayton Escouper das Chagas / Cssia Blondet Baruque / Lcia Blondet Baruque

Aula 4 Arrays ............................................................................................ 87


Clayton Escouper das Chagas / Cssia Blondet Baruque / Lcia Blondet Baruque

Aula 5 Orientao a Objeto I................................................................... 101


Clayton Escouper das Chagas / Cssia Blondet Baruque / Lcia Blondet Baruque

Aula 6 Orientao a Objeto II ................................................................. 119


Clayton Escouper das Chagas / Cssia Blondet Baruque / Lcia Blondet Baruque

Aula 7 Tratamento de excees em Java ................................................ 137


Clayton Escouper das Chagas / Cssia Blondet Baruque / Lcia Blondet Baruque

Aula 8 Bibliotecas do Java Standard Edition (JSE) .................................. 149


Clayton Escouper das Chagas / Cssia Blondet Baruque / Lcia Blondet Baruque

Aula 9 Programao grfica em Java I ................................................... 167


Clayton Escouper das Chagas / Cssia Blondet Baruque / Lcia Blondet Baruque

Aula 10 Programao grfica em Java II ............................................... 183


Clayton Escouper das Chagas / Cssia Blondet Baruque / Lcia Blondet Baruque

Apndice A ............................................................................................. 203


Clayton Escouper das Chagas / Cssia Blondet Baruque / Lcia Blondet Baruque

Apndice B ............................................................................................ 221


Clayton Escouper das Chagas / Cssia Blondet Baruque / Lcia Blondet Baruque

Referncias............................................................................................. 233

Prefcio

Para mostrarmos a importncia do aprendizado da linguagem de programao Java, precisamos antes fazer uma retrospectiva sobre programao
e suas linguagens atravs dos tempos, ate chegarmos em Java.
Sempre que converso sobre a histria da computao em minhas
aulas, digo que no seu nascimento, na dcada de 40 e depois da 2a guerra,
o computador era apenas uma mquina pouco amigvel. A nica forma de
se comunicar com ele era atravs de linguagem de mquina um tipo de
programao de baixo nvel exclusiva para a mquina que estava sendo
programada. Essa linguagem consistia de comandos binrios ou hexadecimais, e isso era extremamente trabalhoso e improdutivo do ponto de vista
da programao.
No ITA, em 1968, meu trabalho de fim de curso de graduao era um
programa extremamente complexo feito em linguagem de mquina para
o IBM 1620. Era uma verdadeira tripa de comandos em linguagem de
mquina, para calcular a Entropia da Lngua Portuguesa, que determinava
as frequncias de grupamentos de letras da lngua para otimizar a banda de
um canal de comunicaes. A implementao de qualquer tarefa ou suas
modificaes em linguagem de mquina era extremamente penosa.
Com o tempo, percebia-se que o programador gastava muito do seu
trabalho se digladiando com comandos e instrues de mquina e pouco com
a lgica do seu sistema. Um aluno de hoje pode achar uma loucura o que vou
falar, mas, na evoluo seguinte, para os Assemblers, a vida do programador
melhorou muito. Foi uma mudana do purgatrio para o paraso, eram as
chamadas Linguagens de Segunda Gerao onde o programador podia usar
nomes simblicos para seus comandos e dados.

Java Bsico e Orientao a Objeto

| Prefcio
Ainda no ITA, minha experincia seguinte foi com o IBM 1130, no final

da dcada de 1960 e incio da de 1970. Os computadores ainda tinham pouca


memria e poucos recursos, mas as linguagens de alto nvel j eram mais acessveis e a programao em linguagem de mquina ou Assembler eram somente
complementares. No IBM 1130 a linguagem principal era o Fortran.
As linguagens de alto nvel como FORTRAN e COBOL, eram chamadas de Linguagens de Terceira Gerao, pois traziam um novo paradigma
ao se libertarem da dependncia dos cdigos de mquina e favoreciam a
descrio lgica dos procedimentos da programao. Durante esse tempo,
na academia, as linguagens de programao estavam sendo formalizadas,
em termos de suas gramticas, sintaxes etc. Uma primeira dessas linguagens
mais bem-nascidas foi a Algol 60 (Algorithmic Language). Outras linguagens
dessa mesma poca tiveram algum destaque em nichos especficos como,
por exemplo, Simula, Lisp, Pascal, C, entre outras. Tambm na dcada de
1970 veio a onda da programao estruturada, dando uma nova perspectiva
para a forma de programar com mais qualidade.
Entretanto, na prtica, nesse tempo se programava muito em Cobol,
Fortran e depois em PL/I (uma linguagem que era um mix de Fortran,
Cobol e Algol). Mais tarde apareceu a linguagem BASIC que ficou famosa
nos primeiros microcomputadores. BASIC o acrnimo de Beginners Allpurpose Symbolic Instruction Code, e nasceu de Fortran (acrnimo de Formula
Translation). BASIC deveria ser a linguagem didtica para iniciantes, mas
no trazia nada de bom para programao organizada, ou seja, estruturada.
Costumo dizer que quem aprendeu BASIC como sua primeira linguagem
tem problema de infncia. Contudo, seu sucesso foi muito grande. Todos
programavam em BASIC, tanto que at hoje temos linguagens originadas
a partir dela, mesmo sendo as verses atuais muito diferentes de sua antepassada, como o caso de Visual BASIC da Microsoft.
O importante nicho da rea comercial, ou seja, as reas bancria,
aturia, seguros, comrcio, entre outras que tinham a necessidade de utilizar recursos computacionais face grande quantidade de informaes e
manipulao de dados que concentravam, ficou com COBOL. Hoje, muitos
dos sistemas legados dessas reas esto escritos nessa linguagem.
Com o passar do tempo, as Linguagens de Terceira Gerao foram
incluindo mais facilidades para a construo de programas bem modularizados e estruturados. A programao com essas linguagens foi difundida nos
diversos computadores, que deixaram de ser luxo das grandes indstrias,
universidades e rgos militares e se tornaram muito mais capilares, tendo

10

Governana: Gesto, Auditoria e Tecnologia da Informao

seu pice com a criao e disseminao dos computadores pessoais (PCs).


PREFCIO

Com o avano tecnolgico das linguagens, foi necessrio facilitar o desenvolvimento de sistemas, j que a demanda crescera desesperadamente. Dessa
forma, os paradigmas evoluram e as tcnicas de anlise e projeto de sistemas
se tornaram cada vez mais refinadas.
Portanto, as linguagens que comearam com instrues de mquina
e Assemblers deram lugar s estruturadas. As linguagens estruturadas evoluram sempre focadas na legibilidade e elegncia de programao. Tambm
trouxeram as facilidades de funes e sub-rotinas ou procedimentos e de
utilizao de bibliotecas para a modularizao de sistemas. Em paralelo, a
rea de programao evolua com novas tcnicas e mtodos para melhorar
a qualidade dos sistemas produzidos. Isso tudo resultou em uma nova engenharia (Engenharia de Software).
Esta necessidade de melhoria trouxe mais um conceito, que apesar
de ter nascido na dcada de 1970, s tomou forma e cresceu na dcada de
1980, e at hoje domina o projeto de qualquer linguagem que seja criada com
o intuito de concorrer com as outras: a Orientao a Objetos. Costumo dizer
que, com esse paradigma de programao, estamos chamando a ateno
da importncia da modelagem dos dados junto com seu comportamento.
Segundo esse paradigma, o programa implementa as classes de objetos que
melhor representam o enunciado do problema. Assim, os sistemas seriam
projetados de forma mais intuitiva, retratando o mundo tal qual ele .
Duas das primeiras linguagens desse novo paradigma, que se popularizaram foram C++ e Smalltalk. Essas linguagens introduziram o conceito de
classes de objetos em hierarquias. A programao ficou mais hierarquizada e
com isso surgiram novos conceitos e caractersticas que ajudaram muito na
programao, garantindo-lhe mais elegncia e simplicidade. A partir deste
momento, o programador poderia se dedicar realmente a expressar sua
lgica de negcios. Conceitos como herana, polimorfismo, encapsulamento
e outros so at hoje parte principal da teoria da Orientao a Objetos em
qualquer linguagem de programao desse gnero.
Paralelamente, um outro movimento tecnolgico ganhou muita fora
na mesma poca da consolidao da Orientao a Objetos como paradigma
de programao: o mundo da computao nunca mais foi o mesmo depois
do nascimento da web. Mas com ela tambm surgiram outros problemas,
como a interoperabilidade das plataformas, j que os sistemas numa rede
mundial so os mais heterogneos possveis. Para resolver isto, emergiram
os estudos sobre mquinas virtuais. A Sun Microsystems tinha um projeto

CEC I E R J E X T E N S O E M G O V E R N A N A

11

Java Bsico e Orientao a Objeto

| Prefcio

inovador em uma linguagem denominada Oak, cujo slogan era: write once,
run anywhere, (em portugus: escreva uma vez, rode em qualquer lugar).
O novo contexto justificava o retorno desse projeto com fora, e essa linguagem que trazia uma plataforma associada a ela mudou seu nome, devido a
questes de direitos autorais, para o que seria a plataforma mais promissora
do fim do sculo XX: Java.
Java podia ser executada em qualquer plataforma, era compilada
uma nica vez, numa nica plataforma, gerando um cdigo intermedirio
chamado bytecode, e este poderia ser interpretado por uma Mquina Virtual
Java (JVM) em qualquer tipo de dispositivo, seja um computador, um celular,
uma televiso ou at uma geladeira. Depois desse fenmeno os conceitos
de programao nunca mais foram os mesmos, desde a dcada de 90,
quando surgiu o Java, uma nova linguagem simples, elegante, orientada
a objeto e porttil. Orquestrada por uma empresa poderosa chamada Sun
Microsystems tem toda uma comunidade participativa e comprometida com
os mais modernos conceitos de uma linguagem de programao associada
engenharia de software.
Essa fora do Java se mostrava mais poderosa ainda quando amos
para o mundo "www", onde as limitadas e sem graa pginas html ganharam
efeitos muito mais interessantes atravs de objetos dinmicos Java chamados
Applets. E com o tempo, a prpria Sun viu a necessidade de abrir o Java,
delegando-o completamente sua comunidade, sempre organizada e rigorosa
nos seus processos evolutivos. Atravs de seus vrios comits, a padronizao
virou um conceito forte dentro do Java, o que permitiu que este sobrevivesse
e continuasse crescendo at hoje, mesmo sem ter um dono.
Dessa forma, evolumos das sub-rotinas e simples organizao de
programas para bibliotecas de classes, onde enfatizamos o reuso atravs de
organizaes mais elaboradas dessas bibliotecas nas APIs e Frameworks. No
se escreve mais cdigo a partir do zero, mas se reusam as classes especializadas em seus contextos. O desenvolvedor deixou de ser um programador
braal para ser um compositor, um projetista. E com isso ganhou-se muito
mais velocidade e consistncia de desenvolvimento, o que necessrio, pois
a demanda grande, e continua crescendo.
E assim continua a saga do Java, elegante, simples, modular, mas
ao mesmo tempo abrangente e completo. Java uma das linguagens mais
importantes da atualidade, apesar de sua pouca idade (seu primeiro release
1.0 de 1995) e no mais uma promessa, mas uma realidade e com um
futuro ainda muito longo e brilhante.

12

Governana: Gesto, Auditoria e Tecnologia da Informao

Nesse contexto, com uma linguagem que converge tantos aspectos


PREFCIO

fundamentais da computao, desde os conceitos de linguagem de programao e orientao a objetos, passando por engenharia de software e redes, vale
ressaltar a importncia do ensino de Java, onde este livro passa a ter papel
importante pela forma didtica que aborda o assunto, buscando o equilbrio
atravs de um contedo abrangente e completo, mas sem tirar a importncia
do cunho prtico que deve nortear qualquer livro de programao.
O livro Java Bsico e Orientao a Objeto serve como referncia tanto
para o programador iniciante, j que mostra com riqueza de detalhes todo o
processo inicial de instalao e configurao dos ambientes necessrios para
desenvolver em Java, como para o programador mais experiente, j que trata
com seriedade e profundidade outros assuntos mais avanados.
Enfim, tenho certeza que qualquer aluno que queira aprender a
linguagem de programao Java, qualquer que seja o seu nvel, vai agregar
conhecimentos slidos ao ler esse livro sobre esta tecnologia que est dominando os mercados de programao em vrias reas do desenvolvimento:
web, celulares, TV digital, robtica, entre outras.

Prof. Dr. Rubens Nascimento Melo


PUC-Rio

Rubens Nascimento Melo possui graduao em Engenharia


Eletrnica pelo Instituto Tecnolgico de Aeronutica, mestrado e doutorado em Cincia da Computao tambm pelo
Instituto Tecnolgico de Aeronutica. Atualmente, professor associado da Pontifcia Universidade Catlica do Rio de
Janeiro, onde leciona cursos de graduao e ps-graduao,
orienta alunos de iniciao cientfica, mestrado e doutorado.
Tem mais de quarenta anos de experincia na rea de Cincia
da Computao em geral e um dos pioneiros nas reas de
Banco de Dados, Computao Grfica e Interface de Usurio
no Brasil. Seus temas de pesquisa principais so: integrao
semntica de informao, data warehousing, Business Intelligence, e-learning e sistemas de informao.

CEC I E R J E X T E N S O E M G O V E R N A N A

13

Introduo

Java Bsico e Orientao a Objeto

| Introduo

"Escrever cdigo uma vez e reutiliz-lo sempre que possvel."


Voc sabe o que governana?

O que
governana?

Governana o conjunto de responsabilidades e prticas exercidas pela diretoria e


pela gerncia executiva com o objetivo de prover uma direo
estratgica empresa, assegurando que seus objetivos sejam
alcanados e seus riscos gerenciados apropriadamente, verificando que seus recursos sejam usados de forma responsvel, com tica e transparncia.

Repare que, em linhas gerais, o processo de governana nas


empresas visa a responder a quatro questes bsicas:
1. Se a empresa est fazendo as coisas certas.
2. Se a empresa est atuando de forma correta.
3. Se o uso de recursos eficaz e eficiente.
4. Se os objetivos estabelecidos so alcanados.
Observe que o conceito de governana relativamente novo, mas
j se reconhece que boas prticas de governana aplicam-se a qualquer
tipo de empreendimento. Pense e responda: quais so as trs principais
reas do conhecimento que podem contribuir diretamente para uma boa
governana?

16

Governana: Gesto, Auditoria e Tecnologia da Informao

INTRODUO

Cada uma dessas reas tem um objetivo definido dentro da


governana:
Gesto estabelece um sistema de controle gerencial, bem
como um ambiente que promova o alcance dos objetivos do
negcio.
Auditoria avalia de forma independente a adequao e a eficcia dos controles estabelecidos pela gerncia/diretoria.
Tecnologia da Informao apoia e capacita a execuo dos
controles do nvel estratgico ao operacional.

S TA K E H O L D E R S
A governana corporativa tornou-se um tema dominante
nos negcios por ocasio dos vrios escndalos financeiros
ocorridos nos EUA em meados de 2002 Enron, Worldcom e
Tyco, para citar apenas alguns. A gravidade de tais escndalos
abalou a confiana de investidores, realando a necessidade
das empresas de proteger o interesse de seus S TA K E H O L D E R S .
A governana corporativa tem a gerncia de risco como um
de seus principais componentes, que so: planejamento estratgico, liderana, definio de processos, acompanhamento
e gerncia de riscos.

So aquelas pessoas
ou instituies que
possuem algum tipo
de envolvimento
profissional ou
pessoal com uma
empresa: investidores, clientes, funcionrios, fornecedores,
credores, acionistas,
usurios, parceiros
etc.

CEC I E R J E X T E N S O E M G O V E R N A N A

17

Java Bsico e Orientao a Objeto

| Introduo

O PAPEL DE JAVA NA GOVERNANA

Em linhas gerais, vimos que a governana o estabelecimento e


administrao de controle sobre um ambiente de modo a influenciar e
garantir resultados, aes e comportamento desejados.
Observe na figura anterior que a TI um dos trs pilares que sustentam o conceito de governana. A TI um pilar fundamental j que
as informaes disponibilizadas por ela sustentaro a sua empresa, pois
todos os controles, processos, procedimentos e mtricas sero apoiados
pela TI. Note que no possvel haver uma gesto eficaz do negcio sem
informaes produzidas em tempo real e que sejam corretas, precisas e
autorizadas.
Um dos desafios para TI transformar os processos da empresa
em "engrenagens", que funcionem de forma sincronizada e integrada.
Com esse objetivo necessrio que as aplicaes que suportam tais processos possam "se comunicar" e sejam desenvolvidas em uma linguagem
de programao flexvel, porttil e de fcil manuteno. Java vem de
encontro a essa necessidade.
Java uma linguagem de alto nvel, simples, orientada a objeto,
independente de arquitetura, robusta, segura, extensvel, bem estrutuO termo MULTITHREADED refere-se a
sistemas que suportam
mltiplas linhas de
execuo.
Fonte: Wikipedia
A enciclopdia livre
- http://pt.wikipedia.
org/wiki/Thread_
(ci%C3%AAncia_da_
computa%C3
%A7%C3%A3o)

rada, MULTITHREADED e com coletor de lixo.

Algumas caractersticas importantes de Java:


SIMPLICIDADE: Java, que se parece com a Linguagem C++,
simples de aprender, permitindo a voc produtividade desde
o incio e possui um pequeno nmero de construtores.
ORIENTAO A OBJETO: Em Java, os elementos de um
programa so objetos, exceto os tipos primitivos. O cdigo
organizado em classes, que podem estabelecer relacionamentos de herana simples entre si.
PROCESSAMENTO DISTRIBUDO: Java permite o processamento distribudo atravs de classes que suportam a distribuio, dando suporte a aplicaes em rede. Ademais, Java
suporta vrios nveis de conectividade atravs das classes
contidas nos pacotes Java.net
PORTABILIDADE: Java pode rodar em qualquer plataforma
o que permite sua alta portabilidade. Isto se deve ao fato
de que seu compilador no gera instrues especficas a
uma plataforma, mas sim um programa em um cdigo

18

Governana: Gesto, Auditoria e Tecnologia da Informao

INTRODUO

intermedirio. Tal programa, denominado bytecode, pode


ser caracterizado como uma linguagem de mquina destinada a um processador virtual que no existe fisicamente.
MULTITHREADING: Java fornece suporte a mltiplos threads
de execuo, que podem manipular diferentes tarefas.
COLETOR DE LIXO: Sua funo a de varrer a memria de
tempos em tempos, liberando automaticamente os blocos
que no esto sendo utilizados, evitando, assim, erros na
alocao de memria.

PORQUE JAVA IMPORTANTE


Voc sabia que a Internet vem se tornando cada vez mais popular
e cresce a variedade de mquinas e sistemas operacionais disponveis no
mercado? Assim sendo, portabilidade, confiana e segurana, caractersticas que Java apresenta, tornam-se requisitos essenciais para uma
linguagem de programao. Java oferece vrias camadas de controle de
segurana para a proteo contra cdigo malicioso, alm de possuir um
compilador altamente rigoroso que evita erros bsicos de programao,
ajudando a manter a integridade do software, um dos conceitos essenciais
em Governana. Alm dessas caractersticas, h um diferencial que deve
ser considerado: Java uma soluo gratuita.
Java notoriamente um padro na indstria de software e permite o
desenvolvimento de aplicaes na Internet para servidores, desktop e dispositivos mveis. A expectativa de que as empresas vo continuar necessitando
de profissionais, como voc, com conhecimento em Java para atuarem
no desenvolvimento de software e aplicativos, sendo que o conhecimento
requerido dever se expandir proporcionalmente evoluo de Java.
Saiba que a Fundao Cecierj trabalha para apoiar voc nessa
meta!
Representada pela professora Masako Masuda e pela professora
Mirian Crapez, a Fundao ampliou a sua misso e incluiu no escopo
do seu pblico-alvo os profissionais de mercado. No incio de 2008, foi
estabelecida uma nova rea do conhecimento na Diretoria de Extenso
voltada para oferta de cursos no s aos professores da Educao Bsica,
mas tambm aos demais profissionais, intitulada Governana: Gesto,
Auditoria e Tecnologia da Informao (TI).

CEC I E R J E X T E N S O E M G O V E R N A N A

19

Java Bsico e Orientao a Objeto

| Introduo

Um dos objetivos dessa rea, projetada e implantada pelas professoras Lcia Baruque e Cssia Baruque, de que os profissionais do
conhecimento, que so parte essencial da sociedade da informao,
possam se capacitar e se atualizar em temas de ponta, incluindo aqueles
que moram no interior do estado.

Sociedade da informao
aquela cujo modelo de desenvolvimento social e econmico baseia-se na informao
como meio de criao do conhecimento. Ela desempenha papel fundamental na produo de riqueza e na
contribuio para o bem-estar e a qualidade de vida
dos cidados. Tal sociedade encontra-se em
processo de formao e expanso.

Profissional do conhecimento um termo adaptado de knowledge worker, referindo-se a profissionais que trabalham
diretamente com a informao, produzindo ou fazendo uso do
conhecimento, em oposio queles envolvidos na produo
de bens ou servios. So analistas de sistemas, programadores,
desenvolvedores de produtos ou pessoal ligado tarefa de
planejamento e anlise, bem como pesquisadores envolvidos
principalmente com a aquisio, anlise e manipulao da
informao.
Esse termo foi popularizado pelo guru Peter Drucker.

Agora que voc est familiarizado com o conceito de governana


e com a importncia de adquirir conhecimentos em Java, mos obra.
Vamos aprender muito a seguir!
Bons estudos!

Note que este material foi projetado para ser autoinstrucional.


Entretanto, voc pode interagir com outros profissionais da
rea ou mesmo realizar atividades adicionais com feedback
do tutor ao participar do nosso curso no ambiente virtual de
aprendizagem da Fundao. Para mais informaes, acesse:
http://www.cederj.edu.br/extensao/governanca/index.htm

20

Governana: Gesto, Auditoria e Tecnologia da Informao

INTRODUO

INFORMAES SOBRE O CURSO

Pblico-alvo
Estudantes, professores e
profissionais das reas de engenharia, computao, exatas e afins.
Pr-requisito
Noes de lgica de programao (ter algum
conhecimento em qualquer linguagem de programao, exceto HTML) e sistema operacional Windows XP
ou Windows Vista instalado.
Objetivos
Capacitar o participante no entendimento da arquitetura e programao da linguagem Java, com a finalidade de prepar-lo para suprir a
crescente necessidade do mercado pelo profissional especialista nessa
tecnologia, desenvolvendo projetos flexveis, reutilizveis e com padres
de qualidade reconhecidos.
Ementa
Introduo ao Java Standard Edition
Tipos de dados do Java
Estrutura de Programao em Java
Estruturas de Controle
Arrays
Java Orientado a Objetos: Classes, Atributos,
Mtodos, Herana, Polimorfismo, Classes
Abstratas e Interfaces
Controle de Erros
Tratamento de Excees
Bibliotecas do Java Standard Edition
Programao Grfica em Java:
Swing e AWT
Carga horria: 45 horas aula

CEC I E R J E X T E N S O E M G O V E R N A N A

21

Java Bsico e Orientao a Objeto

| Introduo

Masako Oya Masuda


Presidente da Fundao Centro de Cincias e Educao Superior a Distncia do Estado do Rio de Janeiro (Cecierj), vinculada
Secretaria de Estado de Cincia e Tecnologia. Possui graduao em Cincias Biolgicas pela Universidade de So Paulo,
mestrado em Cincias Biolgicas (Biofsica) pela Universidade
Federal do Rio de Janeiro, doutorado em Cincias Biolgicas
(Biofsica) pela Universidade Federal do Rio de Janeiro e psdoutorado na University of California. Tem experincia na rea
de Fisiologia, com nfase em Fisiologia Geral.

Mirian Araujo Carlos Crapez


Vice-presidente de Educao Superior a Distncia da Fundao
Cecierj. Graduada em Cincias Biolgicas pela Universidade
Federal de Minas Gerais, com doutorado em Metabolismo de
Aromticos e Poliaromticos realizado na Universit D'AixMarseille II e ps-doutorado na Universit Paris VI (Pierre et
Marie Curie). Atualmente, professora associada da Universidade Federal Fluminense.

Lcia Blondet Baruque


Mestre e doutora em Informtica pela PUC-Rio; bacharel em
Cincias Econmicas pela UFRJ; possui Certificate in Management pela John Cabot University (Roma). Foi professora
na PUC-Rio e atuou no seu Centro de Educao a Distncia.
Atualmente, professora associada da Fundao Cecierj,
coordenadora da rea de Governana: Gesto, Auditoria e
TI e pesquisadora associada do Laboratrio de Tecnologia em
Banco de Dados da PUC-Rio. Trabalhou na auditoria da Exxon
Company International e na ONU, em Roma, bem como na
diretoria do Instituto dos Auditores Internos do Brasil. Membro do Institute of Internal Auditors. CIA, CISA Exam.

22

Governana: Gesto, Auditoria e Tecnologia da Informao

INTRODUO

Cssia Blondet Baruque


Mestre e doutora em Informtica pela PUC-Rio. Foi docente e
atuou como cocoordenadora da rea de Governana: Gesto,
Auditoria e TI da Fundao Cecierj e como pesquisadora associada do Laboratrio de Tecnologia em Banco de Dados da
PUC-Rio. Trabalhou como pesquisadora e professora na PUC-Rio,
IMPA, FGV-online e UEZO em temas como e-learning, bibliotecas
digitais, data warehousing/OLAP e minerao de dados, alm de
ter exercido cargos importantes, o que lhe conferiu grande experincia em desenvolvimento de sistemas, nas empresas Fininvest,
Cyanamid, Banco Nacional, Capemi, Shell e RFFSA.

Clayton Escouper das Chagas


Engenheiro de Telemtica pelo Instituto Militar de Engenharia
(IME/RJ), ps-graduado em Sistemas Modernos de Telecomunicaes pela Universidade Federal Fluminense (UFF) e mestrando em
Sistemas de Telecomunicaes com estudos na rea de TV Digital
Interativa pela Pontifcia Universidade Catlica do Rio de Janeiro
(PUC-Rio). Trabalha como engenheiro em projetos de Pesquisa
e Desenvolvimento (P&D) no Centro Tecnolgico do Exrcito e
instrutor de Java em empresas privadas e universidades do Rio
de Janeiro desde 2005.

CEC I E R J E X T E N S O E M G O V E R N A N A

23

AULA

Introduo ao Java

Meta da aula

objetivos

Apresentar as principais caractersticas da


plataforma Java.

Aps o estudo do contedo desta aula,


esperamos que voc seja capaz de:
1

descrever o histrico da tecnologia Java;

descrever as caractersticas do Java;

identificar os componentes da plataforma Java


Standard Edition;

criar e identificar as principais estruturas de


uma classe em Java.

Pr-requisitos
Para o correto e completo aprendizado desta aula,
preciso que voc: tenha um computador com o
Windows XP ou Windows Vista instalado com pelo
menos 512MB de memria RAM; tenha instalado e
configurado o Java Development Kit (JDK), conforme as
instrues do Apndice A; tenha instalado o Ambiente
de Desenvolvimento Integrado (IDE) NetBeans, conforme as instrues do Apndice B; esteja animado e motivado para iniciar o aprendizado dessa fabulosa linguagem de programao que est dominando os mercados
de desenvolvimento, programao e tecnologia
na atualidade.

Java Bsico e Orientao a Objeto

INTRODUO

| Introduo ao Java

Voc j ouviu falar na ilha de Java? Alm de uma das tecnologias mais importantes da computao, Java tambm uma das mais famosas ilhas do oceano
ndico, e foi justamente essa ilha que deu origem ao nome da linguagem de
programao Java.

Pesquise mais em http://pt.wikipedia.org/wiki/Java e descubra mais sobre


a ilha de Java antes de entrar no mundo fantstico da tecnologia Java.

O Java como linguagem de programao nasceu em 1991 pelas mos de um


pesquisador da Sun Microsystems, James Gosling.

Figura 1.1: James Goling, o criador do Java.


Fonte: http://cnettv.cnet.com/2001-1_53-27469.html

26

Governana: Gesto, Auditoria e Tecnologia da Informao

1
AULA

A Sun Microsystems uma das maiores empresas de tecnologia


do mundo. Atua nos setores de fabricao de computadores,
semicondutores e software. Sua sede fica em Santa Clara,
Califrnia, no Silicon Valley (Vale do Silcio). As fbricas da Sun
localizam-se em Hillsboro, no Oregon, EUA, e em Linlithgow,
na Esccia.
O nome Sun vem de Stanford University Network (Rede da
Universidade de Stanford).
Os produtos da Sun incluem servidores e estaes de trabalho
(workstations) baseados no seu prprio processador SPARC,
no processador Opteron, da AMD, nos sistemas operacionais
Solaris e Linux, no sistema de arquivos de rede NFS e na plataforma Java.
Saiba mais sobre a Sun Microsystems em http://pt.wikipedia.
org/wiki/sun_microsystems. interessante conhecer a empresa
que criou a tecnologia que voc ir estudar.

O nome inicial da linguagem era Oak (carvalho, em portugus), pois existiam


muitos carvalhos na rea da empresa e eles eram visveis pela janela dos programadores.
Devido a problemas de direitos autorais, o nome acabou sendo alterado para
Java, pois j existia uma linguagem chamada Oak.
A ideia original do projeto era desenvolver uma linguagem de programao que
fosse independente de plataforma e que pudesse ser executada em diferentes
dispositivos eletrnicos, como geladeiras, televises ou foges.
Inicialmente, o projeto no foi prioridade para a Sun, j que alguns executivos
acharam absurda a ideia de ter uma linguagem que pudesse ser processada
numa televiso. Com a chegada da TV digital interativa, podemos ver que no
estavam to errados assim... Mas com o sucesso da internet e a necessidade de
linguagens que suportassem objetos dinmicos e independentes de plataforma,
a empresa viu uma oportunidade para o emprego da tecnologia que o projeto
Oak havia desenvolvido.

CEC I E R J E X T E N S O E M G O V E R N A N A

27

Java Bsico e Orientao a Objeto

| Introduo ao Java

A TECNOLOGIA JAVA

Linguagem de programao

Java
uma linguagem de
programao orientada a objetos,
robusta, elegante e com todas as caractersticas das linguagens modernas, podendo
sser utilizada nos mais diversos ambientes, desde
aplicaes simples no desktop at complexos
aplicativos web, programao de robs, redes
de sensores, celulares e televiso digital interativa, alm de muitos
outros.

28

Governana: Gesto, Auditoria e Tecnologia da Informao

AULA

Ambiente de desenvolvimento
Como desenvolvedor Java, voc ter sua disposio um conjunto
de ferramentas poderosas capazes de abranger vrias tarefas envolvidas
no processo de desenvolvimento de software dentro do seu ciclo de
vida.
Dentre as principais ferramentas disponveis, podemos citar:
o compilador (javac);
o interpretador (java);
o gerador de documentao (javadoc);
a ferramenta de compactao de arquivos (jar);
diversas outras ferramentas instaladas no diretrio bin da distribuio.

Ambiente de aplicao
A forma de execuo da linguagem Java baseada na interpretao
por meio de uma mquina virtual, a J AVA V I R T U A L M A C H I N E (JVM) .
Ela proporciona um ambiente de aplicao completo para execuo de

J AVA
VIRTUAL
MACHINE
(JVM)
Mquina virtual
que faz com que o
seu programa em
Java se comunique
com o sistema operacional e com o
hardware do computador.

aplicativos Java.

Atividade prtica 1
Vamos pesquisar um pouco?
Acesse, no site da Sun, as reas sobre Java e descubra por que ele uma das tecnologias que mais intrigam o mundo moderno de tecnologia: http://java.sun.com.

RAIO X DO JAVA
O desenvolvimento em Java dividido em trs grandes plataformas, de acordo com as caractersticas e os objetivos do sistema
implementado:
A primeira plataforma: o core de todo sistema Java; utilizada
como base da linguagem, alm de possuir algumas bibliotecas
para desenvolvimento de aplicaes grficas, programao em
redes e processamento paralelo. A esse conjunto core damos o

J AVA S TA N D A R D
E D I T I O N (JSE)
Pacote-base para o
desenvolvimento de
programas em Java.

nome de J AVA S TA N D A R D E D I T I O N (JSE) .


CEC I E R J E X T E N S O E M G O V E R N A N A

29

Java Bsico e Orientao a Objeto

| Introduo ao Java

A segunda plataforma: engloba desenvolvimento web, programa-

J AVA
ENTERPRISE
E D I T I O N (JEE)

o distribuda corporativa, servios corporativos especiais como Web


Services e Enterprise Java Beans, alm de bibliotecas de gerenciamento.

Pacote para desenvolvimento de


programas para o
segmento corporativo, programao
distribuda e programao web.

Essa plataforma se chama J AVA E N T E R P R I S E E D I T I O N (JEE) e tem como


requisito o prprio JSE.
A plataforma de desenvolvimento para dispositivos mveis e
embarcados: d suporte a toda programao para celulares, televiso
digital e outros dispositivos com menor poder de processamento; a
plataforma J AVA M I C R O E D I T I O N (JME).

J AVA M I C R O E D I T I O N (JME)
Pacote para desenvolvimento de programas para dispositivos mveis como celulares, palm tops etc.

Nosso curso ser focado no JSE (primeira plataforma), que a base


para que o aluno prossiga no estudo de plataformas mais complexas.
Veja a seguir os mdulos que compem o JSE:

Java Platform Standard Edition

Java
Language
Development
Tools & APIs

Java Language
java

javac

javadoc

apt

jar

javap

JPDA

Other

Security

Int'l

RMI

IDL

Deploy

Monitoring

Trobleshooting

JVM TI

Development
Technologies

Deployment

Java Web Start

Java Plug-in

User Interface
Toolkits

AWT

Swing

Java 2D

Accessibility
Integrations
Libraries
JDK
Other Base
JRE
Libraries

lang & util


Base Libraries

Platforms

IDL

JDBC

Beans

Int'I Support

Networking

Std. Override
Mechanism

Security

Collections

Concurrency
Utilities
Reflection

Lang & Util


Preferences

Java Virtual
Machine

Drag'n Drop Imput Methods

Ref Objects

JNDI
I/0

New I/0

Java Hotspot Client Compiler


Solaris

Windows

Image I/0

Print Service
RMI

RMI-IIOP

JMX

JNI

Math

Serialization

Extension
Mechanism

XML JAXP

JAR

Logging

Management

Regular
Expressions

Versioning

Zip

Java Hotspot Server Compiler


Linux

Figura 1.2: Estrutura do Java Standard Edition.


Fonte: javadocs - jdk 1.6.03.

30

Governana: Gesto, Auditoria e Tecnologia da Informao

Sound

Other

J2SE
API

Imagine uma mquina criada por meio de um software emulador


dentro de uma mquina real, como se fosse um minicomputador dentro
do seu prprio computador, e que possui gerenciamento de memria,
e outros processos de um computador com seu sistema

operacional. Exatamente! Essa mquina existe e se chama Mquina


Virtual Java, ou JVM.
A Mquina Virtual Java prov especificaes de plataforma de
hardware na qual se compila todo cdigo de tecnologia Java. Essas especificaes permitem que o software Java seja uma plataforma independente,
pois a compilao feita por uma mquina genrica, a JVM.
O resultado de uma compilao de um cdigo fonte Java o
bytecode, que uma linguagem de mquina inteligvel para a JVM.
O bytecode independente de hardware; assim, basta o computador ou o
dispositivo eletrnico (como um celular ou televiso) ter o interpretador
adequado (a JVM) que poder executar um programa Java compilado,

AULA

CACHE

Java Virtual Machine (JVM)

CACHE, THREADS

CARACTERSTICAS DO JAVA

Subsistema especial
da memria de alta
velocidade, utilizado para armazenar
dados temporariamente at que eles
sejam solicitados.
Os dados utilizados
com mais frequncia so copiados
para ela, permitindo
acesso mais rpido.
uma forma de
acelerar a memria,
o processador e as
transferncias do
disco. Os caches de
memria armazenam o contedo das
posies mais atualizadas da RAM e
os endereos onde
esses dados esto
armazenados.
Fonte: http://www.aoli.
com.br/dicionarios.
aspx?palavra=Cache.

no importando em que tipo de computador ele foi compilado.

Garbage Collection

THREADS

Visualize a memria do seu computador como uma grande rua


onde uma equipe de gandulas de tempos em tempos vai limpando tudo
que no est sendo utilizado pelo Java. Isso mesmo. Essa equipe presta
ao sistema operacional um importante servio de coleta de lixo, que

Processo de diviso
de tarefas em programao de computadores.
Fonte: http://
pt.wikipedia.org/wiki/
Thread.

chamamos de Garbage Collection.


Muitas linguagens de programao permitem ao programador
alocar memria durante o tempo de execuo. Entretanto, aps utilizar
a memria alocada, deve existir uma maneira para desalocar o bloco de
memria, de forma que os demais programas a utilizem novamente. Em
C, C++ e outras linguagens, o programador o responsvel por isso, o
que s vezes pode ser difcil, j que os programadores podem esquecer
de desalocar instncias da memria e resultar no que chamamos escapes
da memria.
No Java, voc, programador, no possui a obrigao de retirar
das reas de memria uma varivel criada. Isso feito por uma parte
especfica da JVM que chamamos de Garbage Collection. A Garbage

CEC I E R J E X T E N S O E M G O V E R N A N A

31

Java Bsico e Orientao a Objeto

| Introduo ao Java

Collection a grande responsvel pela liberao automtica do espao


em memria. Isso acontece automaticamente durante o tempo de vida
do programa Java.

Java Runtime Environment


A implementao de uma mquina Java juntamente com a JVM
para o usurio final dos sistemas feita por meio de um pacote chamado
Java Runtime Environment (JRE). O JRE roda cdigos compilados para
a JVM e executa o carregamento de classes (por meio do Class Loader), a
verificao de cdigo (por meio do verificador de bytecode) e finalmente
o cdigo executvel.
O Class Loader responsvel por carregar todas as classes necessrias ao programa Java. Isso adiciona segurana, por meio da separao
do namespace entre as classes do sistema de arquivos local e aquelas
que so importadas pela rede. Isso limita qualquer ao de programas
que podem causar danos, pois as classes locais so carregadas primeiro.
Depois de carregar todas as classes, a quantidade de memria que o executvel ir ocupar determinada. Isso acrescenta, novamente, proteo
ao acesso no autorizado de reas restritas ao cdigo, pois a quantidade
de memria ocupada determinada em tempo de execuo.
Aps carregar as classes e definir a quantidade de memria, o
verificador de bytecode verifica o formato dos fragmentos de cdigo e
pesquisa, nesses fragmentos, cdigos ilegais que possam violar o direito
de acesso aos objetos.
Depois que tudo isso tiver sido feito, o cdigo finalmente executado.

CICLO DE EXECUO DE UM PROGRAMA EM JAVA


Voc vai entender agora como o fluxo de execuo de um
programa em Java, desde sua codificao at sua interpretao pela
mquina virtual.
O primeiro passo para a criao de um programa Java escrever
os programas em um editor de texto. Qualquer tipo de editor pode ser
utilizado, como o bloco de notas, vi, emacs etc. A nica obrigatoriedade que esses arquivos devem ser armazenados no disco rgido com a
extenso .java.

32

Governana: Gesto, Auditoria e Tecnologia da Informao

Aps o programa Java ter sido criado e salvo, voc deve compil-

AULA

lo utilizando o compilador Java (javac). A sada desse processo um


arquivo de bytecode com extenso .class.
O arquivo .class ento lido pelo interpretador Java (java JVM),
que converte os bytecodes em linguagem de mquina do computador ou
dispositivo que est sendo usado.
A figura a seguir ilustra todo o processo de execuo de um programa em Java.

Party at
Tlm's

source code
for the
interactive
party
inviation

Method Party()
0 aload_0
1 invokespecial #1
<Methodjava.
Jang.Object()>
4 return

Output
(code)

Source

Compiler

3
at
Party
Tlm's

Virtual
Machines

4
Figura 1.3: Processo de execuo de um programa em Java.
Fonte: Livro Use a cabea! Java.

Atividade prtica 2
4
Vamos comear a programar!
Para compilar e executar um programa Java corretamente, voc deve ter o JDK
(Java Development Kit) instalado. Alm disso, as variveis de ambiente do Windows
devem estar corretamente configuradas. Execute as tarefas de download, instalao e
configurao do JDK seguindo as orientaes do Apndice A. A partir de ento, voc
poder testar seus cdigos Java.

CEC I E R J E X T E N S O E M G O V E R N A N A

33

Java Bsico e Orientao a Objeto

| Introduo ao Java

ESCREVENDO SEU PRIMEIRO PROGRAMA EM JAVA


Utilizando o prompt do Windows e o Bloco de Notas
Voc vai agora construir o primeiro exemplo de programa em
Java. A compilao e a execuo do programa sero feitas pelo prompt
de comando do Windows.
Passo 1: Inicie o Bloco de Notas do Windows seguindo os comandos Iniciar => Programas => Acessrios => Bloco de Notas.
Passo 2: Abra o prompt de comando do Windows seguindo os
comandos Iniciar => Programas => Acessrios => Prompt de
Comando.
Passo 3: No Bloco de Notas, digite as seguintes instrues de um
simples programa em Java:

Figura 1.4: Primeira classe em Java.


Fonte: Bloco de Notas.

Seja rigoroso em todos os smbolos utilizados, principalmente


no que se refere a letras maisculas e minsculas, pois fazem diferena
no Java.

34

Governana: Gesto, Auditoria e Tecnologia da Informao

Passo 4: Salve o programa como Hello.java e coloque numa

AULA

pasta chamada MeusProgramas.

Figura 1.5: Salvando sua primeira classe em Java.


Fonte: Bloco de Notas.

Passo 5: V para o prompt de comando e navegue at a pasta


MeusProgramas.
Passo 6: Nessa pasta, digite o comando dir para verificar se o seu
arquivo Hello.java est dentro do diretrio.
Se estiver tudo certo, j podemos compilar nosso primeiro programa em Java.
Passo 7: Para compilar um programa Java, devemos executar o
compilador Java (javac) passando na linha de comando o nome
do programa a ser compilado; no nosso caso, o Hello.java.
Os comandos a serem executados so os mostrados na figura do
prompt a seguir. Se no tiver nenhum erro, o cursor do prompt aparecer
novamente na linha de baixo.

CEC I E R J E X T E N S O E M G O V E R N A N A

35

Java Bsico e Orientao a Objeto

| Introduo ao Java

Figura 1.6: Compilando sua primeira classe em Java.


Fonte: Prompt de Comando.

Passo 8: Digite novamente o comando dir para verificar se a


compilao foi realizada normalmente. Como voc j viu, a compilao
de um arquivo .java tem como resultado o bytecode, que um arquivo
.class com o mesmo nome, como mostrado na figura a seguir:

Figura 1.7: Verificando a classe compilada.


Fonte: Prompt de Comando.

36

Governana: Gesto, Auditoria e Tecnologia da Informao

Passo 9: Por ltimo, chame a Mquina Virtual Java (JVM) por

AULA

meio do comando java, passando na linha de comando o arquivo


do bytecode, atravs do nome do arquivo gerado na compilao,
dessa vez sem a extenso (sem o .class) como mostrado a seguir.
O bytecode interpretado pela JVM e a sada do texto digitado
realizada pelo prompt, conforme foi solicitado no cdigo do
programa.

Figura 1.8: Executando sua primeira classe em Java.


Fonte: Prompt de Comando.

Atividade prtica 3
Vamos comear a programar!
Siga os passos anteriores e veja voc mesmo seu primeiro programa em Java
funcionando!

CEC I E R J E X T E N S O E M G O V E R N A N A

37

Java Bsico e Orientao a Objeto

| Introduo ao Java

Utilizando um Ambiente de Desenvolvimento (IDE)


Para continuar seu aprendizado de forma produtiva, iremos empregar um ambiente profissional, que o mesmo utilizado nas empresas de
desenvolvimento de software: usaremos o ambiente de desenvolvimento
NetBeans, da Sun Microsystems. Para isso, voc precisar executar as
tarefas de download, instalao e configurao do NetBeans que esto
explicadas de forma detalhada no Apndice B.

Apesar
de muitos dos nossos
programas no exigirem ferramentas sofisticadas para programao, como
voc viu no ltimo exemplo, profissionalmente as
empresas necessitam de um ambiente integrado com
algumas caractersticas, como maior velocidade de programao, automatizao de processos e testes, alm da
necessidade de melhorar a produtividade e o gerenciamento
n
das equipes. Nesse contexto, pode ser interessante a utilizao de ferramentas especializadas que controlem todos
esses fatores, trazendo vantagem considervel no ciclo
produtivo das empresas de software. Essas ferramentas se chamam ambiente de desenvolvimento
integrado (integrated development environment),
t ou simplesmente IDE.

Atividade de reflexo

1
2
3
4
Pesquise um pouco!
Pesquise em sites de busca (como www.google.com.br) e em informaes colaborativas (como www.pt.wikipedia.org) sobre a linguagem de programao
Java e tambm sobre IDE.
Depois da pesquisa, escreva com suas prprias palavras nas linhas a seguir o que entendeu sobre a linguagem Java e tambm sobre IDE.
Java:
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________

38

Governana: Gesto, Auditoria e Tecnologia da Informao

1
AULA

IDE:
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________

Vamos utilizar nesta disciplina uma IDE produzida pela prpria


Sun (que criou o Java) e uma das mais utilizadas pelas empresas de
desenvolvimento no mundo: o NetBeans, na sua verso 5.5.1. Entre
os vrios recursos que a IDE possui, podemos citar como principais a
interface construtora, o editor de texto, o editor de cdigo, o compilador,
o interpretador e o depurador. Alm disso, a IDE possui muitas outras
funcionalidades e wizards que auxiliam voc a dar mais produtividade a
seu trabalho e a reduzir a quantidade de erros. Para utilizar o NetBeans,
execute os seguintes passos:
Passo 1: Inicie o NetBeans clicando no cone de atalho NetBeans
5.5.1 que se encontra na rea de trabalho do computador e espere
a abertura de sua interface grfica.

Figura 1.9: Tela inicial do NetBeans.


Fonte: NetBeans.

CEC I E R J E X T E N S O E M G O V E R N A N A

39

Java Bsico e Orientao a Objeto

| Introduo ao Java

Passo 2: Feito isso, vamos construir nosso primeiro projeto, j que


todo programa Java numa IDE deve estar associado a um projeto,
atravs da sequncia Arquivo => Novo Projeto, e na caixa de
dilogo que se abrir escolha na janela Categorias a opo Geral
e na janela Projetos a opo Aplicao Java.

Figura 1.10: Criando um projeto no NetBeans.


Fonte: NetBeans.

Passo 3: Clique no boto


Prximo e na caixa de dilogo seguinte preencha o Nome
do Projeto com Meu Projeto
Java e ao lado da checkbox
Criar Classe Principal defina
seu nome como Hello e clique no boto Finalizar.

Figura 1.11: Criando um projeto


no NetBeans.
Fonte: NetBeans.

40

Governana: Gesto, Auditoria e Tecnologia da Informao

Passo 4: Na janela que se abre, a IDE insere um cdigo bsico de

AULA

todo programa Java completado com algumas informaes que


foram inseridas durante a criao do projeto. Complete esse cdigo
com o texto do programa feito no Bloco de Notas.

Figura 1.12: Criando uma classe no NetBeans.


Fonte: NetBeans.

Ao mandar executar um programa, a IDE automaticamente compila e interpreta o cdigo, mostrando o resultado dos comandos, caso
seja uma aplicao via console (que ser o nosso caso, por enquanto),
na janela abaixo do cdigo.

CEC I E R J E X T E N S O E M G O V E R N A N A

41

Java Bsico e Orientao a Objeto

| Introduo ao Java

Passo 5: Para executar o cdigo, devemos selecionar o programa


que desejamos executar na janela do lado esquerdo superior, janela
Projetos, e clicar com o boto direito do mouse selecionando a
opo Executar Arquivo.

Figura 1.13: Executando uma classe no NetBeans.


Fonte: NetBeans.

Figura 1.14: Executando uma classe no NetBeans.


Fonte: NetBeans.

42

Governana: Gesto, Auditoria e Tecnologia da Informao

Agora vai ficar mais legal!


Siga os passos mencionados e veja seu primeiro programa em Java agora
executado no NetBeans!

AULA

Atividade prtica 4
4

INFORMAES SOBRE FRUM


Nesta primeira semana de aula, vamos entrar no frum para
nos conhecermos; vamos falar sobre a experincia de cada um
e o que esperamos do curso.

RESUMO

Vamos rever os principais conceitos vistos nesta aula.


Histrico da tecnologia Java: o Java nasceu na empresa americana Sun
Microsystems na dcada de 1990 com o intuito de ser utilizado em
dispositivos eletrodomsticos. O projeto inicialmente no foi um sucesso,
mas, com o advento da internet, a Sun viu uma oportunidade de utilizar
essa tecnologia principalmente pela caracterstica de poder ser utilizada
em plataformas heterogneas.
Alm de ser uma das mais completas, modernas e utilizadas linguagens
de programao, o Java tambm d suporte a um completo ambiente
de desenvolvimento, por meio de suas ferramentas integradas, alm de
ser um ambiente de aplicao completo, com todas suas funcionalidades
implementadas na Mquina Virtual Java (JVM).
O Java possui trs plataformas bsicas de desenvolvimento, de acordo
com o projeto do sistema a ser implementado. A plataforma bsica para
todos os tipos de sistemas o JSE (Java Standard Edition), que possui as
bibliotecas bsicas para o desenvolvimento em Java. Para desenvolvimento
corporativo, distribudo e/ou web preciso utilizar a plataforma JEE
(Java Enterprise Edition), que d suporte aos sistemas desenvolvidos

CEC I E R J E X T E N S O E M G O V E R N A N A

43

Java Bsico e Orientao a Objeto

| Introduo ao Java

para esses tipos de ambiente mais complexos. Por ltimo, temos uma
plataforma especial chamada JME (Java Micro Edition), que serve para
o desenvolvimento de sistemas para dispositivos mveis e embarcados,
como celulares, televises e outros dispositivos com menor poder de
processamento e memria.
Todo programa em Java deve ser compilado pelo compilador javac,
gerando assim o bytecode, para depois ser interpretado pela mquina
virtual; esta implementada de acordo com cada sistema operacional,
garantindo a portabilidade de sistemas do bytecode.
Para melhorar a produtividade do desenvolvimento e ganhar em
integrao e controle da programao, principalmente para sistemas
complexos e grandes equipes, podemos utilizar ferramentas que auxiliam
nessas tarefas; essas ferramentas so as chamadas IDEs (integrated
development environment).

Informao sobre a prxima aula


Na prxima aula, voc ir estudar um pouco mais sobre a estrutura dos
programas em Java e os tipos de dados suportados pela linguagem. At l.

44

Governana: Gesto, Auditoria e Tecnologia da Informao

AULA

Tipos de dados e estrutura de


programao em Java

Meta da aula

objetivos

Apresentar a estrutura de uma classe


Java e os tipos de dados da linguagem.

Aps o estudo do contedo desta aula, esperamos que voc seja capaz de:
1

descrever a estrutura bsica de uma classe em


Java;

criar e testar as classes que voc escreveu em


Java;

identificar os principais tipos de dados da linguagem Java, suas caractersticas e utilizaes;

identificar os operadores utilizados na programao em Java.

Pr-requisitos
Para o correto e completo aprendizado desta aula,
preciso que voc tenha um computador com
Windows XP ou Windows Vista instalado, com pelo
menos 512Mb de memria RAM; tenha instalado e configurado o Java Development Kit (JDK) conforme as instrues do Apndice A; tenha instalado o Ambiente de
Desenvolvimento Integrado (IDE) NetBeans conforme
as instrues do Apndice B; esteja animado e motivado para iniciar o aprendizado desta fabulosa linguagem
de programao, que est dominando os mercados de
desenvolvimento, programao e tecnologia
na atualidade.

Java Bsico e Orientao a Objeto

| Tipos de dados e estrutura de programao em Java

ESTRUTURA BSICA DE UM PROGRAMA EM JAVA


Veja como se comporta e como se compe um programa em Java.
Estudaremos isso por meio da anlise de um cdigo-fonte em Java.
como se um mdico estivesse entendendo como funciona o corpo
humano por dentro.
Imagine que uma montadora lhe pedisse para criar um carro. Que
caractersticas voc considera importantes para definir um carro?
( ) Velocidade
( ) Acelerao
( ) Cor
( ) Nmero de portas
Pois bem, todas essas caractersticas so comuns a todos os carros.
Ao pensar num carro de forma geral, voc est aprendendo um conceito
bastante importante em Java: o conceito de classe.

Classe a definio
de um conjunto de objetos, seres ou
coisas do mundo real que possuem
caractersticas em comum.
Todo programa em Java est dentro de uma estrutura lgica de cdigo chamada classe; portanto, um
sistema em Java um conjunto de classes que se
comunicam e colaboram entre si.
As classes so compostas de atributos
e mtodos.

No nvel de anlise e requisitos, os atributos so as caractersticas


que os objetos do mundo real possuem, e estes so sua representao no
mundo computacional.
Fazendo a mesma comparao, os mtodos so os comportamentos ou as aes executadas por esses objetos.
Assim, com um exemplo bem simples, podemos dizer que, se
estamos definindo e programando o objeto do mundo real carro, a classe
relativa a esse objeto ter atributos como cor, modelo, ano de fabricao

46

Governana: Gesto, Auditoria e Tecnologia da Informao

AULA

converso etc.

etc. Alm disso, a classe tambm ter mtodos como acelerar, frear, fazer
Mtodos:
Acelerar ( )
Frear ( )
Acender faris ( )
Virar direita ( )

Classe Carro (objeto carro do mundo real)


Figura 2.1: Classe Carro e seus mtodos.

Por enquanto, vamos nos focar mais na estrutura de um programa em Java, pois adiante teremos aulas voltadas especificamente para o
aprendizado de orientao a objeto.
Para visualizar melhor como funciona uma classe, vamos analisar
a estrutura do nosso primeiro exemplo, que foi implementado e testado
na aula passada:

public class Hello {

/**

*/

Nosso primeiro programa em Java

5
6

public static void main(String[ ] args) {

// A prxima linha imprime a frase entre ()


no console da IDE

System.out.println("Esse nosso
primeiro programa");

10
11

Vamos comear a decifrar esse programa por meio do entendimento de cada linha.

CEC I E R J E X T E N S O E M G O V E R N A N A

47

Java Bsico e Orientao a Objeto

| Tipos de dados e estrutura de programao em Java

A linha 1 define que estamos iniciando a estrutura de uma classe


pela palavra reservada class e seguida pelo nome da classe.
Aps as instrues relativas a classe, temos o smbolo { (abre chaves) que define a abertura de um bloco de comando. Repare que o { de
abertura tem o seu correspondente } (fecha chaves) na linha 11 indicando
que aquele bloco foi fechado. Os blocos de comando so hierarquizados;
assim, podemos ter blocos de comando dentro de um primeiro bloco.

Toda classe um arquivo Java, e este possui a extenso .java;


obrigatoriamente o arquivo deve possuir o mesmo nome da
classe, respeitando letras maisculas ou minsculas. Assim,
nossa classe Hello est armazenada fisicamente num arquivo
Hello.java.

Os comandos das linhas 2 a 4 definem um comentrio em Java.


Um comentrio serve para documentao do cdigo que est sendo
implementado, seja como histrico para os programadores ou equipe que
esto fazendo o projeto, seja como subsdio para futuras manutenes
e atualizaes do sistema.

Existem trs tipos de comentrios em Java; o que foi utilizado


nas linhas anteriores o comentrio de bloco que inserido
na documentao padro de cdigo Java automaticamente,
o javadoc, e definido pelos intervalos /** ... */, suportando
quebra de linhas. Caso voc no queira que o comentrio de
bloco seja inserido no javadoc gerado, s suprimir o segundo
smbolo * que abre o comentrio. O trecho documentado fica
entre os intervalos /* ... */.
O ltimo tipo de comentrio o comentrio de linha; definido
pelos caracteres //; tudo que vier aps esses smbolos ignorado
pelo compilador. S serve para uma nica linha. Esse tipo de
comentrio foi utilizado na linha 7 do nosso exemplo.

48

Governana: Gesto, Auditoria e Tecnologia da Informao

A linha 5 est em branco. Isso no tem problema nenhum em Java,

AULA

alis no teremos nenhum problema com linhas ou espaos em branco,


pois eles so ignorados pelo Java; utilize-os para ajudar na organizao
do cdigo, mas sem exagero.
Como j falamos, um sistema em Java composto de classes que
se comunicam. As classes so compostas de mtodos e atributos; na
linha 6, temos nosso primeiro mtodo, o mtodo main, que um mtodo
muito especial. Um mtodo geralmente uma palavra iniciada com letra
minscula. Seu nome vem seguido de ( ) (abre e fecha parnteses). Alis,
voc pode se perguntar por que o nome de uma classe se inicia com letras
maisculas e mtodos iniciam com letras minsculas. Isso quer dizer que
haver um erro se fizer ao contrrio?
Na verdade no, isso o que chamamos convenes de codificao; servem para auxiliar o programador a identificar partes de uma
estrutura de cdigo. Assim, caso um programador receba uma classe
para estudar ou alterar, ele saber que aquilo que comea com letras
maisculas provavelmente so classes, e que letras minsculas seguidas
de ( ) geralmente caracterizam mtodos.

Caso o desenvolvedor no siga essa conveno, no receber


nenhum erro de sintaxe, pois no so palavras reservadas,
mas sim identificadores que o prprio programador inseriu no
cdigo para dar nome s estruturas criadas por ele. Entretanto,
estar cometendo um erro grave de boa prtica, deixando o
cdigo confuso para algum que ir l-lo futuramente. Todas
as convenes de codificao do Java esto definidas num
documento curto, mas muito importante, que foi preparado
pela prpria Sun e que serve como base para construir o manual
de programao que as prprias empresas tm definido na
sua metodologia (isso quando no indicam o prprio manual
da Sun como padro a ser seguido). o Code Conventions;
tem somente 24 pginas e vale a pena dar uma olhada nele,
principalmente o programador iniciante. O download est
disponvel em:
http://java.sun.com/docs/codeconv

CEC I E R J E X T E N S O E M G O V E R N A N A

49

Java Bsico e Orientao a Objeto

| Tipos de dados e estrutura de programao em Java

Atividade prtica 1
1

Leia um pouco...

Faa o download e leia o Code Conventions. Iremos fazer alguns comentrios e retirar
as dvidas sobre esse documento no frum desta semana. S para adiantar, o Code
Conventions define a forma e o padro de como sero codificados seus programas, ou
seja, como so os comentrios quando eu escrevo com letras maisculas, quando eu
utilizo minsculas, quando eu escrevo junto palavras compostas, quando eu utilizo hfen
para separ-las etc.

Continuando a explicar as estruturas das classes: um mtodo deve


possuir ( ) aps seu nome, mas no nosso mtodo main vimos alguma coisa
dentro deles; esses so os argumentos ou parmetros que so passados
para o mtodo e no so obrigatrios.
Voltando a explicar o mtodo main: por que ele um mtodo
especial? Um sistema possui muitas classes, mas uma delas deve ser o
ponto inicial pelo qual o sistema inicializado; essa classe aquela que
possui o mtodo main. A JVM comea a executar o sistema por esse
mtodo. Como, no nosso caso, nosso sistema possui uma nica classe,
para ser uma aplicao completa e para que possa ser executada por si
s, essa classe deve possuir o mtodo main, e toda execuo do programa
deve ocorrer a partir dele.
Na linha 8, temos um novo mtodo que faz parte das bibliotecas
do Java, o mtodo System.out.println(...), que escreve na sada-padro
do computador o contedo entre (...).
Por fim, no podemos nos esquecer de que bloco de comando que
aberto deve ser fechado, e os blocos abertos nas linhas 1 (abertura da
classe) e 6 (abertura do mtodo main) so fechados nas linhas 9 e 11.

50

Governana: Gesto, Auditoria e Tecnologia da Informao

AULA

COMENTRIOS EM JAVA

Os comentrios
servem para documentar
formalmente o cdigo-fonte
de um sistema ou para o programador colocar alguma observao
que acha importante. Eles so de grande valia, principalmente se o projeto
passar por alguma manuteno, o que
invariavelmente feito por equipes que
no participaram do desenvolvimento
original; serve, portanto, como base
para o entendimento da linha
de programao do
projeto.

Todo comentrio ignorado pelo compilador, no interferindo


na execuo do programa.
O Java d suporte a trs tipos de comentrios:
1. Comentrio de linha: nele, toda sentena escrita aps o //
considerada comentrio, mas somente essa linha. Exemplo:

// Comentrio de uma nica linha

2. Comentrio de bloco: neste, todo texto definido entre /* e */


considerado comentrio pelo compilador; suporta quantas quebras
de linhas existirem. Por questes visuais, os programadores costumam
colocar * tambm no incio de cada linha que no est nos smbolos que
definem o comentrio de bloco. Exemplo:

/* Comentrio
de bloco
aceita mais de
uma linha */

CEC I E R J E X T E N S O E M G O V E R N A N A

51

Java Bsico e Orientao a Objeto

| Tipos de dados e estrutura de programao em Java

ou

/* Comentrio
* de bloco
* aceita mais de
* uma linha
*/

3. Comentrio de Javadocs: o ltimo tipo de comentrio , na


verdade, uma modificao sutil no comentrio de bloco; nele, o primeiro
smbolo passa a ser o /** ao invs do /*. Isso faz com que o comentrio
seja inserido na documentao padro de cdigo gerada pelo aplicativo
javadocs, dentro de seu HTML. Alm disso, o comentrio de javadocs
contm algumas tags (etiquetas indicativas) no formato de annotations
(iniciando com @) que so predefinidas, dizendo o significado daquela
linha de comentrio. Exemplo:

/** Comentrio inserido


nos javadocs
@author Clayton Chagas
@version 1.0
* /

INSTRUES E BLOCOS DE COMANDO

Instruo de
comando Java um conjunto
de palavras e comandos interpretveis
pelo compilador Java e que terminam
com ; .

52

Governana: Gesto, Auditoria e Tecnologia da Informao

Um bloco de comando formado por uma ou mais instrues

AULA

entre chaves; pode ter espaos em branco e quebras de linhas.


Por uma questo de organizao de cdigo, aconselhvel a
correta identao dos nveis de blocos de comando e suas instrues
internas, como voc v no exemplo a seguir:
public static void main (String[ ] args) { Incio

do bloco

System.out.println(Teste1);

Instrues de

System.out.println(Teste2); Comando
} Fim do bloco

IDENTIFICADORES

Identificadores
so os nomes que so associados s
estruturas de um programa em Java, seja o nome
de uma classe, varivel ou mtodo.

Vale lembrar que o Java case-sensitive, ou seja, diferencia


caracteres maisculos de minsculos. Assim, um recurso do cdigo cujo
identificador Teste diferente de outro recurso cujo identificador teste.
Existem inclusive regras de boas prticas a serem seguidas nas definies
de letras maisculas e minsculas dos identificadores de acordo com o
Code Conventions da Sun (http://java.sun.com/docs/codeconv).
Basicamente, classes se iniciam com letras maisculas e o restante
das letras minsculas; se o identificador de classe for composto de mais
de uma palavra, elas viro aglutinadas, cada uma delas tambm se inicia
com maisculas. Como em:
ExemploDeNomeDeClasse.

CEC I E R J E X T E N S O E M G O V E R N A N A

53

Java Bsico e Orientao a Objeto

| Tipos de dados e estrutura de programao em Java

Para mtodo e varivel (ou atributo) a regra parecida, porm a


primeira palavra se inicia com letra minscula. Exemplo:
exemploDeNomeDeMetodo( )
exemploDeNomeDeVariavel

Existem algumas outras regras, por isso recomendamos a leitura


do Code Conventions.
Quanto ao universo que pode ser utilizado, os identificadores
podem comear com qualquer letra, underscore (_) ou cifro ($).
Os caracteres subsequentes podem utilizar tambm nmeros de 0 a 9.

PALAVRAS-CHAVE
Algumas palavras no podem ser utilizadas como identificadores
em Java; normalmente representam algum comando a ser utilizado numa
instruo. Ao longo do aprendizado, voc ir conhecer a utilizao da
maioria dessas palavras. Por enquanto vamos apenas enumer-las; tente
memoriz-las, mas saiba que a maioria das IDEs iro avisar caso voc
esquea e tente utilizar uma dessas palavras-chave:

ABSTRACT

CONTINUE

FOR

NEW

SWITCH

ASSERT

DEFAULT

GOTO

PACKAGE

SYNCRONIZED

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

Alm dessas palavras-chave, true, false e null so palavras reservadas; portanto, no podem ser utilizadas como identificadores.

54

Governana: Gesto, Auditoria e Tecnologia da Informao

AULA

TIPOS DE DADOS
O Java possui quatro famlias bsicas de tipos de dados:
Boolean: que serve para trabalharmos com valores lgicos true
ou false e seu tipo primitivo o boolean.
Character: so caracteres representativos da tabela Unicode,
que uma tabela complementar tabela ASCII. Esta armazena somente 8 bits enquanto a Unicode armazena um smbolo
de 16 bits, o que possibilita armazenar muito mais caracteres
especiais, alm de uma quantidade muito maior de idiomas.
Para representar caracteres Unicode, sempre utilizamos aspas
simples (...) ao invs de aspas normais, que so duplas (...)
e utilizadas para cadeias de caracteres (string em Java). Seu tipo
primitivo o char.
Integer: esse tipo de dados serve para representaes numricas
de bases, como base decimal, hexadecimal ou octal. O tipo primitivo padro da famlia Integer o int e define um nmero de
base decimal de 32 bits com sinal. Existe o tipo long, que estende
esse decimal para 64 bits com sinal; para tanto, deve-se colocar
um L aps o nmero, alm de definir o tipo como long. Caso
voc deseje definir um hexadecimal ao invs de um decimal,
s colocar 0X antes do smbolo; para octal, deve-se colocar 0.
Existem tambm os tipos primitivos byte e short.
Float-Point: esses dados representam os tipos numricos com
ponto flutuante. Existem dois tipos com ponto flutuante em Java:
o tipo double, que o tipo padro e tem preciso de 64 bits, e o
tipo float, que tem preciso de 32 bits e necessita da colocao
do indicativo f aps o nmero.

CEC I E R J E X T E N S O E M G O V E R N A N A

55

Java Bsico e Orientao a Objeto

| Tipos de dados e estrutura de programao em Java

VARIVEIS

Varivel
um espao em memria
utilizado para armazenar informaes
sobre um determinado objeto.

Uma varivel contm um identificador e um tipo, os dois de


acordo com as definies que voc j estudou. Isso o que chamamos
de declarao de uma varivel.
Alm da declarao, uma varivel tambm pode ser inicializada
por meio do operador de atribuio =.
As declaraes de variveis do mesmo tipo podem ser feitas todas
na mesma linha, mas essa considerada uma m prtica, pois deixa o
cdigo ilegvel, confuso e desorganizado.
Veja algumas operaes com variveis no exemplo a seguir:

56

Governana: Gesto, Auditoria e Tecnologia da Informao

Para exibir o valor de uma varivel, utilizamos o mtodo

AULA

println( ) de System.out passando a varivel como argumento ou, caso


queira, a prpria String entre aspas (...).

A sada da classe anterior no console do NetBeans, quando executada, ser o valor da varivel (no caso 10) e o contedo da String.

Os contedos de uma varivel podem ser acessados por valor ou


por referncia, dependendo da sua origem.
Caso uma varivel seja de tipo primitivo, seu contedo ou estado (j que varivel um espao em memria) ser acessado por valor,
ou seja, seu dado est armazenado no espao de memria destinado a
varivel.
Pode parecer estranho, mas quando a varivel um objeto (um
tipo originrio de uma classe), ela possui um comportamento diferente
(existe um motivo muito importante para que se comporte assim; voc
estudar futuramente), o dado ou os dados so acessados por referncia,
ou seja, armazenado o endereo de memria onde o dado armazenado,
uma referncia para ele.
Suponha que, no nosso ltimo exemplo, ao invs de termos
passado diretamente a String como argumento para o mtodo println,

CEC I E R J E X T E N S O E M G O V E R N A N A

57

Java Bsico e Orientao a Objeto

| Tipos de dados e estrutura de programao em Java

tivssemos criado uma varivel do tipo String e a tivssemos passado


ao mtodo:

O resultado seria o mesmo, mas conseguiramos visualizar melhor


o acesso ao dado por valor e por referncia na memria, de acordo com
o que foi explicado e como est ilustrado na figura a seguir:
ENDEREO DE
MEMRIA

NOME DA
VARIVEL

DADO ACESSADO
NA MEMRIA

1001

var2

10

...

...

1401

str

Endereo (1701)

...

...

...

...

1701

"Testando o mtodo da aula"

OPERADORES
Todos os tipos comuns de operadores existentes nas linguagens de
programao estruturadas esto presentes em Java. Veja quais so eles,
suas principais caractersticas e formas de sua utilizao.

Operadores aritmticos
Operadores aritmticos so aqueles utilizados para efetuar operaes matemticas

58

OPERADOR

SINTAXE

FUNO

a*b

Multiplica a por b

a/b

Divide a por b

a%b

Resto da diviso de a por b

a-b

Subtrai a de b

a+b

Soma a e b

Governana: Gesto, Auditoria e Tecnologia da Informao

Esses operadores so aplicados a tipos numricos, que possuem

AULA

tamanhos e caractersticas diferentes, conforme seu tipo. Assim, caso voc


opere com duas variveis numricas de tipos diferentes, por exemplo,
um int multiplicado por um double, o resultado ser sempre do maior
tipo; no exemplo anterior, um double.

Atividade prtica 2
Crie um programa e declare nele 3 variveis numricas int, inicializando-as com algum valor e obtenha a soma dessas variveis e a
mdia delas, imprimindo esses resultados na tela.

Operadores de Incremento e Decremento


Operadores de Incremento e Decremento tm a funo de aumentar ou diminuir em uma unidade o valor de uma varivel.
Deve ser dada ateno especial posio do operador, pois,
dependendo dela, pode-se efetuar a operao desejada antes ou depois
de uma avaliao numa determinada expresso ou condio.
OPERADOR

SINTAXE

FUNO

++

i ++

Incrementa a varivel em 1; avalia a expresso antes do incremento

++

++ i

Incrementa a varivel em 1; o incremento


est antes de avaliar a expresso

--

i --

Decrementa a varivel em 1; avalia a


expresso antes do decremento

--

-- i

Decrementa a varivel em 1, antes de


avaliar a expresso

Operadores Relacionais
Operadores Relacionais comparam duas variveis e determinam
seu relacionamento com um resultado lgico, ou seja, true (para verdadeiro) ou false (para falso).

CEC I E R J E X T E N S O E M G O V E R N A N A

59

Java Bsico e Orientao a Objeto

| Tipos de dados e estrutura de programao em Java

OPERADOR

SINTAXE

FUNO

>

a>b

Avalia se a varivel a maior que a varivel b (e retorna


true ou false, dependendo dos valores de a e b)

>=

a >= b

Avalia se a varivel a maior ou igual varivel b (e retorna


true ou false, dependendo dos valores de a e b)

<

a<b

Avalia se a varivel a menor que a varivel b (e retorna


true ou false, dependendo dos valores de a e b)

<=

a <= b

Avalia se a varivel a menor ou igual varivel b (e retorna


true ou false, dependendo dos valores de a e b)

==

a==b

Avalia se a varivel a igual varivel b (e retorna


true ou false, dependendo dos valores de a e b)

!=

a!=b

Avalia se a varivel a diferente da varivel b (e retorna


true ou false, dependendo dos valores de a e b)

Atividade prtica 3
Crie um programa que calcule a rea de um retngulo, declare e
inicialize duas variveis para test-lo, imprimindo esses resultados
na tela.

Operadores Lgicos
Operadores Lgicos avaliam um ou mais operandos lgicos que
geram um nico valor lgico (true ou false) como resultado final da
expresso avaliada.
Existem seis Operadores Lgicos:
&&: and (operador e) lgico;
&: and (operador e) binrio;
||: or (operador ou) lgico;
|: or (operador ou) binrio;
^: ou exclusivo binrio;
!: operador de negao.
Os Operadores Lgicos podem se aplicar a expresses, variveis
ou constantes.
Vamos ver as tabelas-verdade dos Operadores Lgicos:

60

Governana: Gesto, Auditoria e Tecnologia da Informao

2
AULA

&& (and lgico) e & (and binrio):


OPERANDO A

OPERANDO B

RESULTADO

verdadeiro

verdadeiro

verdadeiro

verdadeiro

falso

falso

falso

verdadeiro

falso

falso

falso

falso

|| (or lgico) e | (or binrio):


OPERANDO A

OPERANDO B

RESULTADO

verdadeiro

verdadeiro

verdadeiro

verdadeiro

falso

verdadeiro

falso

verdadeiro

verdadeiro

falso

falso

falso

OPERANDO A

OPERANDO B

RESULTADO

verdadeiro

verdadeiro

falso

verdadeiro

falso

verdadeiro

falso

verdadeiro

verdadeiro

falso

falso

falso

^ (ou exclusivo binrio):

! (negao):
OPERANDO A

RESULTADO

verdadeiro

falso

falso

verdadeiro

Precedncia de operadores
A precedncia de operadores serve para indicar a ordem na qual
o compilador interpretar os diferentes tipos de operadores, para que
ele sempre tenha como sada um resultado consistente com a regra que
quer ser aplicada pelo programador, evitando ambiguidades e inconsistncias de operaes.
CEC I E R J E X T E N S O E M G O V E R N A N A

61

Java Bsico e Orientao a Objeto

| Tipos de dados e estrutura de programao em Java

Na dvida, evite fazer operaes complexas de uma s vez. Caso


seja necessrio, prefira utilizar parnteses a confiar que ir decorar e
aplicar corretamente essas precedncias.
ORDEM

OPERADOR

( ) parnteses

++ ps-incremento e -- ps-decremento

++ pr-incremento e -- pr-decremento

! negao lgica

* multiplicao e / diviso

% resto da diviso (mod)

+ soma e - subtrao

< menor que, <= menor ou igual, > maior que, >= maior ou igual

== igual e != diferente

10

& and binrio

11

| or binrio

12

^ ou exclusivo binrio

13

&& and lgico

14

|| or lgico

15

= operador de atribuio

Atividade prtica 4
2
3
4
Crie um programa que elabore o oramento de uma construtora 1
para o clculo do valor total de construo de uma piscina. O valor
total ser dado pela cubagem da piscina (metros cbicos) multiplicada por R$100,00,
que o preo do metro cbico construdo de piscina. Faa a simulao dos clculos no
programa para ver se est tudo funcionando corretamente.

Observao final:
As atividades devem ser feitas diretamente na IDE NetBeans,
mas um rascunho pode auxili-lo na construo da lgica a ser implementada.

62

Governana: Gesto, Auditoria e Tecnologia da Informao

2
AULA

INFORMAES SOBRE FRUM


importante e til compartilhar as experincias e dificuldades
de cada um, pois a dvida de um pode ser a dvida de todos.
Entre no frum da semana e participe da discusso das dvidas
e das solues das atividades desta segunda aula.
Alm disso, vamos ter tambm duas sesses de chat. Entre no
frum para ver a diviso dos grupos e o horrio das sesses.

RESUMO

Reveja os principais conceitos vistos nesta aula:


Todo programa em Java composto por uma estrutura de cdigo chamada
classe.
Uma classe composta por atributos e mtodos.
Assim, um sistema em Java composto por diversas classes que se
comunicam e colaboram entre si por meio da troca de mensagens, que
na prtica so as chamadas aos mtodos.
Toda vez que voc for digitar suas classes, siga as orientaes e convenes
de codificaes que esto no documento oficial da Sun chamado Code
Conventions.
Em Java, existem trs tipos de comentrios: comentrio de linha (//...),
comentrio de bloco (/*...*/) e comentrio para incluso de observaes
nos javadocs (/**...*/).
Instruo de comando Java um conjunto de palavras e comandos
interpretveis pelo compilador Java e que terminam com ; .
Um bloco de comando formado por uma ou mais instrues entre chaves;
aceita espaos em branco e quebras de linhas.
Identificadores so os nomes que so associados s estruturas de um
programa em Java, seja o nome de uma classe, varivel ou mtodo.
Palavras-chave so palavras que no podem ser utilizadas como
identificadores ao escrever uma classe, pois o compilador j utiliza essa
palavra para alguma funo.
O Java possui quatro famlias base de tipos de dados: Boolean, Character,
Integer e Float-Point.

CEC I E R J E X T E N S O E M G O V E R N A N A

63

Java Bsico e Orientao a Objeto

| Tipos de dados e estrutura de programao em Java

Varivel um espao em memria utilizado para armazenar informaes


sobre um determinado objeto.
O Java, como toda linguagem de programao, possui alguns tipos
de operadores para executar operaes sobre os dados e atributos
dos objetos. Dentre eles podemos citar: Operadores de Incremento e
Decremento; Operadores Relacionais e Operadores Lgicos.

Informaes sobre a prxima aula


Na prxima aula, iremos estudar um pouco mais as estruturas de controle no
Java, como realizar loopings e como criar programas mais interativos e com
melhores recursos grficos para fazer insero de dados. At l...

64

Governana: Gesto, Auditoria e Tecnologia da Informao

AULA

Estruturas de controle e entrada


de dados em Java

Meta da aula

objetivos

Apresentar as estruturas de controle do


Java e sua utilizao.

Aps o estudo do contedo desta aula, esperamos que voc seja capaz de:
1

citar os tipos de estruturas de controle utilizadas no Java;

criar estruturas de controle nos seus programas em Java;

diferenciar a utilizao das diversas estruturas


de controle;

criar programas que recebam entradas de


dados em tempo de execuo de forma grfica
e interativa.

Pr-requisitos
Para o correto e completo aprendizado desta aula, precisamos que voc: tenha um computador com o
Windows XP ou Windows Vista instalado com pelo
menos 512MB de memria RAM; tenha instalado e
configurado o Java Development Kit (JDK) conforme as
instrues do Apndice A; tenha instalado o Ambiente
de Desenvolvimento Integrado (IDE) NetBeans conforme as instrues do Apndice B; esteja animado e motivado para iniciar o aprendizado dessa fabulosa linguagem de programao que est dominando os mercados
de desenvolvimento, programao e
tecnologia na atualidade.

Java Bsico e Orientao a Objeto

INTRODUO

| Estruturas de controle e entrada de dados em Java

At agora, executamos programas de forma unicamente sequencial, ou seja,


tem um ponto de entrada e a partir dele ocorre a execuo dos comandos de
acordo com os parmetros passados, linha a linha.

Nesta aula, voc


ir aprender como executar
desvios ou aes iteradas (que ocorrem mais de uma vez) por meio de conjuntos de comandos dentro de estruturas chamadas estruturas de controle.
Essas estruturas esto divididas em:
estruturas de deciso: que permitem a seleo
de partes do cdigo para execuo, os chamados
desvios (if e switch);
estruturas de repetio: que permitem a
repetio da execuo de partes especficas
do cdigo, os chamados loopings (while,
do-while e for);
interrupes: estruturas que param e
redirecionam o fluxo do programa
(break, continue e return).

Vamos ento estudar cada uma dessas estruturas para ver como elas podem
ajudar na programao de classes Java.

ESTRUTURAS DE DECISO

Estruturas de
deciso so comandos do Java que permitem que blocos sejam executados ou no, de acordo
com algum critrio.

66

Governana: Gesto, Auditoria e Tecnologia da Informao

Existem quatro formas de estruturas de deciso em Java:

AULA

if
if-else
if-else-if
switch

Declarao if
A declarao if dentro de um bloco de comando determina que
as instrues daquele bloco s sero executadas se a expresso lgica
associada ao if for verdadeira.
A declarao if possui a seguinte sintaxe:

if (expresso_lgica)
instruo;

ou

if (expresso_lgica)

instruo1;
instruo2;
instruo3;
...
}

Lembre-se de que expresso lgica alguma estrutura em Java


(expresso ou varivel) que retorna um valor booleano (true ou false).

true

Condio
lgica

false

Instruo
Caso TRUE
Figura 3.1: Fluxograma da declarao if.

CEC I E R J E X T E N S O E M G O V E R N A N A

67

Java Bsico e Orientao a Objeto

| Estruturas de controle e entrada de dados em Java

O trecho de cdigo a seguir exemplifica uma implementao da


declarao if:

No exemplo anterior, o atributo nota tem o valor 6.0. Aps essa


definio, temos um I F que testa logicamente o valor de nota, perguntado

IF
A palavra if utilizada na estrutura
de deciso uma
palavra em ingls e
significa se, tendo
inclusive o mesmo
significado dentro
da estrutura do programa. Se voc for
um programador
iniciante, a leitura
como se fosse portugus pode ajudar
no entendimento da
lgica representada.
Por exemplo, no
trecho de cdigo
acima podemos
fazer a seguinte
leitura: se a nota
for maior ou igual
a 5.0... e ento
a estrutura lgica interpretada
de acordo com o
valor da varivel
utilizada para avaliar a expresso,
no caso nota, que
tem o valor 6.0
(definido na linha
anterior); assim, a
expresso lgica
retorna true e ento
entra no bloco interior da estrutura
executando-o no
caso, imprimindo a
mensagem passada
como parmetro do
mtodo println.

68

no teste se (if) nota maior ou igual a 5.0. Como no nosso caso essa
pergunta tem uma resposta positiva, pois realmente nota tem um valor
maior ou igual a 5.0, j que vale 6.0, o trecho entre parnteses retorna um
resultado verdadeiro (true), e quando isso ocorre, o bloco de comando
dentro do teste executado, ento o programa executa a linha System.
out.println(Parabns, voc passou na disciplina);
Caso a pergunta do teste tenha uma resposta negativa, ele retorna
um resultado falso (false) e o bloco de comando dentro do teste no
executado, passando a execuo do programa para o prximo comando
aps o bloco de comando do teste.

Declarao if-else
A declarao if-else em dois blocos de comando associados
determina que as instrues dentro do bloco ao qual o if pertence sero
executadas se a expresso lgica associada ao if for verdadeira; as instrues dentro do bloco ao qual o else pertence sero executadas se a
expresso for falsa.
A declarao if-else possui a seguinte sintaxe:

if (expresso_lgica)
instruo_caso_expresso_true;
else
instruo_caso_expresso_false;

ou

Governana: Gesto, Auditoria e Tecnologia da Informao

if (expresso_lgica)

AULA

instruo1_caso_expresso_true;
instruo2_caso_expresso_true;
...
}

else

instruo1_caso_expresso_false;
instruo2_caso_expresso_ false;
...
}

true

Instruo
Caso TRUE

Condio
lgica

false

Instruo
Caso FALSE

Figura 3.2: Fluxograma da declarao if-else.

O trecho de cdigo a seguir exemplifica uma implementao da


declarao if-else:

No exemplo anterior, o atributo nota tem o valor 6.0. Aps essa


definio, temos um if que testa logicamente o valor de nota, perguntado
no teste se (if) nota maior ou igual a 5.0. Como no nosso caso essa
pergunta tem uma resposta positiva, pois realmente nota tem um valor
maior ou igual a 5.0, j que vale 6.0, o trecho entre parnteses retorna
um resultado verdadeiro (true) e quando isso ocorre, o bloco de comando
dentro do teste executado, ento o programa executa a linha System.
out.println(Parabns, voc passou na disciplina).

CEC I E R J E X T E N S O E M G O V E R N A N A

69

Java Bsico e Orientao a Objeto

| Estruturas de controle e entrada de dados em Java

Ainda nesse exemplo, suponha que o valor de nota no tivesse


sido inicializado com 6.0, mas com 4.0; ento, o teste do if retornaria
um valor false j que sua resposta ao teste seria negativa. Assim, o bloco
I F -E L S E
As palavras if-else
utilizadas na estrutura de deciso so
palavras em ingls
e significam se e
seno em portugus,
tendo inclusive o
mesmo significado
dentro da estrutura
do programa. Se
voc for um programador iniciante,
a leitura como se
fosse portugus
pode ajudar no
entendimento da
lgica representada.
Por exemplo, no
trecho de cdigo
anterior podemos
fazer a seguinte
leitura: SE A NOTA
FOR MAIOR OU
IGUAL A 5.0...
SENO...
Nesse caso, significa que se a nota
for maior ou igual
a 5.0, a expresso
avaliada retornar
true e executar o
bloco de comando
interior da estrutura
do if; caso contrrio, executar o
bloco de comando
interior da estrutura
do else.

de comando do

IF

no seria executado e seria executado o bloco de

comando do E L S E , que significa seno. A leitura pode ser feita da seguinte


forma: Se (if) tal assertiva for verdade execute tal funo, seno (else,
do contrrio) execute esta outra... A JVM ir imprimir a frase Voc
foi reprovado na disciplina, por meio do mtodo System.out.println.

Declarao if-else-if
Com as estruturas if e if-else conseguiramos apenas tratar um
fluxo binrio, no mximo; para fluxos mais complexos, utilizamos a
estrutura if-else-if, na qual conseguimos tratar mais de dois fluxos possveis, como no exemplo a seguir.
A declarao if-else-if possui a seguinte sintaxe:
if (expresso_lgica1)
instruo_caso_expresso1_true;
else if (expresso_lgica2)
instruo_caso_expresso2_true;
else
instruo_caso_expresso2_false;

true

false

Expresso
Lgica1

Instruo1

true

Instruo2

Figura 3.3: Fluxograma da


declarao if-else-if.

70

Governana: Gesto, Auditoria e Tecnologia da Informao

Expresso
Lgica2

false

Instruo3

O trecho de cdigo a seguir exemplifica uma implementao da

AULA

declarao if-else-if:

No exemplo anterior, o atributo nota tem o valor 6.0. Aps essa


definio, temos um if que testa logicamente o valor de nota, perguntado
no teste se (if) nota maior ou igual a 9.0. Neste caso, no , ento a
execuo sai do bloco de comando do if e vai para o prximo else if, cujo
teste tambm falso, j que o valor de nota, que 6.0, no est entre
7.0 e 9.0. Ento, no prximo else if, o teste pergunta se nota est entre
5.0 e 7.0, o que verdade. Com isso, o bloco de comando dentro desse
teste executado, ou seja, imprime Voc foi aprovado, no deixe de
estudar, por meio do mtodo System.out.println... e a linha de execuo
passa para o comando logo aps os I F - E L S E

IF

aninhados.

Declarao switch
Se voc trabalhar com fluxos mltiplos e quiser escolh-los a
partir de um valor numrico (obrigatoriamente um int), a estrutura de
deciso a ser utilizada o switch, que, de acordo com o valor numrico
da varivel, define qual bloco ser executado.
A declarao switch possui a seguinte sintaxe:
switch (varivel_int) {
case valor1:
instruo1;
instruo2;
...
break;
case valor2:

IF-ELSE

IF

As palavras if-else
if utilizadas na
estrutura de deciso
so palavras em
ingls e significam
se, seno se em
portugus, tendo
inclusive o mesmo
significado dentro
da estrutura do programa. Se voc for
um programador
iniciante, a leitura
como se fosse portugus pode ajudar
no entendimento da
lgica representada.
Nesse caso, temos
o que chamamos de
blocos de comando
aninhados (mais de
dois). Tente interpretar, assim como
fizemos nos exemplos anteriores.

CEC I E R J E X T E N S O E M G O V E R N A N A

71

Java Bsico e Orientao a Objeto

| Estruturas de controle e entrada de dados em Java

instruo1;
instruo2;
...
break;
default:
instruo1;
instruo2;
...
break;
}

A declarao switch ainda possui um bloco definido como default,


que executado caso nenhum dos valores do case corresponda ao valor
da varivel inteira.

true
valor1

instrues_bloco1

break

false

true

valor2

instrues_bloco2

break

instrues_bloco3

break

false

true

valor3
false

bloco
default

Figura 3.4: Fluxograma da declarao switch.

72

Governana: Gesto, Auditoria e Tecnologia da Informao

O trecho de cdigo a seguir exemplifica uma implementao da

AULA

declarao switch:

No cdigo anterior, definimos uma varivel do tipo int e definimos


o valor dela como 3.
A prxima linha passa o argumento para switch, que deve ser um
valor inteiro, no caso passamos andar, cujo valor 3.
Assim, a cada linha case aps o switch, testado se h algum valor
compatvel com o argumento passado. No nosso exemplo, o terceiro
case tem o valor 3, o mesmo de andar, ento executado o bloco de
comando dentro do case e, aps isso, a execuo sai da estrutura switch/
case, passando a execuo para o prximo comando no cdigo.

ESTRUTURAS DE REPETIO

Estruturas
de repetio so instrues em Java que permitem que
determinado bloco de comandos seja
executado vrias vezes. A quantidade
de vezes pode variar do zero
ao infinito.

CEC I E R J E X T E N S O E M G O V E R N A N A

73

Java Bsico e Orientao a Objeto

| Estruturas de controle e entrada de dados em Java

Declarao while
O while executa um bloco de comandos repetidamente, enquanto
a condio lgica imposta como teste for verdadeira (expresso lgica
igual a true).
A declarao while possui a seguinte sintaxe:
while (expresso_lgica) {
instruo1;
instruo2;
...
}

Condio
lgica

false

true
Instruo
Caso TRUE

Figura 3.5: Fluxograma da declarao while.

O trecho de cdigo a seguir exemplifica uma implementao da


declarao while:

74

Governana: Gesto, Auditoria e Tecnologia da Informao

do que 0, ele continua executando as operaes do bloco de comando


no interior do while. Nesse caso, a operao executada o decremento
unitrio do valor de i (i--). Assim, na primeira execuo o teste lgico
pergunta se i maior do que 0, o que verdadeiro, ento ele entra na
execuo do while e subtrai 1 do valor atual de i, que passa a valer 9, e
o teste feito novamente mas com o novo valor de i, e assim sucessivamente, at o teste retornar false, ou seja, quando i for menor ou igual a
zero, quando sai a execuo da estrutura while.

Declarao do-while
O do-while executa um bloco de comandos repetidamente enquanto a condio lgica imposta como teste for verdadeira (expresso lgica
igual a true); a diferena entre ele e o while que o teste da expresso
lgica vem depois do bloco; assim, a instruo ser executada pelo menos

AULA

A execuo e leitura do W H I L E diz que enquanto o valor de i for maior

No nosso exemplo, temos uma varivel i inteira com valor 10.


WHILE
A palavra while
utilizada na estrutura de repetio
uma palavra em
ingls e significa
enquanto, em
portugus; tem
inclusive o mesmo
significado dentro
da estrutura do programa. Se voc for
um programador
iniciante, a leitura
como se fosse portugus pode ajudar
no entendimento da
lgica representada. Se estiver com
dificuldades, tente
interpretar em portugus assim como
fizemos nos exemplos anteriores.

uma vez e somente depois ser avaliada.


A declarao do-while possui a seguinte sintaxe:
do {
instruo1;
instruo2;
...
} while (expresso_lgica);

Instruo

Condio
lgica

false

true
Figura 3.6: Fluxograma da declarao
do-while.

CEC I E R J E X T E N S O E M G O V E R N A N A

75

Java Bsico e Orientao a Objeto

| Estruturas de controle e entrada de dados em Java

O trecho de cdigo a seguir exemplifica uma implementao da


declarao do-while:

Como vimos, o nosso exemplo executar a mesma operao de um


bloco while, mas com a diferena de que ele executa o bloco de comando
do lao antes para depois fazer o teste lgico; com isso, ele ser executado
pelo menos uma vez. Temos uma varivel i inteira que foi inicializada com
0, aps isso o bloco do-while, ento, o bloco de comando no seu interior
executado a primeira vez, imprimindo o valor de i e na linha seguinte
fazendo com o que o valor inicial do i seja incrementado (acrescido em
1) por meio da operao i++. Assim, i, que valia 0, passa a valer 1 na
primeira passagem. Aps isso, ele faz o teste no while, perguntando se
o valor atual de i menor que 10, caso seja, ele executa o bloco mais
uma vez. No caso , ento i novamente incrementado at o teste lgico
do while retornar false, o que ocorre quando i for igual a 10, saindo do
DO-WHILE
As palavras dowhile utilizadas
na estrutura de
repetio so
palavras em ingls
e significam faaenquanto em
portugus; tm
inclusive o mesmo
significado dentro
da estrutura do
programa. Se voc
for um programador iniciante,
a leitura como se
fosse portugus
pode ajudar no
entendimento da
lgica representada. Se estiver com
dificuldade, tente
interpretar em
portugus, assim
como fizemos nos
exemplos ante-

76

lao D O - W H I L E e passando para o comando seguinte.

Declarao for
O for executa um bloco de comandos repetidamente da mesma
forma que o while ou o do-while, ou seja, o programador pode controlar
a quantidade de execues de acordo com um teste lgico.
A declarao for possui a seguinte sintaxe:
for (expresso_lgica) {
instruo1;
instruo2;
...
}

Governana: Gesto, Auditoria e Tecnologia da Informao

3
AULA

Declara
varivel

Condio
lgica

false

true

Instruo

Figura 3.7: Fluxograma da declarao for.

O trecho de cdigo a seguir exemplifica uma implementao da


declarao for:

Que um cdigo que executa os mesmos comandos do trecho a


seguir, mas dessa vez implementado com while:

Na leitura do lao for do nosso exemplo, temos o seguinte: para


uma varivel i inteira inicializada com 0 (esta a declarao e inicializao da varivel), execute o bloco de comando at ela ficar menor do que
10 (esse o teste lgico). Incremente-a de 1 (i++) aps cada passagem
pelo bloco at o teste dar false.

CEC I E R J E X T E N S O E M G O V E R N A N A

77

Java Bsico e Orientao a Objeto

| Estruturas de controle e entrada de dados em Java

Ento, o nosso exemplo vai imprimir o valor inicial de i, que


0, na primeira passagem pelo bloco por meio do mtodo System.out.
println... e aps isso vai incrementar a varivel i, ento faz o teste lgico, como i passou de 0 para 1 e esse valor menor do que 10, o teste
lgico retorna true e o bloco de comando executado novamente. E
assim sucessivamente, at o teste retornar false, quando a execuo sai
do bloco for para continuar a executar o restante do cdigo.

INTERRUPO

Os comandos de
interrupo redirecionam o fluxo
normal de um bloco de comandos. No
Java existem trs tipos de interrupo:
break, continue e return.

Declarao break
A declarao break utilizada juntamente com a declarao
switch para fazer o escape desse bloco quando alguma das opes do
switch executada; caso contrrio, o switch continua sua execuo. No
muito usual, mas voc pode utilizar o break com a mesma finalidade
(interromper o bloco de comandos e sair da estrutura de controle) para
as instrues for, while ou do-while.
O trecho de cdigo a seguir exemplifica uma implementao da
declarao break quando utilizada junto com o switch:

78

Governana: Gesto, Auditoria e Tecnologia da Informao

3
AULA

Esse trecho de cdigo faz a mesma operao que explicamos na


parte de switch, mas agora a execuo sai explicitamente do bloco switch/case ao entrar no case associado varivel numrica por causa do
comando break, que quebra a execuo da estrutura de comando.

Declarao continue
A declarao continue utilizada para saltar da iterao corrente
de uma estrutura de repetio para a prxima iterao. Assim, pode ser
utilizada tanto com for quanto com while ou do-while.
O trecho de cdigo a seguir exemplifica uma implementao da
declarao continue sendo utilizada junto com o for:

CEC I E R J E X T E N S O E M G O V E R N A N A

79

Java Bsico e Orientao a Objeto

| Estruturas de controle e entrada de dados em Java

Esse programa implementa o algoritmo de contagem de uma


determinada palavra dentro de uma coleo delas. Assim que o cdigo
entra no if (quando encontra um valor diferente de Bia, retornando true),
ele encontra um continue e ento vai para a prxima iterao do for,
prxima passagem pelo bloco for, deixando de incrementar o contador
e consequentemente de contar a palavra Bia. Porm, se ele encontra a
palavra Bia, o if retorna false e ele no entra no seu bloco, executando
o comando seguinte, que justamente o incremento do contador. Assim,
ao final, o contador representa quantas vezes Bia est presente no array
alunos.

Declarao return
A declarao return utilizada para sair de um mtodo que est
sendo executado ao final de todas as suas operaes, retornando para
o ponto exatamente aps a chamada do mtodo no cdigo que o chamou.
Ao return pode estar associado um valor de determinado tipo
(especificado na assinatura do mtodo) ou pode no retornar nada
(quando ento no existe nada aps o return, somente o smbolo de fim
de comando ;).
Assim, podemos ter aps o return o smbolo ; (quando o mtodo apenas executa operaes mas no retorna nada), um valor ou uma
varivel com valor compatvel ao tipo de retorno do mtodo.
Vamos ver os exemplos de utilizao do return:
return ++i;
//retorna para o cdigo que chamou o valor da varivel i
incrementada
return 2;
//retorna para o cdigo que chamou o valor 2
return Ola;
//retorna para o cdigo que chamou a String Ol
return;
//no retorna nada para o cdigo que chamou, apenas passa
a execuo para ele

80

Governana: Gesto, Auditoria e Tecnologia da Informao

AULA

ENTRADA DE DADOS E INTERATIVIDADE


At agora, nossos programas no eram interativos, pois os dados
de entrada dos programas eram inseridos diretamente no cdigo.
Voc vai estudar, a partir de agora, como deix-los mais interessantes e interativos, fazendo com que alguns dados possam ser inseridos
no momento da execuo.
Nesta aula, voc ver a forma mais bsica de captura de dados
do teclado por meio da classe BufferedReader. Nas prximas aulas, ver
mtodos mais sofisticados.

Entrada de dados com buffered reader


A classe BufferedReader do pacote java.io captura dados por
intermdio do teclado.
Temos de tomar algumas medidas administrativas que sero
explicadas mais tarde para utilizar a classe BufferedReader. A primeira
delas fazer a importao dessa classe para o nosso programa com o
cdigo a seguir (depois iremos importar outras classes):
import java.io.BufferedReader
A partir de ento escrevemos a classe normalmente e, dentro do
mtodo main, instanciamos a classe passando como construtor a uma
outra classe, a classe InputStreamReader, que recebe um stream de entrada (bytes) e no seu construtor quem ser a entrada, no caso do System.
in, que a entrada padro do sistema (o teclado):
BufferedReader dadEnt = new BufferedReader(new
InputStreamReader(System.in));

Por enquanto, essa classe apenas para voc conseguir implementar alguma interatividade mais interessante nos seus
exemplos e nas nossas atividades. No se preocupe com os
detalhes dos conceitos de instanciar uma classe, construtor e
outros que sero vistos com mais detalhes nas aulas de Orientao a Objeto.

CEC I E R J E X T E N S O E M G O V E R N A N A

81

Java Bsico e Orientao a Objeto

| Estruturas de controle e entrada de dados em Java

Aps isso, precisaremos do cdigo que faz a leitura da linha de


entrada, que o mtodo readLine( ) do seu objeto BufferedReader, no
caso o dadEnt:
Nome = dadEnt.readLine( );
O cdigo completo fica da seguinte forma:

Para executar de forma interativa o cdigo anterior, aps criar e


implementar a classe no NetBeans, tecle Shift+F6 para executar o programa, e uma caixa de entrada de dados ir se abrir na parte inferior
da IDE:

82

Governana: Gesto, Auditoria e Tecnologia da Informao

Na janela Entrada, digite seu nome conforme foi solicitado no

AULA

console; aps teclar Enter, veja que seu nome ser impresso como est
descrito no cdigo-fonte:

Agora,
vamos praticar
um pouco!
Utilize o NetBeans para executar as atividades. Vale lembrar
que, quanto mais voc exercitar a
programao e utilizar a IDE, melhor
programador se tornar. Alm dos
exerccios apresentados nestas aulas,
procure criar seus prprios exerccios e
exemplos, principalmente com situaes do seu dia a dia. Isso estimular o aprendizado e a criatividade, melhorando sua habilidade de programar.

CEC I E R J E X T E N S O E M G O V E R N A N A

83

Java Bsico e Orientao a Objeto

| Estruturas de controle e entrada de dados em Java

Atividade prtica 1
Utilizando a classe BufferedReader, capture cinco palavras digitadas
pelo usurio e mostre-as como uma nica frase numa nica linha.
Exemplo:
Palavra 1: Ola,
Palavra 2: bem
Palavra 3: vindo
Palavra 4: ao
Palavra 5: Java

Sada: Ola, bem vindo ao Java

Atividade prtica 2
Utilizando a classe BufferedReader, solicite um nmero ao usurio entre 0 e 10 e imprima seu valor por extenso. Caso o usurio
imprima um valor invlido, escreva a mensagem Valor invlido.

Atividade prtica 3
2
3
4
Utilizando a classe BufferedReader, faa um programa que l 1
trs notas de um aluno inseridas via teclado e imprime sua mdia,
dizendo se o mesmo foi aprovado na disciplina caso a nota seja maior do que cinco ou
reprovado, caso contrrio.

Atividade prtica 4
Faa um programa que imprima todos os nmeros de 0 a 100.

84

Governana: Gesto, Auditoria e Tecnologia da Informao

AULA

Atividade prtica 5
Faa um programa que imprima os nmeros pares de 0 a 100.

RESUMO

Vamos rever os principais conceitos vistos nesta aula.


Para executarmos programas sem ser de forma unicamente sequencial,
utilizamos estruturas chamadas estruturas de controle.
Essas estruturas podem ser divididas em: estruturas de deciso, estruturas
de repetio e interrupes.
As estruturas de deciso permitem a seleo de partes do cdigo para
execuo, os chamados desvios, e podem ser do tipo if ou do tipo
switch.
As estruturas de repetio, como o prprio nome diz, permitem a repetio
da execuo de partes especficas do cdigo, os chamados loopings, e
podem ser do tipo while, do tipo do-while ou do tipo for.
As interrupes so estruturas que param e redirecionam o fluxo do
programa de acordo com algum critrio, e podem ser do tipo break, do
tipo continue ou do tipo return.

Informaes sobre a prxima aula


Na prxima aula, voc ir estudar os arrays e ver como conseguimos com
eles economizar linhas de cdigo e manuteno quando precisamos lidar
com uma quantidade muito grande de dados do mesmo tipo. At l...

CEC I E R J E X T E N S O E M G O V E R N A N A

85

AULA

Arrays

Meta da aula

objetivos

Apresentar as principais formas de utilizao de arrays e operaes


matriciais em Java.

Aps o estudo do contedo desta aula, esperamos que voc seja capaz de:
1

declarar e criar estruturas de array em Java;

acessar elementos de um array;

determinar o nmero de elementos de um


array;

declarar e criar um array multidimensional.

Pr-requisitos
Para o correto e completo aprendizado desta aula, precisamos que voc: tenha um computador com o Windows XP ou Windows Vista instalado com pelo menos
512MB de memria RAM; tenha instalado e configurado o Java Development Kit (JDK) conforme as instrues do Apndice A; tenha instalado o Ambiente de
Desenvolvimento Integrado (IDE) NetBeans conforme
as instrues do Apndice B; esteja animado e motivado para iniciar o aprendizado desta fabulosa linguagem
de programao que est dominando
os mercados de desenvolvimento,
programao e tecnologia na atualidade.

Java Bsico e Orientao a Objeto

| Arrays

INTRODUO

Nas aulas anteriores, voc aprendeu a declarar diferentes variveis usando os


tipos de dados primitivos; isso feito definindo um identificador seguido do
tipo de dado que ser associado quela varivel.
Para calcular a mdia de um aluno, voc precisa inserir trs notas (cujo contedo um inteiro), com trs variveis do tipo int, com um identificador para
cada varivel.
Como? Colocando trs linhas para declarao e mais trs para inicializao,
conforme mostrado a seguir:
int nota1;
int nota2;
int nota3;
nota1 = 5;
nota2 = 7;
nota3 = 8;

Agora imagine se voc tivesse de utilizar cem variveis! Isso seria no mnimo
trabalhoso, no mesmo?

88

Governana: Gesto, Auditoria e Tecnologia da Informao

Nesses casos, podemos utilizar um recurso que resolve esse problema, criando

AULA

uma estrutura matricial para indexar (criar ndices) as variveis, como se fossem
clulas sequenciais. Isso facilita sua criao, manipulao e controle.
Em Java essa estrutura matricial um tipo de varivel especial denominada
array.

Array
y
uma estrutura indexada, ou seja, uma varivel
cujo tipo cria uma estrutura capaz
de armazenar mltiplos itens de um
mesmo tipo de dado em um bloco contm
nuo de memria, dividindo-o em certa
quantidade de posies; cada
posio definida por um
ndice.

Figura 4.1: Exemplo de um array de inteiros.

DECLARANDO UM ARRAY
Como j dissemos, o array uma varivel e, como toda varivel,
precisa ser declarada. Mas ele tem uma declarao diferente dos tipos
primitivos: necessrio definir qual tipo ir compor os elementos desse
array, colocar essa definio seguida por um par de colchetes ([ ]) e pelo
identificador. No exemplo a seguir, declaramos um array cujo contedo
so nmeros inteiros:
int[

ages;

CEC I E R J E X T E N S O E M G O V E R N A N A

89

Java Bsico e Orientao a Objeto

| Arrays

Existe tambm a possibilidade de colocar o par de colchetes aps


o identificador:
int

ages[

];

Depois de declarado, precisamos criar o array e especificar seu


tamanho, para aloc-lo em memria. Tecnicamente, esse processo se
chama construo; assim, para executar tal atividade precisamos do
auxlio de um construtor, que nesse caso ser executado por meio da
palavra reservada new:
// declarao do array de inteiros
int

ages[

];

// construo do array declarado acima com espao para cem


nmeros inteiros
ages

new

int[100];

No exemplo, a declarao diz ao compilador Java que o identificador ages ser usado como o nome de um array de inteiros cujo contedo
ter cem elementos numricos inteiros.

Figura 4.2: Instanciao de um array em memria.

90

Governana: Gesto, Auditoria e Tecnologia da Informao

Um detalhe importante que podemos ainda inicializar, ou seja,

AULA

colocar o contedo do dado no array ao mesmo tempo que construdo


e declarado, ou seja, podemos executar a declarao, construo e inicializao de um array numa mesma linha, assim como fazemos com
variveis simples dos tipos primitivos. Veja os exemplos:
boolean

resultados[ ]

{true, false, false, true};

Nesse caso, declaramos uma varivel array cujo identificador


(cujo nome) resultados e seu contedo um valor lgico, ou seja, um
booleano (true ou false), e ao mesmo tempo o inicializamos por meio do
operador de atribuio = seguido de um par de chaves ({ }) cujo contedo
so quatro valores booleanos separados por vrgulas; assim, o compilador
assume implicitamente que seu array tem o tamanho quatro. Observe
que nesse caso no foi necessrio indicar o tamanho do array.
Veja outro exemplo:
double

[ ]notas

{8.0, 9.5, 6.7, 8.4, 4.0};

Neste caso, declaramos uma varivel array cujo identificador (cujo


nome) notas e seu contedo um valor numrico double; ao mesmo
tempo o inicializamos atravs do operador de atribuio = seguido de um
par de chaves ({ }), cujo contedo so cinco valores numricos double
separados por vrgulas; assim, o compilador assume implicitamente que
seu array tem tamanho cinco; observe que nesse caso tambm no foi
necessrio indicar o tamanho do array.

Uma vez inicializado, o tamanho de um array no pode ser


modificado, pois sua estrutura alocada num determinado
bloco contnuo de memria que no pode ser alterado.

CEC I E R J E X T E N S O E M G O V E R N A N A

91

Java Bsico e Orientao a Objeto

| Arrays

ACESSANDO ELEMENTOS DE UM ARRAY

Nos conceitos iniciais, vimos que um array uma estrutura que


trata os seus elementos (seus dados) de forma indexada, ou seja, ele cria
um ndice para identificar cada elemento e, por meio desse ndice, ele
consegue recuperar essas informaes.
O primeiro elemento do array recebe o ndice 0 (zero), o segundo
o ndice 1, e assim sucessivamente.

Estruturas indexadas em computao so


aquelas em que a estrutura associa
cada elemento a uma forma de identificar sua posio. Essa forma de identificar
por meio de um ndice, que d origem ao
nome estrutura indexada,
que normalmente numrico.
Quando a estrutura inicia a indexao por 0
(zero), estamos fazendo uma indexao zero
base; quando a indexao comea por 1 (um),
estamos fazendo uma indexao one base.
No caso de arrays em Java, a indexao
zero base, ou seja, o primeiro elemento
do array
y o elemento de ndice 0,
o segundo o de ndice 1, e
assim sucessivamente.

92

Governana: Gesto, Auditoria e Tecnologia da Informao

Uma das vantagens de ter uma estrutura indexada que conse-

AULA

guimos acessar individualmente e a qualquer momento cada elemento


do array. Os ndices so sempre inteiros e, para um array de tamanho
n, os ndices vo de 0 at n-1.
Lembra do array ages, que foi construdo anteriormente? Se quisermos atribuir ou inicializar o primeiro elemento do array com o valor
inteiro 10, j que ages um array de inteiros, devemos escrever na nossa
classe a seguinte linha aps a construo do array:
ages[0] = 10;

Para imprimir o valor desse elemento do array na sada do sistema,


s utilizar o mtodo println, passando como argumento o elemento do
array que queremos imprimir:
System.out.println(ages[0]);

Uma dica importante que voc pode utilizar estruturas de repetio para
manipular arrays, seja para preencher o valor de seus elementos, seja para
imprimi-los. Veja o exemplo a seguir, que, aps construir o array, utiliza
uma estrutura for para inicializ-lo com valores de 0 a 100 e imprimi-lo, o
que muito mais fcil do que ter de digitar ou copiar e colar cem vezes o
mtodo System.out.println(...).

Atividade prtica 1
2
Abra sua IDE NetBeans, implemente e execute uma classe que construa 1
um array com capacidade de armazenar 100 inteiros. Inicialize ento cada
elemento do array com os nmeros de 0 at 99 e imprima-os por intermdio de uma
estrutura for, como foi exemplificado.

CEC I E R J E X T E N S O E M G O V E R N A N A

93

Java Bsico e Orientao a Objeto

| Arrays

Atividade prtica 2
2
Implemente e execute uma nova classe que construa um array com capa- 1
cidade de armazenar 100 inteiros, mas dessa vez inicialize cada elemento
do array com os nmeros de 1 at 100 e imprima-os por meio de uma estrutura for,
conforme foi exemplificado.

DESCOBRINDO O TAMANHO DE UM ARRAY


Muitas vezes voc pode receber um array para percorrer ou recuperar seus dados, mas no sabe o tamanho dele. Para isso, todo array
possui um atributo lenght que retorna seu tamanho, ou seja, a quantidade
de elementos que o array pode armazenar ( o espao que foi alocado
em memria por ocasio de sua construo, lembra-se?).
A forma de utilizao do atributo lenght por meio do nome do
array seguido pelo operador . seguido do prprio atributo lenght:
nomeDoArray.lenght

Assim, podemos melhorar o cdigo do exemplo anterior fazendo


com que o for descubra sozinho at que ndice ele deve percorrer:

Se voc, por descuido, exceder o valor que deve ser percorrido na utilizao do looping
dentro do array, ser lanada uma Exception, pois ocorreu um erro; por exemplo, caso voc
faa o for ir at o ndice 100 utilizando i < 101 (que no existe no nosso array) em vez de
99 com i < 100 (que o ltimo ndice do array e, consequentemente, o valor do limite do
for), isso vai ultrapassar os limites do array lanando uma exceo do tipo ArrayIndexOutOfBoundsException.
Por enquanto, no se preocupe com esses conceitos de Exceptions, apenas saiba que existem
e que podem ocorrer. Futuramente, teremos uma aula somente sobre esse assunto.

94

Governana: Gesto, Auditoria e Tecnologia da Informao

AULA

Atividade prtica 3
2
3
Implemente e execute no NetBeans uma classe que construa um array 1
com capacidade de armazenar 100 inteiros; inicialize ento cada elemento
do array com os nmeros de 0 at 99 e imprima-os por meio de uma estrutura for
como j foi exemplificado, mas em vez de definir explicitamente o intervalo do looping,
utilize o atributo lenght do array para definir seu tamanho.

Atividade prtica 4
2
3
Implemente e execute no NetBeans uma nova classe semelhante da 1
Atividade 1, mas desta vez modifique os parmetros da estrutura for
para forar a sada de um erro no sistema, forando o lanamento de uma Exception
(vide caixa de nfase anterior).

ARRAYS MULTIDIMENSIONAIS
s vezes, precisamos representar um array multidimensional, por
exemplo, uma matriz de duas dimenses. Essa abstrao feita em Java
por meio de um array dentro de outro array.
Para fazer isso, voc utiliza um novo par de colchetes depois do
par de colchetes que j existe no array unidimensional.
Veja no exemplo como criar um array de duas dimenses para
armazenar 64 por 64 nmeros inteiros (4.096 no total). Isso criar uma
estrutura com 64 linhas e 64 colunas:
int [ ] [ ]

array2d = new int [64] [64];

CEC I E R J E X T E N S O E M G O V E R N A N A

95

Java Bsico e Orientao a Objeto

| Arrays

ENTRADA DE DADOS COM A CLASSE SCANNER


Veja como melhorar a interatividade dos programas por meio da
entrada de dados em tempo de execuo.
Da ltima vez utilizamos a classe Buffered Reader para fazer isso,
lembra-se?
Desta vez vamos utilizar uma classe mais nova e mais simples: a
classe Scanner do pacote java.util.
Vamos mostrar um exemplo utilizando a classe Scanner e depois
explicaremos as partes mais importantes.

Na linha 1 indicamos ao compilador que iremos utilizar uma


classe externa e indicamos o caminho completo dos pacotes e subpacotes
da classe:

Em seguida, nas linhas 3 e 4, o que j sabemos: definio e declarao da classe e do mtodo main, normal...

Agora sim: na linha 5 declaramos uma varivel cujo nome sc


(poderia ser qualquer coisa) e dissemos que ela do tipo Scanner, ou seja,
um objeto que faz tudo que Scanner faz. Construmos ento o objeto
com new e passamos como argumento ao construtor, que receber dados
da entrada (in) padro do sistema (System), que o teclado:

96

Governana: Gesto, Auditoria e Tecnologia da Informao

Na linha 6 imprimimos na tela um pedido para o usurio digitar

AULA

seu nome. Na linha seguinte declaramos uma varivel do tipo String


para receber a palavra digitada pelo usurio, ela capturada atravs do
mtodo next de Scanner, e representada pela varivel sc:

Por fim, imprimimos o valor da String armazenada (atribuda) na


varivel nome na linha anterior:

Alm do
mtodo next( ), que
armazena uma entrada String,
podemos tambm capturar outros tipos
de dados com outros mtodos da
classe Scanner:
MTODO

FUNO

next( )

Captura uma entrada no formato


String e a retorna para a classe

nextInt( )

Captura uma entrada no formato


intt e a retorna para a classe

nextByte( )

Captura uma entrada no formato


byte e a retorna para a classe

nextLong( )

Captura uma entrada no formato


long e a retorna para a classe

nextFloat( )

Captura uma entrada no formato


floatt e a retorna para a classe

nextDouble( )

Captura uma entrada no formato


double e a retorna para a classe

CEC I E R J E X T E N S O E M G O V E R N A N A

97

Java Bsico e Orientao a Objeto

| Arrays

Atividade prtica 5
Implemente e execute no NetBeans uma classe que constri
um array de Strings inicializado com os nomes dos sete dias da
semana. Por exemplo:

String dias[ ] = {Segunda, Tera, Quarta, Quinta, Sexta,


Sbado, Domingo};
Aps isso, na mesma classe, utilize um lao while para imprimir o contedo desse array.
Faa o mesmo com as declaraes do-while e for.

Atividade prtica 6
Desafio

Implemente e execute no NetBeans uma classe que, por meio do Scanner, solicita
10 nmeros inteiros ao usurio. Ento utilize um array para armazenar o valor desses
nmeros, imprima todos eles e por ltimo mostre o nmero de maior valor.

INFORMAES SOBRE FRUM


Entre no frum para discutir suas dvidas! Participe e troque
informaes.
Tambm no perca o chat da semana. O horrio e o dia sero
colocados na pgina do frum.

98

Governana: Gesto, Auditoria e Tecnologia da Informao

4
AULA

RESUMO

Reveja os principais conceitos estudados nesta aula:


Muitas vezes queremos criar estruturas semelhantes numa quantidade
muito grande, por exemplo, cem variveis do tipo inteiro. Isso daria muito
trabalho se fizssemos linha a linha.
Para resolver esse tipo de problema, as linguagens de programao sabem
trabalhar com estruturas matriciais, que no caso do Java recebem o nome
de arrays.
Os arrays tm a capacidade de armazenar mltiplas estruturas de dados,
com a limitao de serem do mesmo tipo e de seu tamanho no poder
ser modificado, ou seja, s armazenam uma quantidade predefinida de
elementos.
A declarao de um array em Java feita simplesmente utilizando um par
de colchetes [ ] aps o tipo ou o aps o nome da varivel que se quer
que seja um array.
int [ ] idades ou int idades [ ];

Um array pode ser declarado e inicializado na mesma linha, quando


o compilador assume que o tamanho do array o da quantidade de
elementos inicializados:
double

[ ]notas

{8.0, 9.5, 6.7, 8.4, 4.0};

Para acessar ou inicializar individualmente um array, utilizamos o ndice


atribudo posio daquele elemento do array; em Java os arrays iniciam
sua indexao em zero, ou seja, para um array de tamanho N, temos os
ndices de 0 at N 1. Assim, para inicializar e imprimir o elemento 0 de
um array, o primeiro elemento, escrevemos da seguinte forma:
ages[0] = 10;

/inicializao com o valor 10

System.out.println(ages[0]); //imprimir o elemento de ndice 0

CEC I E R J E X T E N S O E M G O V E R N A N A

99

Java Bsico e Orientao a Objeto

| Arrays

Para descobrir o tamanho de um array desconhecido utilizamos o atributo


lenght:
nomeDoArray.lenght

Um array pode ser uma estrutura multidimensional, bastando para isso


unicamente acrescentar um par de colchetes aps o par inicial para
cada dimenso a mais que quisermos criar. Por exemplo, para um array
bidimensional, para armazenar uma matriz numrica com 64 linhas e 64
colunas, fazemos da seguinte forma:
int [ ] [ ]

array2d = new int [64] [64];

Informao sobre a prxima aula


Na prxima aula, voc comear o mergulho no fantstico mundo do Java
e orientao a objeto. Voc vai comear a ver por que esse paradigma de
programao dominou o mundo e serve como base para todas as novas
linguagens que surgem no mercado. At l...

100 Governana: Gesto, Auditoria e Tecnologia da Informao

AULA

Orientao a Objeto I

Meta da aula

objetivos

Apresentar os principais conceitos de


Orientao a Objeto em Java.

Aps o estudo do contedo desta aula, esperamos que voc seja capaz de:
1

reconhecer o que Programao Orientada a


Objeto;

diferenciar classes e objetos;

explicar o que so atributos e como manipul-los;

explicar o que so mtodos e como manipul-los;

reconhecer como fazer converses de tipos de


dados em Java;

reconhecer e implementar o conceito de


encapsulamento;

criar e utilizar suas prprias classes.

Pr-requisitos
Para o correto e completo aprendizado dessa aula, precisamos
que voc tenha um computador com o Windows XP ou Windows
Vista instalado com pelo menos 512MB de memria RAM; tenha
instalado e configurado o Java Development Kit (JDK) conforme
as instrues do Apndice A; tenha instalado o Ambiente de
Desenvolvimento Integrado (IDE) NetBeans conforme as instrues do Apndice B; tenha entendido bem as aulas estudadas
at agora e realizado com aproveitamento todas as atividades, j
que entraremos numa nova fase do aprendizado; esteja animado
e motivado para iniciar o aprendizado desta fabulosa linguagem
de programao que est dominando os mercados de desenvolvimento, programao e tecnologia na atualidade.

Java Bsico e Orientao a Objeto

INTRODUO

| Orientao a Objeto I

A PROGRAMAO ORIENTADA A OBJETO


A Programao Orientada a Objeto (POO) tem como pilar terico o conceito
de objeto, ou seja, um sistema orientado a objeto um conjunto de objetos
que representam os seres e coisas do mundo real, interagindo computacionalmente com as mesmas caractersticas e comportamentos reais.
estrutura computacional que define o modelo de um objeto do mundo real
damos o nome de classe, e a partir dela cpias so construdas para serem
utilizadas para cada objeto real que tenho no meu sistema.
As caractersticas dos objetos do mundo real so chamadas de atributos
no mundo computacional, enquanto a seus comportamentos chamamos
mtodos.

Classes so estruturas que definem as caractersticas e comportamentos dos


seres ou coisas do mundo real; quando
iimplementados em Java nas classes, essas
caractersticas passam a se chamar
atributos, e os comportamentos
se transformam nos nossos
mtodos.

Objetos so as
instncias das minhas classes, os seres
que existem no meu mundo real quando so inseridos no mundo computacional.

102 Governana: Gesto, Auditoria e Tecnologia da Informao

5
AULA

Atributos so
as caractersticas inerentes ao
meu ser ou coisa do mundo real quando so
definidas no mundo computacional.

Mtodos so os
comportamentos ou funes de
um objeto do mundo real na forma como ele
tratado no mundo computacional.

Por exemplo, um objeto carro no mundo real tem as propriedades


cor, ano, nmero de portas e tipo de combustvel, entre outras. Alm
disso, tem os comportamentos acelerar, frear, virar esquerda e outros.
Assim, quando modelamos esse carro computacionalmente para um jogo
de corridas, por exemplo, definimos uma classe carro cujas propriedades
so transformadas nos atributos cor, ano, nmero de portas, tipo de
combustvel e seus comportamentos so transformados no cdigo do
programa nos mtodos acelerar, frear, virar esquerda e outros.
Como podemos ver, a filosofia da Programao Orientada a Objeto
simplificar o modelo e a implementao do ponto de vista da representao, de tal forma que voc programador no precise ficar decifrando
cdigos e nmeros do modelo, mas apenas escreva naturalmente tudo
que est representado no seu modelo de negcio do mundo real.

CEC I E R J E X T E N S O E M G O V E R N A N A

103

Java Bsico e Orientao a Objeto

| Orientao a Objeto I

Se voc est modelando um software para um sistema escolar,


provavelmente ter uma classe professor, uma classe aluno, uma classe
departamento, cada uma com caractersticas e comportamentos de
acordo com o objeto do mundo real. Se for um sistema para uma veterinria, voc provavelmente ter uma classe animal. Se for um sistema
de seguros para carro, ter uma classe carro. Se for um sistema bancrio, uma classe cliente, uma classe conta-corrente. Assim, percebemos
que quem define o sistema o prprio negcio; cabe ao analista ou ao
programador entender o negcio.

CLASSES E OBJETOS
Uma das primeiras confuses que quem est comeando a estudar
orientao a objeto faz confundir os conceitos de classes e objetos. Vamos
ver mais um pouco desses conceitos para no deixarmos dvidas.
Classe representa o modelo do que queremos utilizar no nosso
sistema; seria como um gabarito, um prottipo, a planta de uma casa
ao realizarmos uma construo, a receita de um bolo.
Veja o exemplo da tabela a seguir, na qual temos as definies de
uma classe que representa o carro do mundo real; ao lado, os objetos
carros que iremos implementar no nosso sistema:
CLASSE CARRO

Atributos
de objeto

OBJETO CARRO A

OBJETO CARRO B

Marca

Ford

Mitsubishi

Modelo

Fiesta

L-200

Cor

branco

azul royal

Combustvel

gasolina

diesel

ligar
Mtodos

acelerar
frear

Assim, durante a execuo do sistema, a cada carro que cadastramos uma cpia nova da classe carro criada, e damos a ela caractersticas
que iro diferenci-la dos demais carros, ou seja, criamos a cada vez um
novo objeto do tipo de carro.

104 Governana: Gesto, Auditoria e Tecnologia da Informao

Ah! Ento quer dizer que classe um tipo? Isso mesmo.

AULA

O principal benefcio da utilizao da programao por meio de


classes a reutilizao do cdigo, pois a cada objeto criado voc no
precisa criar sua estrutura novamente. E isso s o comeo, voc ver
muito mais quando estudar outros conceitos como herana, polimorfismo etc.
Como voc pde perceber na tabela anterior, na coluna abaixo de
carro escrevemos Atributos de objeto, que o mais comum, pois o valor
do contedo que ser colocado referente quele objeto. Por exemplo,
o Carro a no atributo Marca tem o contedo Ford, enquanto o Carro
b tem o contedo Mitsubishi. Os atributos esto associados ao objeto;
sua definio est feita na classe.
Porm, algumas vezes podemos querer um atributo que seja da
classe, ou seja, o mesmo para todos os objetos, podendo ser manipulados dentro da prpria classe. Imagine um contador de carros numa loja,
se cada objeto Carro tiver um atributo contador eu nunca conseguirei
saber quantos carros eu tenho na minha loja. Nesse caso, em que criamos
um atributo global, temos o que chamamos de atributo da classe, e em
memria esse valor fica guardado no espao reservado para a classe, e
no para o objeto.
A partir de um modelo de uma classe, para criar cada objeto,
utilizamos o operador new. Por exemplo, para criar uma instncia do
Carro a a partir da classe Carro, utilizamos o seguinte cdigo:
Carro a = new Carro( );

O operador new reserva (aloca) a memria para o objeto conforme


a estrutura de sua classe e retorna uma referncia para essa rea que foi
alocada. O cdigo que vem aps o operador new o que chamamos de
construtor da classe e tem o mesmo nome da classe seguido de ( ) (abre
e fecha parnteses); dentro deles podem vir parmetros, dependendo da
classe a ser utilizada e de sua definio.

MTODOS
Em todos os exemplos de programas que fizemos at agora, nossas
classes possuam apenas um mtodo, o main( ) lembra? Mas em Java
podemos criar quantos mtodos quisermos e cham-los dentro da classe
ou a partir de outra classe.
CEC I E R J E X T E N S O E M G O V E R N A N A

105

Java Bsico e Orientao a Objeto

| Orientao a Objeto I

Um mtodo
um trecho de cdigo que
realiza uma funo especfica e pode ser
chamado por qualquer outro mtodo ou classe
para realizar a referida funo num determinado contexto.

Os mtodos possuem as seguintes caractersticas:


podem ou no retornar um valor;
podem ou no aceitar argumentos;
aps encerrar sua execuo, o mtodo retorna o fluxo de controle
do programa para quem o chamou.
Alm de mtodos comuns, temos tambm os chamados mtodos
estticos, que so aqueles que podem ser invocados sem que um objeto
tenha sido instanciado (sem utilizar o new). Mtodos estticos pertencem
classe e no ao objeto. o equivalente dos atributos de classe. Num
exemplo mais adiante, voc ver a aplicao de um mtodo esttico.

CONVERSO DE TIPO
Casting ou typecasting o processo no qual fazemos a converso
de tipos de um atributo ou dado para outro tipo de dado.
Em Java, uma vez que definimos o tipo de um atributo, no podemos associar a esse atributo um tipo diferente. Caso seja necessrio fazer
isso, temos de fazer uma operao de casting.
O tipo mais simples de casting o realizado entre tipos primitivos,
muito comum entre tipos numricos. O nico tipo primitivo que no
aceita casting o boolean.
Considere que seja necessrio armazenar um valor do tipo int em
um atributo do tipo double; nesse caso, o casting feito automaticamente,
o chamado casting implcito, pois estamos colocando um atributo
de tamanho menor dentro de um de tamanho maior, pois o double

106 Governana: Gesto, Auditoria e Tecnologia da Informao

maior que o int. Essa regra geral e serve para todos os tipos primitivos

AULA

( exceo do boolean, como j escrevemos):


int numInteiro = 10;
double numDouble = numInteiro;

//casting implcito

Quando executamos a operao inversa, ou seja, quando convertemos um atributo cujo tipo possui um tamanho maior para um de
tamanho menor, necessariamente devemos fazer o casting explcito,
colocando o tipo a ser convertido entre parnteses na frente do valor a
converter:
double numDouble2 = 45.32;
int numInt2 = (int)numDouble2;

Agora que estamos falando de tipos, classes e objetos, veja alguns


conceitos complementares.
Numa das aulas anteriores, vimos operadores que faziam comparao de valores, lembra? Assim, conseguamos saber se um atributo era
igual ao outro, se era maior, se era menor ou igual etc. Um pequeno mas
importante detalhe que a maioria desses operadores s funciona com
tipos primitivos. As excees so os operadores de igualdade (==) e de
diferena (!=). Mas apesar de poderem ser usados em objetos, quando
utilizados com esses tipos eles no verificam se os objetos possuem o
mesmo contedo (o que era de se supor, pois isso que ocorre com tipos
primitivos), mas sim se possuem a mesma referncia em memria. Para
comparar o contedo de dois objetos, utilizamos o mtodo equals( ),
conforme ser exemplificado a seguir.
Vamos analisar as classes:

CEC I E R J E X T E N S O E M G O V E R N A N A

107

Java Bsico e Orientao a Objeto

| Orientao a Objeto I

Ao executar essa classe, a classe TesteIgualdade, temos a seguinte


sada:

Nas linhas 4 e 5 declaramos dois atributos, frase1 e frase2, do tipo


String. Observe que String no um tipo primitivo, mas uma classe,
pois comea com letra maiscula.

No isso que o define como classe, mas lembre-se de que a boa


prtica de programao, vista no Code Conventions, nas aulas
iniciais, prev que classes devem comear com letra maiscula;
assim podemos supor que String uma classe.

No construtor dos atributos do tipo String frase1 e frase2 (ou


seja, aps o new), passamos como argumento a mesma frase, ou seja, o
atributo tem o mesmo valor. Mas, ao comparar a igualdade de frase1 e
frase2, o que feito na linha 10, o resultado retorna false! Isso ocorre
porque, apesar de possurem o mesmo contedo, frase1 e frase2 possuem
referncias diferentes, ou seja, diferentes espaos alocados em memria;
isso ocorre porque foi construdo um objeto para cada String, um new
para cada atributo frase.

Atividade prtica 1
2
3
Abra a sua IDE NetBeans e implemente a classe TesteIgualdade, que 1
est apresentada anteriormente; depois, teste o exemplo e veja se voc
conseguiu visualizar melhor o exemplo explicado, compreendendo os conceitos associados.
Caso ainda tenha dvidas sobre esses conceitos, interaja com seu tutor ou coloque suas
dvidas no frum.

108 Governana: Gesto, Auditoria e Tecnologia da Informao

AULA

Veja um outro exemplo:

Ao executar a classe TesteIgualdade2 temos a seguinte sada:

A classe muito semelhante anterior, mas em vez de utilizar um


construtor na frase4 na linha 5, ns atribumos frase3 a ela; com isso,
a mesma referncia de frase3 dada frase4. Assim, podemos perceber
que, mesmo sem escrever uma frase como contedo de frase4, como ela
aponta para a mesma referncia de frase3, ao mandarmos imprimir frase4
ela tem a mesma sada de frase3 (o que fazemos nas linhas 8 e 9); quando
perguntamos se elas possuem a mesma referncia, o resultado true, ou
seja, qualquer alterao que eu faa no contedo de frase3 vai refletir em
frase4 e vice-versa, pois as duas possuem a mesma referncia.

Atividade prtica 2
2
3
Abra a sua IDE NetBeans e implemente a classe TesteIgualdade2 j 1
apresentada; depois, teste o exemplo e veja se voc conseguiu visualizar
melhor o exemplo explicado, compreendendo os conceitos associados.
Caso ainda tenha dvidas sobre esses conceitos, interaja com seu tutor ou coloque suas
dvidas no frum.

CEC I E R J E X T E N S O E M G O V E R N A N A

109

Java Bsico e Orientao a Objeto

| Orientao a Objeto I

Vamos ver um ltimo exemplo, para consolidar o conceito de


referncia e de contedo de objetos:

Ao executar a classe TesteIgualdade3 temos a seguinte sada:

Como explicamos, a forma de compararmos o contedo de um


atributo do tipo objeto no com o operador de igualdade (==), o que
se faz normalmente com tipos primitivos, mas com o mtodo equals( )
associado aos dois objetos a serem comparados, como est mostrado
no exemplo.

Atividade prtica 3
2
3
Abra a sua IDE NetBeans e implemente a classe TesteIgualdade3 j 1
mostrada; depois, teste o exemplo e veja se voc conseguiu visualizar
melhor o exemplo explicado, compreendendo os conceitos associados.
Caso ainda tenha dvidas sobre esses conceitos, interaja com seu tutor ou coloque suas
dvidas no frum.

CRIANDO E MANIPULANDO NOSSAS PRPRIAS CLASSES


O que fizemos at agora foi utilizar classes externas j existentes
(como a String) e utilizar mtodos j existentes (como o equals( )). Agora,
voc estudar como criar e utilizar suas prprias classes.
Vamos criar uma classe que modela as informaes de um aluno
do mundo real, inserindo as operaes necessrias para seu registro.

110 Governana: Gesto, Auditoria e Tecnologia da Informao

Como essa classe modela a operao de registro referente a um

AULA

aluno, um bom nome para ela seria RegistraAluno.


Ento vamos comear nossa classe RegistraAluno apenas com
sua definio:

Onde:
public: um modificador de acesso (ser mais bem explicado
futuramente) e define que qualquer classe pode acessar a classe
RegistraAluno;
class: a palavra-chave usada para criao de uma classe;
RegistraAluno: o identificador nico que nomeia a classe.
Vamos agora comear a declarar os atributos. Neste momento,
precisamos pensar quais as informaes de aluno que so importantes
para o meu sistema. Vamos hipoteticamente criar um sistema no qual
queremos armazenar as informaes do aluno relativas a nome, endereo, idade, nota de matemtica, nota de portugus e nota de geografia.
Teremos ento a seguinte definio para nossa classe:

Vale ressaltar que, quando queremos armazenar alguma informao textual sobre um objeto, o tipo mais ideal do atributo a classe String,
como fizemos com o atributo nome e endereo. Alm disso, escolhemos
o tipo primitivo int para armazenar a idade, j que um valor inteiro, e
o tipo primitivo double para armazenar as notas, j que estas so todas
com preciso de duas casas direita da vrgula.

CEC I E R J E X T E N S O E M G O V E R N A N A

111

Java Bsico e Orientao a Objeto

| Orientao a Objeto I

Algumas observaes de boas prticas:


As declaraes dos atributos so feitas sempre na primeira parte
do cdigo da classe.
Declare um atributo por linha, mesmo que ele seja do mesmo
tipo.
Declare atributo como private; assim, somente a prpria classe
pode manipul-lo; esse o conceito de encapsulamento, muito
importante na Orientao a Objeto.
Alm dos atributos do objeto, que ser individual para cada
aluno, podemos declarar tambm um atributo que ser compartilhado
por todos os objetos daquele tipo. Na verdade, o que criamos o que
chamamos de atributo de classe. Isso feito por meio da palavra static
antes da definio do atributo. No nosso exemplo, um bom atributo de
classe pode ser aquele que vai contar a quantidade de alunos, o contadorEstudante:

As classes so compostas por atributos e mtodos. O primeiro j


resolvemos; vamos agora implementar os comportamentos que desejamos
que sejam executados pelo nosso objeto, os mtodos.
Vamos completar o conceito de encapsulamento. Ns comeamos
explicando que devemos declarar nossos atributos dos objetos como private, pois assim os protegemos e somente a prpria classe pode manipullos. Mas ento como faremos para modific-los? Por meio de mtodos
pblicos (esses, sim, todos que quiserem podem acessar), chamados
mtodos acessores. O mtodo acessor tem o modificador public e recebe
o nome get seguido do nome do atributo que ser acessado atravs dele.
Ele sempre retorna um valor do mesmo tipo do atributo acessado.
No nosso caso, teremos mtodos assessores para nome, endereo
e idade. Alm disso, implementaremos um mtodo get para recuperar
no cada nota, mas sim a mdia delas, o mtodo getMedia( ). Quando
112 Governana: Gesto, Auditoria e Tecnologia da Informao

definimos um mtodo que recupera algum valor por meio de alguma ope-

AULA

rao com os atributos da classe, esse mtodo tambm deve ter seu nome
iniciado com get. Assim, faremos o mesmo para o mtodo que retorna a
quantidade de estudantes inscritos, o mtodo getQuantidadeAlunos( ).
Veja todos esses mtodos implementados no cdigo da classe a seguir:

Est tudo bem. Mas, se voc prestar ateno, perceber que


temos um pequeno mas importante detalhe: j conseguimos recuperar
as informaes; mas onde elas foram definidas?
Em lugar algum; na verdade, vamos ver agora esse conceito: para
recuperar algum valor de alguma varivel, ele precisa ser definido antes.
Entretanto, nossas variveis no foram inicializadas, at porque isso no
faria sentido, pois um aluno pode ter qualquer valor para idade, nome
ou endereo; sendo assim, temos mtodos de definio, que definem
valores para variveis, os mtodos set.

CEC I E R J E X T E N S O E M G O V E R N A N A

113

Java Bsico e Orientao a Objeto

| Orientao a Objeto I

E assim completamos nosso conceito de encapsulamento, em que


temos classes dos objetos de negcio com atributos privados (acessveis
somente pela prpria classe) e mtodos pblicos (acessveis por quaisquer
classes), get para recuperar os valores dos atributos e mtodos pblicos
set para defini-los. No nosso caso, temos mtodos set para os atributos
nome, endereo, idade e para cada uma das notas, como voc pode ver
neste cdigo:

114 Governana: Gesto, Auditoria e Tecnologia da Informao

5
AULA

Por fim, vamos implementar uma classe (classe AppRegistraAluno),


que representa uma aplicao que utiliza nosso objeto aluno do mundo
real, representado computacionalmente pela classe RegistraAluno:

Como foi pedido na aplicao, imprimimos o nome da Ana pelo


mtodo getNome() aplicado ao objeto ana, alm do contador por meio
do mtodo getQuantidadeAlunos( ).

CEC I E R J E X T E N S O E M G O V E R N A N A

115

Java Bsico e Orientao a Objeto

| Orientao a Objeto I

Atividade prtica 4
2
3
4
5
6
7
Abra a sua IDE NetBeans e implemente as classes 1
RegistraAluno e AppRegistraAluno que j foram
explicadas. Depois teste os exemplos.
Caso ainda tenha dvidas sobre esses conceitos, interaja com seu tutor ou coloque suas
dvidas no frum.

INFORMAES SOBRE FRUM


O frum est aberto para discutirmos as dvidas; participe,
troque informaes.
Tambm no perca o chat da semana. O horrio e o dia sero
colocados na pgina do frum.

RESUMO

Vamos rever os principais conceitos abordados nesta aula.


A Programao Orientada a Objeto (POO) tem como pilar terico o
conceito de objeto.
Um Sistema Orientado a Objeto um conjunto de objetos que representam
os seres e coisas do mundo real, interagindo computacionalmente com as
mesmas caractersticas e comportamentos reais.
Classes so estruturas que definem as caractersticas e comportamentos dos
seres ou coisas do mundo real; quando implementados em Java nas classes,
essas caractersticas passam a se chamar atributos e os comportamentos
se transformam nos nossos mtodos.
Objetos so as instncias das classes, os seres que existem no meu mundo
real quando so inseridos no mundo computacional.
Atributos so as caractersticas inerentes ao meu ser ou coisa do mundo
real quando so definidas no mundo computacional.
Mtodos so os comportamentos ou funes de um objeto do mundo real
na forma como ele tratado no mundo computacional.

116 Governana: Gesto, Auditoria e Tecnologia da Informao

5
AULA

Um mtodo um trecho de cdigo que realiza uma funo especfica e


pode ser chamado por qualquer outro mtodo ou classe para realizar a
referida funo num determinado contexto.
Casting ou typecasting o processo no qual fazemos a converso de
tipos de um atributo ou dado para outro tipo de dado. O casting pode
ser implcito ou explcito.
Encapsulamento o conceito no qual protegemos os atributos de nossas
classes atravs do modificador de acesso private; com isso, somente a
prpria classe pode acess-lo.
Classes externas podem interagir com a classe protegida (o que desejvel)
por meio de mtodos acessores, os mtodos get, que so public e capturam
o contedo de um atributo.
Alm disso, para definir os valores desses atributos, utilizamos mtodos
de definio, os mtodos set, que tambm so public e assim alcanados
por qualquer classe do sistema.

Informao sobre a prxima aula


Na prxima aula, continuaremos a estudar os conceitos de Orientao a
Objeto com base em exemplos prticos que ajudaro a entender melhor esse
paradigma que domina a programao de sistemas modernos.

CEC I E R J E X T E N S O E M G O V E R N A N A

117

AULA

Orientao a Objeto II

Meta da aula

objetivos

Continuar a apresentar os conceitos de


Orientao a Objeto em Java.

Aps o estudo do contedo desta aula,


esperamos que voc seja capaz de:
1

criar e reutilizar suas prprias classes;

entender e utilizar sobrecarga de mtodos;

organizar projeto de classes por meio de


pacotes;

reconhecer os modificadores de acesso utilizados em Java;

reconhecer e aplicar os conceitos de Herana;

reconhecer e aplicar os conceitos de Polimorfismo;

reconhecer e aplicar os conceitos de Classes


Abstratas;

reconhecer e aplicar os conceitos de Interfaces.

Pr-requisitos
Para o correto e completo aprendizado desta aula, precisamos
que voc: tenha um computador com Windows XP ou Windows
Vista instalado com pelo menos 512MB de memria RAM; tenha
instalado e configurado o Java Development Kit (JDK) conforme
as instrues do Apndice A; tenha instalado o Ambiente de
Desenvolvimento Integrado (IDE) NetBeans conforme as instrues do Apndice B; tenha entendido bem as aulas estudadas
at agora e realizado com aproveitamento todas as atividades, j
que entraremos numa nova fase do aprendizado; esteja animado
e motivado para iniciar o aprendizado dessa fabulosa linguagem
de programao que est dominando os mercados de desenvolvimento, programao e tecnologia na atualidade.

Java Bsico e Orientao a Objeto

| Orientao a Objeto II

UTILIZANDO O THIS NAS SUAS CLASSES


A palavra reservada this utilizada para resolver ambiguidades
que haja entre os elementos de uma classe em relao ao seu nome, no
os confundindo com outros elementos que tenham vindo de outra classe que tenham o mesmo nome. Normalmente, utilizado para acessar
atributos ou mtodos da classe ativa.
Vamos analisar no trecho de classe a seguir o mtodo setIdade:
...

...
No cdigo anterior, temos um atributo int idade pertencente classe corrente e no parmetro do mtodo setIdade(int idade), outro atributo
idade, sendo este ltimo idade, o que ser passado como parmetro por
outro objeto que utilizar o mtodo da nossa classe. Assim, na prxima
linha, onde temos idade = idade, est ocorrendo uma ambiguidade, que
idade de quem? Para resolver esse tipo de dvida, o elemento pertencente classe corrente recebe o prefixo this seguido de ponto antes do
atributo. Agora o cdigo fica da seguinte forma:
...

...

O this resolve problemas


de ambiguidade dentro de uma classe,
devendo ser utilizado junto do atributo
pertencente classe corrente.

120 Governana: Gesto, Auditoria e Tecnologia da Informao

AULA

SOBRECARGA DE MTODOS
Algumas vezes, precisamos que mtodos, por alguma questo de
modelagem, tenham o mesmo nome, mas implementem comportamentos diferentes de acordo com o argumento que passado. Quando isso
acontece, d-se o que chamamos de sobrecarga de mtodos.

Mtodos com o
mesmo nome, mas com comportamentos diferentes de acordo com os argumentos
passados, o conceito chamado de sobrecarga de mtodos. A sobrecarga pode ser de quantidade de argumentos
(quantidades diferentes para mtodos diferentes) ou de
tipos de dados diferentes ou retorno de valores
diferentes.

Relembre uma classe da aula anterior, a classe RegistraAluno.


Nela, vamos criar dois mtodos sobrecarregados por quantidade de
parmetros. Nosso primeiro mtodo imprimir( ) no receber parmetro
algum e imprimir nome, endereo e idade do aluno:

No outro mtodo sobrecarregado, ele recebe como parmetro


trs argumentos double representando as trs notas do aluno. A mquina virtual sabe interpretar em tempo de execuo que esse o mtodo
correto que foi chamado, se for o caso, imprimindo ento as trs notas
alm do nome do aluno:

CEC I E R J E X T E N S O E M G O V E R N A N A

121

Java Bsico e Orientao a Objeto

| Orientao a Objeto II

E assim, podemos utilizar esses mtodos por meio da classe


principal AppRegistraAluno (programa, aplicao), que utiliza nossa
classe auxiliar RegistraAluno, nossa classe que representa nosso objeto
de negcio:

Os dois mtodos imprimir esto implementados em RegistraAluno, mas ao fazer a chamada para ele em AppRegistraAluno para o
objeto ana, a JVM sabe que deve executar as aes do mtodo imprimir
sem parmetros, e a sada ser:

122 Governana: Gesto, Auditoria e Tecnologia da Informao

Vamos agora modificar AppRegistraAluno para imprimir tambm

AULA

as notas. Isso ser feito simplesmente passando as notas como argumento


do mtodo imprimir:

E a sada ser, conforme previsto, com a chamada do mtodo


imprimir mostrando as notas na tela, em vez do endereo e idade do
aluno:

CEC I E R J E X T E N S O E M G O V E R N A N A

123

Java Bsico e Orientao a Objeto

| Orientao a Objeto II

Atividade prtica 1
2
Abra sua IDE NetBeans e implemente a classe RegistraAluno com os dois 1
mtodos sobrecarregados imprimir, como foi mostrado.
Aps isso, crie duas classes AppRegistraAluno e AppRegistraAluno2. Na primeira
classe, instancie um objeto que representa um aluno com seus respectivos dados e
imprima essas informaes utilizando o mtodo imprimir sem parmetros, que imprime
apenas as informaes pessoais do aluno. Na segunda classe, instancie um outro aluno
com seus dados, mas dessa vez utilize o mtodo imprimir que recebe como parmetros
as notas do aluno, imprimindo-as na sada do sistema junto com o nome do aluno.

PACOTES
Para organizar as classes e recursos de um projeto com o objetivo
de facilitar a anlise, o projeto e a manuteno do sistema, a Orientao
a Objeto criou uma abstrao lgica chamada pacote, cuja representao
fsica feita pelos diretrios do sistema. Assim, o gerenciamento e a
manuteno do projeto ficam muito mais organizados e facilitados, com
estrutura padronizada, evitando conflito de nomes e origens.
Para usar classes externas ao pacote que est sendo utilizado,
devemos escrever a palavra reservada import seguida do nome do pacote
mais . e os subpacotes separados tambm por ., terminando com
a classe a ser utilizada:

import

<pacote>.<subpacote>.<classe>;

Por exemplo, para importar a classe Color de java.awt (java o


pacote e awt o subpacote), devemos escrever a seguinte linha na nossa
classe:

import java.awt.Color;

As classes do pacote java.lang (que estudaremos futuramente


com mais detalhes) so importadas pela JVM automaticamente,
sem necessidade do import; por isso, no precisamos importar a classe String quando a utilizamos, pois ela pertence ao
pacote java.lang.

124 Governana: Gesto, Auditoria e Tecnologia da Informao

Para criar seus prprios pacotes, voc deve escrever na classe a

AULA

palavra reservada package seguida da hierarquia de pacotes, ou seja, o


pacote seguido dos subpacotes subsequentes separados por . :

package

<pacote>.<subpacote>;

Quando um pacote criado pela IDE e dentro desse pacote voc


cria uma classe, o comando package com o empacotamento
correto inserido automaticamente no cdigo. Essa a forma
mais simples e correta de utilizar o conceito de pacotes.

MODIFICADORES DE ACESSO
Algumas vezes, interessante implementar restries quanto ao
acesso aos elementos da classe. Esses nveis de restries so implementados por meio do conceito de modificadores de acesso.
Existem quatro modificadores de acesso em Java: public, private, protected e default; este ltimo acionado quando no se escreve
nenhum dos outros modificadores de acesso antes das definies de
classes, atributos ou mtodos.
Quando no usado nenhum modificador de acesso (modificador default), os elementos da classe so acessveis somente pelos
mtodos internos da classe e das suas subclasses.
Quando utilizado o modificador de acesso public, os elementos
da classe so acessveis tanto pela prpria classe quanto por
qualquer classe que tente acess-los.
Quando utilizado o modificador de acesso protected, os elementos da classe so acessveis somente por classes no mesmo
pacote da classe dos elementos.
Quando utilizado o modificador de acesso private, os elementos da classe so acessveis somente pela prpria classe que os
definiu.

CEC I E R J E X T E N S O E M G O V E R N A N A

125

Java Bsico e Orientao a Objeto

| Orientao a Objeto II

HERANA
Herana uma tcnica da Orientao a Objeto cujo objetivo
criar um modelo com objetos do mundo real. Aqueles objetos que tem
caractersticas mais genricas so construdos de forma que os que so
mais especficos possam receber os atributos e mtodos dos genricos sem
a necessidade de reescrita de cdigo, aumentando o reso e facilitando
a manuteno.
A herana em Java definida pela palavra reservada extends utilizada pela classe que quer herdar as caractersticas. A essa classe damos
o nome de subclasse. A classe que est sendo utilizada na herana recebe
o nome de superclasse.
Veja o exemplo da classe Pessoa e depois da classe Aluno, que
herda de Pessoa:

Na classe anterior, definimos dois atributos: nome e endereco, e


os mtodos get, para acessar, e set, para definir cada um dos atributos.
Veja a classe Aluno:

126 Governana: Gesto, Auditoria e Tecnologia da Informao

Na classe Aluno, o fato de termos o cdigo extends Pessoa faz

AULA

com que ela herde todos os atributos e mtodos de Pessoa; afinal, Aluno
um tipo de Pessoa.
Vamos explicar como funciona a lgica de execuo do mecanismo
de herana por intermdio da classe a seguir:

Quando a classe anterior instancia Aluno, o construtor de Pessoa


invocado e os atributos deste so criados para poderem ser utilizados
por Aluno, que herda de Pessoa. Veja que utilizamos os mtodos setNome( ) e getNome( ), que no so de Aluno mas de Pessoa; com isso, no
precisamos criar esses mtodos em Aluno, pois estamos reutilizando-os
atravs de Pessoa.

Atividade prtica 2
2
3
4
5
Abra sua IDE NetBeans e crie dois pacotes, um chamado 1
cedjava.app e outro chamado cedjava.objetos.
No pacote cedjava.objetos, implemente a classe Pessoa e depois a classe Aluno
herdando os dados de Pessoa.
Por fim, no pacote cedjava.app implemente a classe TesteAluno para testar se a herana
funcionou corretamente.

Caso voc no consiga fazer ou tenha alguma dvida em qualquer uma das atividades, coloque sua dvida ou seu problema
no Frum, insira a dvida alm do cdigo que est tentando
implementar e, se estiver dando algum erro, faa uma cpia
da tela numa figura e coloque no Frum. Com certeza algum
colega ou o tutor ir ajudar a esclarecer o problema.

CEC I E R J E X T E N S O E M G O V E R N A N A

127

Java Bsico e Orientao a Objeto

| Orientao a Objeto II

Uma observao importante: quanto mais voc praticar ou


modificar os exemplos que estamos propondo nas aulas, inclusive tentando criar seus prprios exemplos, mais intimidade e
facilidade voc ter com a linguagem e principalmente com
o manuseio das ferramentas utilizadas para programar, com
foco principal na IDE NetBeans. Por isso, no deixe de praticar
sempre que puder.

POLIMORFISMO
Vamos voltar ao exemplo anterior, no qual temos uma superclasse Pessoa e uma subclasse Aluno herdando de Pessoa. Suponha que
tenhamos tambm uma nova subclasse herdando de Pessoa, a classe
Empregado.
Suponha agora que as trs classes tenham um mtodo getNome( );
isso pode ocorrer, visto que eu posso querer que em um determinado momento, no meu sistema, o mtodo a ser chamado seja o getNome( ) de alguma
das subclasses, pois eles podem executar comportamentos diferentes. Isso
o que chamamos de sobrescrita de mtodos. Na execuo, a Mquina
Virtual Java sempre procura pelos mtodos na classe original (subclasse).
Caso no os encontre, ela procura na superclasse pelo mtodo com aquele
nome referido.
Veja as classes Pessoa, Aluno e Empregado utilizando o conceito
de sobrescrita de mtodos:
Classe Pessoa

128 Governana: Gesto, Auditoria e Tecnologia da Informao

AULA

Classe Aluno

Classe Empregado

Nesse caso, para cada objeto que for utilizado ser impresso o
nome do objeto com sua categoria (Pessoa, Aluno ou Empregado), como
voc pode observar nesta classe:

CEC I E R J E X T E N S O E M G O V E R N A N A

129

Java Bsico e Orientao a Objeto

| Orientao a Objeto II

Atividade prtica 3
2
3
4
5
6
Atravs do NetBeans, no pacote cedjava.objetos, modi- 1
fique a classe Pessoa e depois a classe Aluno, alm de
criar a nova classe Empregado, conforme j foi mostrado.
No pacote cedjava.app, implemente a classe TesteAluno2 para testar e entender o
conceito de sobrescrita de mtodos.

Veja agora outro conceito importante modificando um pouco


nossa classe TesteAluno2, que foi utilizada para visualizar a sobrescrita
de nossos objetos. Para isso, iremos modific-la um pouco.
Vamos criar um atributo do tipo Pessoa, mas sem chamar o construtor com new. Em vez disso, vamos atribuir a referncia de Pessoa aos
objetos Aluno e Empregado:

Apesar de o atributo ref ser do tipo Pessoa, ao ser impresso o nome


por meio dos mtodos getNome( ), vimos que a referncia ref do tipo
Pessoa aponta para um objeto do tipo Aluno e depois para um objeto
do tipo Empregado, assumindo assim o comportamento destes. Isso o
que chamamos de polimorfismo.

130 Governana: Gesto, Auditoria e Tecnologia da Informao

6
AULA

A capacidade de uma
referncia mudar de comportamento
de acordo com o objeto a que se refere
chamada de polimorfismo.

CLASSES ABSTRATAS
Vamos supor que estamos modelando uma hierarquia de um sistema para implementao de animais cuja linha de herana tenha no seu
topo a classe mais genrica (a superclasse) SerVivo. Nessa classe, vamos
definir alguns mtodos comuns aos seres vivos, como respirar, dormir e
andar. Mas temos de tomar cuidado ao generalizar todos os mtodos de
seres vivos, pois existem comportamentos que so executados de forma
diferente conforme a espcie. Alm disso, SerVivo nunca ser objeto, j
que um tipo de ser vivo deve estar associado a uma espcie; por isso,
devemos tomar algum cuidado para que um programador desatento no
instancie SerVivo. A forma de implementar esses conceitos com esses
cuidados por meio do que chamamos Classes Abstratas.
Uma classe abstrata uma classe que no pode ser instanciada
como objeto, mas serve como base para criao de outras classes que
iro herdar dela. Geralmente, a classe abstrata est no topo de uma
hierarquia de classes como sua superclasse.
Para definir que uma classe abstrata, devemos colocar a palavra
reservada abstract antes de class na sua definio. Alm disso, vimos que
alguns mtodos das classes abstratas no devem ser implementados, pois
podem ter comportamentos diferentes de acordo com as subclasses. Esses
so os mtodos abstratos, e devem vir igualmente com a palavra abstract
aps o modificador de acesso, e so de implementao obrigatria por
quem herdar da classe abstrata.

CEC I E R J E X T E N S O E M G O V E R N A N A

131

Java Bsico e Orientao a Objeto

| Orientao a Objeto II

Veja este o exemplo, no qual criamos a superclasse abstrata


SerVivo e duas subclasses concretas a partir dessa classe: Cachorro e
Humano:

Classe SerVivo

Classe Humano

Classe Cachorro

Como explicamos, temos a superclasse SerVivo e duas subclasses que herdam desta, as classes Humano e Cachorro. Porm, a classe
SerVivo abstrata; isso faz com que ela no possa ser instanciada por
uma aplicao. Alm disso, ela possui um mtodo abstrato, sem implementao, somente sua assinatura, isso faz com que as duas classes que
herdam de SerVivo sejam obrigadas a implementar o mtodo abstrato
de SerVivo, conforme est feito nas classes anteriores.

INTERFACES
Interfaces so classes especiais; por uma deciso de arquitetura
e modelagem, foi definido que tais classes teriam somente mtodos
abstratos.
Interfaces definem um padro e o caminho pblico para especificao do comportamento de classes. Permitem que classes, indepen-

132 Governana: Gesto, Auditoria e Tecnologia da Informao

dentemente de sua localizao na estrutura hierrquica, implementem

AULA

comportamentos comuns.
Interfaces so utilizadas quando queremos obrigar a implementao de mtodos que no tm relacionamento de herana entre as classes
que iro utiliz-los.
A principal diferena entre uma interface e uma classe abstrata
que a classe abstrata pode possuir mtodos implementados (reais) ou
no implementados (abstratos). Na interface, todos os mtodos so
abstratos e pblicos, tanto que, para esta, a palavra-chave abstract ou
public opcional.
Suponha uma classe Linha que contm mtodos que calculam o
tamanho da linha e compara essa linha com outros objetos do tipo Linha,
indicando sua relao de grandeza. Imagine outro objeto MeusNumeros
que compara atributos dessa classe com outros objetos MeusNumeros.
Apesar de diferentes, essas classes implementam mtodos semelhantes
quanto assinatura. Para garantir que esses mtodos sejam implementados e para padronizar sua assinatura, utilizamos interfaces.
A relao entre uma classe e a interface que ela implementa como
a de um contrato que deve ser assinado por quem quer implementar
determinado comportamento. A leitura que se faz a seguinte: A classe
que quiser realizar tal funo deve assinar tal contrato (implementar a
interface) e, consequentemente, implementar seus mtodos abstratos.
Veja os exemplos da classe Linha e da interface Relao que define
os mtodos abstratos a serem implementados.
Na interface definimos apenas as assinaturas dos mtodos que
devem ser implementados por todas as classes que querem executar tal
comportamento. Uma interface deve ter a palavra reservada interface
na sua definio, em vez de class, como voc v abaixo:

CEC I E R J E X T E N S O E M G O V E R N A N A

133

Java Bsico e Orientao a Objeto

| Orientao a Objeto II

Por sua vez, a classe que quer fazer relao de grandeza com
objetos deve assinar um contrato com a interface Relacao (implements
Relacao) e implementar obrigatoriamente todos os seus mtodos, como
est na classe Linha:

Uma observao importante que interface a forma que o Java


tem de criar uma abstrao para implementar herana mltipla, j que
diretamente, por herana via extends, isso no permitido em Java, o
que faz todo sentido, pois dessa forma se criaria um acoplamento muito
grande entre as classes herdadas; com interface, isso amenizado. Resumindo, uma subclasse pode fazer extends com apenas uma classe, mas
pode fazer implements com muitas interfaces.

134 Governana: Gesto, Auditoria e Tecnologia da Informao

6
AULA

INFORMAES SOBRE FRUM


O frum o espao para discutirmos suas dvidas. Participe,
troque informaes.
Tambm no perca o chat da semana. O horrio e o dia sero
colocados na pgina do frum.

RESUMO

Reveja os principais conceitos apresentados nesta aula.


A palavra reservada this deve ser utilizada para resolver problemas de
ambiguidade dentro de uma classe, devendo ser utilizado junto ao atributo
pertencente classe corrente.
Quando precisamos que mtodos, por alguma questo de modelagem,
tenham o mesmo nome mas implementem comportamentos diferentes
de acordo com o argumento que passado, precisamos utilizar o que
chamamos sobrecarga de mtodos.
Mtodos com o mesmo nome, mas com comportamentos diferentes de
acordo com os argumentos passados o conceito chamado sobrecarga
de mtodos. A sobrecarga pode ser de quantidade de argumentos
(quantidades diferentes para mtodos diferentes) ou de tipos de dados
diferentes ou retorno de valores diferentes.
Para organizar as classes e recursos de um projeto com o objetivo de
facilitar a anlise, o projeto e a manuteno do sistema, a Orientao a
Objetos criou uma abstrao lgica chamada pacote, cuja representao
fsica feita atravs dos diretrios do sistema. Assim, o gerenciamento e
a manuteno do projeto ficam muito mais organizados e facilitados com
uma estrutura padronizada, evitando conflito de nomes e origens.
Quando queremos implementar restries nos recursos de nossas classes,
precisamos utilizar os chamados modificadores de acesso. Existem quatro
em Java: public, private, protected e default; o default quando no se
escreve nenhum dos outros modificadores de acesso antes das definies
de classes, atributos ou mtodos.

CEC I E R J E X T E N S O E M G O V E R N A N A

135

Java Bsico e Orientao a Objeto

| Orientao a Objeto II

Herana uma tcnica da Orientao a Objeto cujo objetivo criar


um modelo com objetos do mundo real. Aqueles objetos que tem
caractersticas mais genricas so construdos de forma que os que so
mais especficos possam receber os atributos e mtodos dos genricos sem
a necessidade de reescrita de cdigo, aumentando o reso e facilitando a
manuteno. A herana em Java definida pela palavra reservada extends
utilizada pela classe que quer herdar as caractersticas. A essa classe damos
o nome de subclasse. A classe que est sendo utilizada na herana recebe
o nome de superclasse.

Informao sobre a prxima aula


Na prxima aula, iremos estudar como o tratamento de erros em Java,
atravs de um conceito bem interessante e diferente do que conhecemos
nas linguagens procedurais, as excees. At l...

136 Governana: Gesto, Auditoria e Tecnologia da Informao

AULA

Tratamento de excees em Java

Meta da aula

objetivos

Ensinar a forma de tratamento de erros


em Java, feita por intermdio da classe
Exceptions (excees) e suas subclasses.

Aps o estudo do contedo desta aula,


esperamos que voc seja capaz de:
1

definir o que so excees;

explicar o mecanismo de tratamento de erros


em Java por meio de excees;

empregar tratamento de excees utilizando


estruturas com try, catch e finally.

Pr-requisitos
Para o correto e completo aprendizado desta aula, precisamos
que voc tenha um computador com o Windows XP ou Windows
Vista instalado com pelo menos 512MB de memria RAM; tenha
instalado e configurado o Java Development Kit (JDK) conforme
as instrues do Apndice A; tenha instalado o Ambiente de
Desenvolvimento Integrado (IDE) NetBeans conforme as instrues do Apndice B; tenha compreendido bem todos os conceitos
de Orientao a Objeto aprendidos nas duas ltimas aulas, importantes para continuarmos o aprendizado de Java; esteja animado
e motivado para iniciar o aprendizado dessa fabulosa linguagem
de programao que est dominando os mercados de desenvolvimento, programao e tecnologia na atualidade.

Java Bsico e Orientao a Objeto

| Tratamento de excees em Java

O QUE SO EXCEES?
Excees em Java tm o mesmo sentido semntico da palavra em
portugus, ou seja, uma exceo acontece quando a regra no respeitada, seguida; a regra, nesse caso, o fluxo normal (fluxo principal) do
programa. Portanto, ocorre uma exceo sempre que algo der errado
ou fugir do fluxo esperado na nossa aplicao, por isso o nome exceo
para tratamento de erro.
O tratamento de excees, como tambm chamada essa tcnica
em Java (termo originado de tratamento de erros), bem diferente do
que fazamos quando nossa programao no era Orientada a Objeto.
Antes, o que fazamos para tratar um fluxo fora do normal era tratar o
retorno do mtodo que executava esse fluxo. Isso era feito por meio de
uma marcao booleana, em que o mtodo retornava true se fosse executado, quando ento a aplicao imprimia uma mensagem de mtodo
executado com sucesso ou algo parecido, e retornava false se ocorresse
algum problema, caso em que a aplicao imprimia uma mensagem de
que algum problema havia ocorrido.
Essa forma de tratamento de erro tem vrios problemas, e entre
eles o mais criticado que se consegue tratar apenas duas possibilidades:
ou o fluxo funcionou ou no funcionou. Alm disso, nesse caso nunca
se poder definir a causa exata, pois um determinado fluxo pode dar
errado por vrias razes.
O que podemos fazer para resolver isso?
Alguns programadores podem ficar tentados a ter a maravilhosa ideia de, no lugar de retornar um booleano, retornar um inteiro e
trat-lo num bloco if-else-if e para cada inteiro retornar uma mensagem
diferente relativa ao erro.
Isso est correto? NO... isso est errado, isso uma m prtica
de programao (anti-pattern) chamada Magic Numbers. Nela, o programador cria nmeros mgicos para cada erro. Esse tipo de prtica tem
manuteno extremamente complicada, pode incorrer numa quantidade grande de erros e no d semntica alguma ao cdigo, que precisa
retratar e explicar por si s o que est ocorrendo no mundo real por
meio do nome da classe, dos seus atributos e dos seus mtodos. Esse
tipo de tcnica, com os nmeros mgicos, vai contra os princpios da
Orientao a Objeto, pois precisaremos ficar com uma tabela na mesa
para sabermos que erro foi aquele que ocorreu.
138 Governana: Gesto, Auditoria e Tecnologia da Informao e Comunicao

Vou dar um exemplo. Imagine que voc est implementando um

AULA

sistema bancrio no qual temos uma classe Conta que possui um mtodo sacar que recebe o valor do saque, executa as operaes de saque
(conexo com banco, validao de usurio, verificao de saldo e limite
etc.) e retorna true ou false conforme o caso:

Se quisermos fazer o tratamento dos possveis fluxos que possam


ocorrer por ocasio do saque, s conseguiremos tratar dois casos: ou o
saque funcionou ou no funcionou:

Ento, acho que voc j se convenceu de que esse tipo de tratamento no uma boa ideia.
A OO desenvolveu formas mais elegantes de tratar os fluxos
anormais do sistema. Em Java, esse fluxo anormal se chama Exceptions
(excees), e a tcnica utilizada para trabalhar erros de forma correta
o chamado Tratamento de Excees.
No tratamento de excees, a ideia que voc saiba quais tipos
de erro um determinado trecho de cdigo pode lanar, e ento ele tem
a obrigao de identificar esse erro caso ele ocorra, enviando uma mensagem adequada e tratada para o usurio, nesse caso. Parece difcil,
quer dizer que preciso conhecer todas as excees do Java? Isso no
fica muito complicado, pois, uma vez que a exceo esteja contida no
cdigo, a prpria JVM se responsabiliza por desviar a execuo para
esse tratamento adequado, caso ele ocorra.

CEC I E R J E X T E N S O E M G O V E R N A N A

139

Java Bsico e Orientao a Objeto

| Tratamento de excees em Java

Caso a JVM no consiga encontrar o devido tratamento para


aquela exceo que foi lanada (ou seja, voc esqueceu ou no percebeu que poderia ocorrer aquele erro naquela classe), ela interrompe o
fluxo de execuo e mostra o erro na sada do sistema. Isso no parece
muito adequado, pois o usurio no vai entender nada. melhor voc
mesmo interceptar e tratar esse erro. Na verdade, essa interrupo de
execuo da JVM uma proteo para garantir que seu programa no
v executar uma operao errada, num fluxo que no o normal, como
j dissemos.
Ento, para evitar que a JVM morra devido a uma exceo no
tratada, devemos tentar (try) executar o trecho de cdigo suscetvel ao
erro e, caso no consigamos, devemos peg-lo (catch), discriminando
qual foi o erro.
A palavra reservada inserida num bloco para tentar executar o
cdigo try (tentar). Para pegar a exceo e discrimin-la a palavra
reservada utilizada o catch (pegar).
Se uma determinada exceo foi pega e identificada (ou seja, era
esperada), a execuo continua, j que a JVM supe que voc tomou as
providncias cabveis.
Na verdade, Exception uma classe que tem muitas filhas,
como pode ser observado na Figura 7.1.
Vamos dividir as subclasses filhas de Exception em dois grupos:
de um lado, RuntimeException e suas subclasses; no outro, todas as
demais subclasses de Exception.
Todas as excees filhas de RuntimeException so chamadas
Unchecked Exceptions; seu tratamento no obrigatrio, uma vez que
voc deve resolver esse tipo de erro no cdigo.
Exemplos de excees de Runtime:
ArithmeticException;
NumberFormatException;
NullPointerException;
ArrayIndexOutOfBoundsException.

140 Governana: Gesto, Auditoria e Tecnologia da Informao e Comunicao

Todas as excees que no so filhas de RuntimeException

AULA

(Unchecked Exceptions) so chamadas Checked Exceptions. Nesse caso,


temos duas opes: trat-las num bloco try/catch ou lan-las para serem
tratadas frente (numa outra classe que chamar essa que tem o erro),
por meio de throws.
Veja a hierarquia de classes Exception:
java.util

EmptyStackException

java.lang

NoSvchElementException

Object

ClassNotFoundException

ArithmeticException

CloneNotSupportedException

ArrayStoreException

IllegalAccessException

ClassCastException
IllegalThreodSateException

Throwable

InstantiotionException

IllegalArgumentException
NumberFormatException

InterruptedException

IllegalMonitorStateException

NoSuchMethodException

IndexOutOfBoundsException

RuntimeException

NegativeArraySizeException

Exception

ArrayIndexOutOfBoundsException

StringIndexOutOfBoundsException

NullPointerException

java.awt
AWTException

java.io
IOException

SecurityException

IOFException
FileNotFoundException

InterruptedIOException

UTFDataFormatException

java.net

MalFormodURLException
ProtocolException

SocketException

UnknownHostException

UnknownServiceException

Figura 7.1: Hierarquia das classes a partir de Exception.


CEC I E R J E X T E N S O E M G O V E R N A N A

141

Java Bsico e Orientao a Objeto

| Tratamento de excees em Java

Veja a classe a seguir. Ela tem algum problema? Por qu? Como
resolver?

No caso dessa classe, estamos utilizando a classe FileReader de


java.io para fazer a leitura de um arquivo que est num determinado
diretrio; assim, voc deve esperar, por exemplo, um erro tal que o
arquivo no possa ser encontrado, o que um tipo de IOException, do
tipo FileNotFoundException, que no filha de RunTimeException.
, assim, uma Checked Exception, e voc obrigado a trat-la, caso
contrrio a classe no ir nem compilar, lanando qual exceo levou
ao erro: unreported exception java.io.FileNotFoundException; must be
caught or declared to be thrown (erro apresentado pelo compilador).
Veja como fcil perceber qual exceo deixou de ser tratada: o
compilador mostra na sua janela de erro (com o tempo e a experincia,
voc aprender sobre elas).
Outro detalhe que merece ateno: j que uma classe pode fazer
vrias coisas, podemos ter mais de uma exceo e de repente todas
checked.
Assim, podemos encadear tratamentos de exceo, mas cada um
em um nico bloco catch, j que as medidas podem ser diferentes para
cada erro e os erros ocorrero um de cada vez.

142 Governana: Gesto, Auditoria e Tecnologia da Informao e Comunicao

Vrios erros tambm podem ser passados para a frente (nos dois

AULA

casos deve ser dado import das classes referentes aos erros), mas separados por vrgula.

TRATANDO AS EXCEES
Veja agora um exemplo de aplicao utilizando esses conceitos
de excees e como devemos trat-los.

Na classe anterior, utilizamos o conceito de excees para tratar


alguns problemas que poderiam ocorrer no nosso sistema. Por exemplo,
imagine que algum insira um valor zero na varivel numrica num2;
quando for efetuada a diviso, estar ocorrendo uma diviso por zero,
o que no possvel, matematicamente; com isso, podemos tentar
capturar um erro de ArithmeticException, como foi feito no primeiro
bloco catch.
CEC I E R J E X T E N S O E M G O V E R N A N A

143

Java Bsico e Orientao a Objeto

| Tratamento de excees em Java

Outra exceo tratada foi a ArrayIndexOutOfBoundsException,


que ocorre quando inserimos mais argumentos do que uma operao
ou espao alocado suporta. No nosso caso, suponha que algum queira
realizar uma de nossas operaes, que foi programada para ocorrer
sempre duas a duas, com apenas um argumento. Isso no iria funcionar;
por isso, no exemplo resolvemos tratar essa exceo.
No ltimo bloco catch, tratamos um erro que poderia ocorrer
caso o usurio inserisse algum outro argumento diferente de nmeros;
isso lanaria a exceo NumberFormatException.
At a tudo bem, mas se voc olhar com mais cuidado a nossa
figura que mostra a famlia de excees, perceber que ArithmeticException, ArrayIndexOutOfBoundsException e NumberFormatException
so filhas de RunTimeException, ou seja, so Unchecked Exception.
Sendo assim, no precisam ser tratadas.
Pode surgir a uma dvida: por que existem excees que devem
ser tratadas e outras que no so obrigatrias?
Na verdade, tem a ver com o sentido semntico do erro e sua
correo na regra implementada. Veja que faz muito mais sentido tratar
uma exceo aritmtica (ArithmeticException), de limitao de espao ou
de argumentos (ArrayIndexOutOfBoundsException) ou de formatao
de tipo de dado (NumberFormatException) no prprio cdigo a partir
de blocos if-else do que deixar para a estrutura da JVM tratar esse erro.
Afinal, so erros de dados do negcio, todos eles esto contidos nas
RunTimeException. Esses tipos de possveis erros so muito mais bem
tratados por meio de validaes do que de excees (que interrompem
a JVM!), pois voc quer que o usurio acerte.
Por outro lado, faz mais sentido deixar por conta da JVM os erros
que no so RunTimeException; voc faz apenas a interceptao desses
erros, pois so associados infraestrutura do sistema; so as Checked
Exceptions. Seria, por exemplo, um erro na rede, um problema com a
conexo de banco de dados ou outro erro que no faz parte do erro do
usurio.
Na classe anterior, poderamos ento implementar a mesma classe,
mas sem a estrutura try/catch; o compilador no reclamaria e o programa
funcionaria sem problemas:

144 Governana: Gesto, Auditoria e Tecnologia da Informao e Comunicao

7
AULA

INFORMAES SOBRE FRUM


Entre no frum e apresente suas dvidas. Participe, troque
informaes. Quem sabe voc no pode colaborar com seus
colegas?
Tambm no perca o chat da semana. Veja o horrio e dia na
pgina do frum.

RESUMO

Reveja os principais conceitos estudados nesta aula.


Nas linguagens procedurais, o que fazamos para tratar um fluxo fora do
normal era tratar o retorno do mtodo que executava esse fluxo. Isso era
feito por meio de uma marcao booleana em que o mtodo retornava
true se fosse executado, quando a aplicao chamadora imprimia uma
mensagem de mtodo executado com sucesso, ou algo parecido, ou
retornava false se ocorresse algum problema, caso em que a aplicao
chamadora imprimia uma mensagem de que algum problema havia
ocorrido.
A Orientao a Objeto desenvolveu formas mais elegantes de tratar
os fluxos anormais do sistema. Em Java, esse fluxo anormal se chama
Exceptions (excees), e a tcnica utilizada para trabalhar erros de forma
correta o chamado Tratamento de Excees.

CEC I E R J E X T E N S O E M G O V E R N A N A

145

Java Bsico e Orientao a Objeto

| Tratamento de excees em Java

No Tratamento de Excees, caso a JVM no consiga encontrar o devido


tratamento para aquela exceo que foi lanada (ou seja, voc esqueceu
ou no percebeu que poderia ocorrer aquele erro naquela classe), ela
interrompe o fluxo de execuo e mostra o erro na sada do sistema, o
que no parece muito adequado, pois o usurio no vai entender nada;
melhor voc mesmo interceptar e tratar esse erro.
Para evitar que a JVM morra devido a uma exceo no tratada,
devemos tentar (try) executar o trecho de cdigo suscetvel ao erro;
caso no consigamos, devemos peg-lo (catch), discriminando qual foi o
erro. As palavras reservadas entre as quais o cdigo inserido num bloco
para tentar executar o cdigo so try (tentar) e, para pegar a exceo e
discrimin-la, catch (pegar).
As subclasses filhas de Exception so divididas em dois grupos:
RuntimeException e suas subclasses num grupo; e todas as demais
subclasses de Exception no outro grupo.
Todas as excees filhas de RuntimeException so chamadas de
Unchecked Exceptions; seu tratamento no obrigatrio, uma vez que
voc deve resolver esse tipo de erro no cdigo; so excees do negcio
implementado.
Todas as excees que no so filhas de RuntimeException (Unchecked
Exceptions) so as chamadas Checked Exceptions. Neste caso, temos duas
opes: tratar as excees com um bloco try/catch ou lan-las para serem
tratadas frente pela classe que as utilizou por meio de throws; isso
feito para erros do sistema, de infraestrutura, como um erro na rede, um
problema com a conexo de banco de dados ou outro erro que no faz
parte do erro do usurio.

146 Governana: Gesto, Auditoria e Tecnologia da Informao e Comunicao

7
AULA

Informao sobre a prxima aula


Na prxima aula, voc ir estudar como trabalhar com algumas das principais
bibliotecas de Java includas no JSE; vamos utilizar algumas de suas classes
para ajudar na nossa programao do dia a dia. At l...

CEC I E R J E X T E N S O E M G O V E R N A N A

147

AULA

Bibliotecas do Java Standard


Edition (JSE)

Meta da aula

objetivos

Ensinar a utilizao de bibliotecas em


Java por meio de algumas das principais
bibliotecas implementadas no Java Standard Edition.

Aps o estudo do contedo desta aula,


esperamos que voc seja capaz de:
1

entender o funcionamento de bibliotecas em


linguagens orientadas a objeto;

explicar como utilizar bibliotecas de classes em


Java;

utilizar as principais bibliotecas do Java Standard Edition para auxiliar na criao de suas
classes.

Pr-requisitos
Para o correto e completo aprendizado desta aula, precisamos
que voc tenha um computador com o Windows XP ou Windows
Vista instalado e pelo menos 512 MB de memria RAM; tenha
instalado e configurado o Java Development Kit (JDK) conforme
as instrues do Apndice A; tenha instalado o Ambiente de
Desenvolvimento Integrado (IDE) NetBeans conforme as instrues do Apndice B; tenha compreendido bem todos os conceitos
de orientao a objetos aprendidos nas ltimas aulas, importantes para continuarmos o aprendizado de Java; esteja animado e
motivado para iniciar o aprendizado dessa fabulosa linguagem
de programao que est dominando os mercados de desenvolvimento, programao e tecnologia na atualidade.

Java Bsico e Orientao a Objeto

INTRODUO

| Bibliotecas do Java Standard Edition (JSE)

Uma das principais premissas da programao orientada a objeto a reutilizao


de classes que j estejam prontas para serem utilizadas.
E assim, como no podia ser diferente, como core da plataforma e de qualquer
sistema escrito em Java, o Java Standard Edition possui mais de 3.500 classes
para serem reutilizadas e auxiliar nas mais diversas tarefas do dia a dia do programador. Imagine se voc tivesse de comear cada funo, cada tarefa, cada
funcionalidade do seu sistema do zero. Seria impossvel...
Dentro dessas milhares de classes, existe um conjunto to bsico a ser utilizado
que voc no precisa nem fazer o import dessas classes, ele feito automaticamente. So as classes do pacote java.lang. Nesse pacote, as duas classes
mais importantes para qualquer nvel de desenvolvedor, desde o iniciante at
o mais experiente, so com certeza Math e String.
Vamos, no decorrer desta aula, explicar um pouco mais sobre essas classes e
naturalmente voc entender por que elas so to importantes. Alm disso,
vamos tambm falar de outras classes complementares que o programador
Java pode querer utilizar.

JAVA E OPERAES MATEMTICAS COM java.lang.Math


Invariavelmente o programador de qualquer linguagem precisa
manipular nmeros e efetuar operaes matemticas. Algumas dessas
operaes dariam muito mais trabalho se no tivssemos mtodos
prontos para utilizar.
Em Java, a classe que implementa essas funcionalidades e responsvel por auxiliar nas operaes com nmeros a classe Math do
pacote java.lang

Ops!
Observe que a classe Math pertence ao pacote java.lang. Isso lembra algo?
Isso mesmo, todas as classes desse pacote podem ser
utilizadas sem a necessidade de serem importadas
(comando import),
t dada a sua grande
importncia.

150 Governana: Gesto, Auditoria e Tecnologia da Informao

Vamos ver um raio x dos principais mtodos de Math:

AULA

public static double abs(double a):


3 recebe como parmetro um valor numrico do tipo double e
retorna seu valor absoluto (sem sinal).
public static double random():
3 retorna um valor numrico do tipo double maior ou igual a
0.0 e menor que 1.0. Utilizado para gerao de nmeros aleatrios.
public static double max(double a, double b):
3 recebe como parmetro dois valores numricos do tipo double
e retorna o maior dos dois.
public static double min(double a, double b):
3 recebe como parmetro dois valores numricos do tipo double
e retorna o menor dos dois.
public static double ceil(double a):
3 a chamada funo teto. Recebe como parmetro um valor
numrico do tipo double e retorna o inteiro mais prximo maior
ou igual a esse nmero, mas convertido para double.
public static double floor(double a):
3 a chamada funo piso. Recebe como parmetro um valor
numrico do tipo double e retorna o inteiro mais prximo menor
ou igual a esse nmero, mas convertido para double.
public static double exp(double a):
3 retorna a constante de Euler elevada potncia passada como
parmetro, devendo esse nmero ser um valor do tipo double.
public static double log(double a):
3 retorna o logaritmo natural de um numrico do tipo double.
public static double pow(double a, double b):
3 retorna um numrico do tipo double resultado do primeiro
argumento (numrico do tipo double) elevado potncia do
segundo argumento (tambm do tipo double).

CEC I E R J E X T E N S O E M G O V E R N A N A

151

Java Bsico e Orientao a Objeto

| Bibliotecas do Java Standard Edition (JSE)

public static long round(double a):


3 retorna o nmero inteiro mais prximo do argumento numrico
do tipo double que foi passado.
public static double sqrt(double a):
3 retorna um numrico do tipo double cujo valor a raiz quadrada
do numrico double passado como argumento.
public static double sin(double a):
3 retorna um valor numrico do tipo double cujo valor o seno
trigonomtrico do ngulo passado como argumento.
public static double cos(double a):
3 retorna um valor numrico do tipo double cujo valor o cosseno
J AVA D O C S
Formato de documentao oficial
implementado pelo
Java, mostrando as
funcionalidades de
uma classe por meio
de pginas navegveis
(html), sendo acessveis todas as informaes relativas a seus
mtodos, campos e
demais informaes
que o criador da
classe ou API achou
importante que ficasse documentado para
quem fosse utiliz-la.

trigonomtrico do ngulo passado como argumento.


public static double toDegrees(double angRad):
3 converte o valor de um ngulo medido em radianos para seu
valor equivalente em graus.
public static double toRadians(double angDeg):
3 converte o valor de um ngulo medido em graus para seu valor
equivalente em radianos.
Como dito no comeo, esses so os principais mtodos da classe
Math, mas existem outros que podem ser teis para o seu trabalho caso
no encontre a funcionalidade matemtica desejada nesse conjunto que
foi apresentado.

Atividade prtica 1
1
3
Vamos pesquisar um pouco?
Acesse no site da Sun os J AVA D O C S da classe Math no pacote java.lang e
aprenda um pouco mais sobre essa importante ferramenta na hora de trabalharmos com
programao matemtica. Veja os outros mtodos, constantes e demais informaes sobre
essa classe. Acesse em: http://java.sun.com/javase/6/docs/api/java/lang/Math.html

152 Governana: Gesto, Auditoria e Tecnologia da Informao

AULA

JAVA E MANIPULAO TEXTUAL COM java.lang.String


Como vimos desde o incio, uma sequncia de caracteres alfabticos em Java uma classe chamada String.
Dessa forma, as variveis desse tipo armazenam parmetros
como referncias a objetos e no um valor definido como nos tipos
primitivos.

Atividade prtica 2
Para entender melhor a diferena de acesso por referncia e por valor
em Java, o que ocorre no caso de String, implemente o cdigo da classe
TestaString a seguir e observe atentamente qual ser a sada do programa.

Como pode ser observado na classe da Atividade 2, mesmo que


duas variveis tenham o mesmo contedo, ao compar-las com o operador de igualdade ==, o resultado que elas so diferentes, o que faz
sentido, j que so objetos diferentes, ou seja, com referncias diferentes.
O mesmo no ocorre com variveis primitivas, nas quais a igualdade
testada por valor e no por referncia. Para o programador iniciante,
isso pode parecer um pouco confuso, mas para voc que j sabe o que
polimorfismo, perceptvel a importncia do Java poder diferenciar
entre variveis de referncia e por valor.
Mas surge uma dvida, apesar de no ser o comportamento
padro comparar o contedo de dois objetos em Java, isso me parece
uma operao frequente em qualquer linguagem de programao, ento,
como fazemos para comparar realmente o contedo dos atributos de dois
objetos em Java? Faa a Atividade 3 e voc ter a resposta.

CEC I E R J E X T E N S O E M G O V E R N A N A

153

Java Bsico e Orientao a Objeto

| Bibliotecas do Java Standard Edition (JSE)

Atividade prtica 3
3
Como uma operao muito comum em qualquer linguagem de programao, 1
o Java possui uma forma de comparar o contedo de dois objetos, j que
vimos que a simples comparao da referncia do objeto outra coisa e pode no dar
o resultado esperado. Essa comparao do contedo feita pelo mtodo equals( ),
conforme apresentado na classe a seguir. Teste a classe TestaString2 e veja como agora
conseguimos comparar o contedo de duas Strings.

Alm de compararmos o contedo de Strings, muitas outras


operaes com cadeias de caracteres so comuns em programao,
principalmente quando fazemos programas com grande quantidade de
textos como o caso de cadastros, de listas, de agendas, de pesquisas e
muitos outros tipos de softwares comumente desenvolvidos no mercado
de desenvolvimento de sistemas. Assim, no seria diferente com Java e a
nossa linguagem prov muitos mtodos importantes para manipulao
textual por meio da classe String. Iremos mostrar os mais importantes,
mas lembro que existem outros mtodos nesta importante classe. Consulte os Javadocs da classe String para conhecer os detalhes de todos
os mtodos.
public String[ ] split(String regex):
3 recebe como parmetro uma String cuja expresso ser a regra
de separao da frase String ao qual o mtodo split foi aplicado,
retornando um array de Strings, onde cada posio do array
o fragmento de frase resultante da diviso da frase original,
separado pela expresso.

154 Governana: Gesto, Auditoria e Tecnologia da Informao

public int compareTo(String outraString):

AULA

3 compara os caracteres unicode de duas Strings retornando 0


(zero) se as Strings forem iguais e diferente de 0 (zero) se forem
diferentes.
public int compareToIgnoreCase(String outraString):
3 um mtodo bem interessante principalmente para utilizao
em pesquisas de nomes em cadastros e aplicaes correlatas.
Ele compara duas Strings, assim como no mtodo compareTo,
mas ignorando maisculas e minsculas.
public String toUpperCase( ):
3 um mtodo muito conhecido das outras linguagens de programao e em Java executa a mesma operao, ou seja, converte
todos os caracteres de uma String para maisculos.
public String toLowerCase( ):
3 um mtodo muito conhecido das outras linguagens de programao e em Java executa a mesma operao, ou seja, converte
todos os caracteres de uma String para minsculos.
public char charAt(int index):
3 mtodo da classe String que recebe um nmero inteiro e retorna o caractere naquela posio da String. Vale lembrar que os
ndices dos caracteres de uma String se iniciam em 0 (zero).
public int length( ):
3 retorna o comprimento de uma String, que igual ao seus nmero de caracteres. Lembre-se de que espao vale como caracter de
uma String. Alm disso, cuidado para no confundir: o ndice de
um caracter numa String comea com 0 (zero), mas o tamanho
de uma String com um nico caractere 1 (um), mesmo que
ele seja somente um espao.
public String substring(int beginIndex):
3 mtodo que recebe um nmero inteiro que representa o ndice
do caractere inicial do trecho a ser dividido e retorna uma
String que um fragmento da String original a partir do ndice
inserido como parmetro, inclusive este caractere.

CEC I E R J E X T E N S O E M G O V E R N A N A

155

Java Bsico e Orientao a Objeto

| Bibliotecas do Java Standard Edition (JSE)

public String trim( ):


3 mtodo que retorna a String original retirados os espaos em
branco no incio e no fim de uma sequncia de caracteres. Mtodo muito interessante de ser utilizado no caso de captura de
dados por meio de um formulrio, em que o usurio pode equivocadamente inserir espaos antes ou depois de um campo.
public int indexOf(char ch):
3 mtodo que recebe um caracter de uma String e retorna o
ndice (nmero inteiro) correspondente posio da primeira
incidncia daquele caracter no String.
public int lastIndexOf(char ch):
3 mtodo que recebe um caracter de uma String e retorna o ndice
(nmero inteiro) correspondente posio da ltima incidncia
daquele caractere no String.
public boolean isEmpty( ):
3 mtodo que retorna true caso o comprimento da String seja 0
(zero) e false caso contrrio.
public boolean contains(SequenceChar s):
3 mtodo que retorna true caso a String contenha a sequncia de
caracteres inserida como parmetro do mtodo. um mtodo
para fazer uma busca de uma substring dentro de uma String.
public String replace(char oldChar, char newChar):
3 mtodo que retorna a String original substituindo o caracter
oldChar pelo caracter newChar passados como parmetros
do mtodo.

156 Governana: Gesto, Auditoria e Tecnologia da Informao

AULA

Atividade prtica 4
3
Vamos comear a fazer uma srie de atividades de implementao de classes 1
para entender melhor o funcionamento dos mtodos das classes vistas at
agora.
Para comear, implemente a classe TestaMath a seguir, que tem uma pequena amostra
de como utilizar a biblioteca matemtica do Java. Veja que no foi necessrio instanciar
nenhum objeto Math. Isso ocorre porque seus mtodos dessa classe so todos estticos,
ou seja, sua instncia da classe e no precisamos de um objeto para utiliz-los.

Atividade de reflexo

Vamos agora trabalhar com a classe String. Com as atividades a seguir per- 1
3
ceberemos que essa importante classe serve para fazermos coisas muito
mais interessantes do que simplesmente armazenar cadeias de caracteres, a nica
funcionalidade que estvamos utilizando.
Implemente e execute a classe TestaString3 e escreva nas linhas a seguir quais foram
os resultados nesse programa das operaes sobre os mtodos split, compareTo, compareToIgnoreCase, toLowerCase e toUpperCase. Anote tambm alguma observao
que achou importante para discutirmos no frum da semana.

CEC I E R J E X T E N S O E M G O V E R N A N A

157

Java Bsico e Orientao a Objeto

| Bibliotecas do Java Standard Edition (JSE)

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
________________________________________________________________________

Atividade de reflexo

Continuando os trabalhos com a classe String, implemente e execute a classe 1


3
TestaString4 e escreva nas linhas a seguir quais foram os resultados nesse
programa das operaes sobre os mtodos charAt, length, substring, trim, indexOf
e lastIndexOf. Anote tambm alguma observao que achou importante para discutirmos no frum da semana.

158 Governana: Gesto, Auditoria e Tecnologia da Informao

Atividade de reflexo

AULA

__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
___________________________________________________________________________
___________________________________________________________________________
___________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
__________________________________________________________________

Implemente e execute essa ltima classe com mtodos de String, a classe 1


3
TestaString5 e escreva nas linhas a seguir quais foram os resultados nesse
programa das operaes sobre os mtodos isEmpty, contains e replace. Anote tambm
alguma observao que achou importante para discutirmos no frum da semana.

_________________________________________________________________________

CEC I E R J E X T E N S O E M G O V E R N A N A

159

Java Bsico e Orientao a Objeto

| Bibliotecas do Java Standard Edition (JSE)

____________________________________________________________________________
____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_____________________________________________________________________________

OUTRAS CLASSES IMPORTANTES DO JAVA STANDARD


EDITION
Classes Wrapper para converso de tipo
Um outro problema importante na programao pelo qual j
passamos, mas que s encontramos algumas solues nas classes das
bibliotecas do Java, o de converso de tipos.
As classes responsveis por converso de tipo so chamadas classes
Wrapper, j que elas embrulham a varivel no tipo adequado que foi
solicitada converso.
Voc pode utilizar as classes Wrapper para efetuar converses de
String ou para utilizar tipos primitivos como classes.
Lembre que para transformarmos um tipo int, por exemplo, numa
String basta utilizarmos o operador de concatenao + junto da String
que est sendo utilizada.
J para realizarmos a operao inversa, ou seja, transformarmos
String em tipos primitivos, utilizamos as classes Wrapper com seus respectivos mtodos de parse de acordo com o tipo solicitado.

160 Governana: Gesto, Auditoria e Tecnologia da Informao

Veja este exemplo, onde transformamos um int numa String

AULA

somente concatenando-a com uma outra String e depois transformamos


uma String num int por meio da classe Wrapper Integer, utilizando seu
mtodo parseInt. Sempre que quisermos realizar uma operao matemtica com alguma String que foi recebida, devemos transform-la num
numrico antes de realizar o clculo.

Existem classes Wrapper para todos os tipos primitivos, conforme


mostrado na tabela abaixo:
Tipos primitivos de dados

Classes wrapper correspondentes

boolean

Boolean

char

Character

byte

Byte

short

Short

int

Integer

long

Long

float

Float

double

Double

Uma observao importante que as classes Wrapper fazem


parte do pacote java.lang, assim no precisam ser importadas para sua
utilizao.

CEC I E R J E X T E N S O E M G O V E R N A N A

161

Java Bsico e Orientao a Objeto

| Bibliotecas do Java Standard Edition (JSE)

Classes do pacote java.io para tratamento de entrada e


sada
Continuando nosso passeio pelas bibliotecas nativas que j so
contempladas pelo JDK, vamos ver um outro pacote muito importante,
o java.io, que trata do processamento de entrada e sada em Java.
Em Java, todo tratamento de entrada e sada feito como um
fluxo de bytes, o que d um poder polimrfico muito grande, visto que
esse fluxo pode ser de qualquer coisa como um caractere, uma String ou
uma linha de caracteres, e sua origem pode ser a padro do sistema, um
arquivo, um socket, um post ou qualquer outra coisa, mas tanto faz, pois
sero tratados pelas mesmas classes. Afinal, temos o polimorfismo!
Num fluxo de sada em Java, podemos escrever bytes (num
arquivo, na tela etc.), e a classe abstrata OutputStream define o comportamento desse fluxo.
Num fluxo de entrada em Java, podemos ler bytes (de um arquivo,
do teclado etc.), e a classe abstrata InputStream define o comportamento
desse fluxo.

Atividade prtica 5
3
Vamos comear a executar as atividades dos programas referentes a operaes 1
de entrada e sada em Java.
Nessa primeira atividade voc ir implementar uma classe que faz a leitura de uma
linha inserida pelo teclado. Preste ateno nos comentrios para aprender o que cada
uma das classes utilizadas faz nesse programa. Por fim, execute essa classe na sua
IDE e utilize a parte inferior no console para inserir uma frase qualquer e testar seu
funcionamento.

162 Governana: Gesto, Auditoria e Tecnologia da Informao

AULA

Atividade prtica 6
3
Vamos ser mais ousados agora. Nossa classe no ler mais do teclado, o que 1
estava fcil, j que o teclado a entrada padro do sistema. Agora queremos
ler de um arquivo, ento precisamos de uma filha concreta de InputStream que saiba
ler um arquivo. Essa classe existe e se chama FileInputStream.
Crie um arquivo teste.txt como o da figura a seguir na raiz de seu projeto no
NetBeans:

Implemente agora a classe para ler esse arquivo conforme o cdigo a seguir e anote as
observaes para discutirmos no frum da semana. O que precisamos fazer para lermos
no apenas uma nica linha, mas todas como na classe implementada?

CEC I E R J E X T E N S O E M G O V E R N A N A

163

Java Bsico e Orientao a Objeto

| Bibliotecas do Java Standard Edition (JSE)

Atividade prtica 7
3
Por fim, analogamente aos exemplos de leitura ou entrada de dados, imple- 1
mentados com a classe InputStream, vamos fazer a classe para realizar a
escrita ou sada de dados, onde a classe a ser trabalhada a OutputStream.
Implemente a classe a seguir e veja que ao atualizar seu projeto com F5, o arquivo
escrita.txt criado e, ao abri-lo, voc ver o contedo que foi escrito no seu interior
com o mtodo write.

INFORMAES SOBRE FRUM


Vamos entrar no frum para discutirmos as dvidas de vocs.
Participem, troquem informaes.
Tambm no percam o chat da semana o horrio e o dia sero
colocados na pgina do frum.

RESUMO

Vamos rever os principais conceitos vistos nesta aula.


Uma das principais premissas da programao orientada a objetos a
reutilizao de classes que j estejam prontas para serem utilizadas; assim,
o Java Standard Edition possui mais de 3.500 classes para serem reutilizadas
pelo programador.
Dentre elas, as mais importantes para qualquer nvel de desenvolvedor so
as classes Math e String, que pertencem ao pacote java.lang e portanto
no precisam ser importadas.

164 Governana: Gesto, Auditoria e Tecnologia da Informao

8
AULA

Todos os detalhes dos mtodos e outras informaes importantes das


classes Math e String podem ser obtidas por meio dos javadocs das
respectivas classes no site da Sun, podendo tambm ser baixados para o
seu computador para ser consultado.
Javadocs o formato de documentao oficial implementado pelo Java
por meio de pginas navegveis (html).
As variveis do tipo String armazenam parmetros como referncias a
objetos e no um valor definido como nos tipos primitivos; assim, no
podemos comparar os contedos de Strings com o operador de igualdade
==.
Mas como uma operao muito comum, o Java possui uma forma de
comparar o contedo de dois objetos por meio do mtodo equals( ).
Um outro problema importante na programao o de converso de tipos,
executados pelas classes Wrapper, que efetuam converses de String ou
para utilizar tipos primitivos como classes.
Para transformarmos um tipo int numa String, basta utilizarmos o operador
de concatenao + junto da String que est sendo utilizada.
J para realizarmos a operao inversa, utilizamos as classes Wrapper com
seus respectivos mtodos de parse de acordo com o tipo solicitado. Por
exemplo, transformamos uma String num int por meio da classe Wrapper
Integer, utilizando seu mtodo parseInt.
Sempre que quisermos realizar uma operao matemtica com alguma
String que foi recebida, devemos transform-la num numrico antes de
realizar o clculo, mas tambm existem classes Wrapper para todos os
outros tipos primitivos.
Em Java, todo tratamento de entrada e sada feito como um fluxo de
bytes por meio das classes do pacote java.io, o que lhe concede alto nvel
de polimorfismo.
Num fluxo de sada em Java, podemos escrever bytes (num arquivo,
na tela etc.) e a classe abstrata OutputStream define o comportamento
desse fluxo.
Num fluxo de entrada em Java, podemos ler bytes (de um arquivo, do
teclado etc.) e a classe abstrata InputStream define o comportamento
desse fluxo.

CEC I E R J E X T E N S O E M G O V E R N A N A

165

Java Bsico e Orientao a Objeto

| Bibliotecas do Java Standard Edition (JSE)

Informao sobre a prxima aula


Na prxima aula, iremos comear uma das partes mais legais do Java SE,
programao grfica com AWT e Swing. Enfim, vamos comear a desenhar
as famosas janelas desktop do Windows. No percam.

166 Governana: Gesto, Auditoria e Tecnologia da Informao

AULA

Programao grfica em Java I

Metas da aula

objetivos

Introduzir os conceitos bsicos e ensinar


o aluno a desenvolver aplicaes grficas
desktop em Java atravs das bibliotecas
AWT e Swing.

Aps o estudo do contedo desta aula,


esperamos que voc seja capaz de:
1

entender o funcionamento das bibliotecas AWT


e Swing;

explicar o fluxo de informaes e tratamento


de eventos de aplicaes grficas desktop em
Java;

criar aplicativos com recursos grficos de janelas utilizando as bibliotecas grficas do JDK.

Pr-requisitos
Para o correto e completo aprendizado desta aula, precisamos
que voc tenha um computador com o Windows XP ou Windows
Vista instalado com pelo menos 512 MB de memria RAM; tenha
instalado e configurado o Java Development Kit (JDK) conforme
as instrues do Apndice A; tenha instalado o Ambiente de
Desenvolvimento Integrado (IDE) NetBeans conforme as instrues do Apndice B; tenha compreendido bem todos os conceitos
de Orientao a Objetos aprendidos nas ltimas aulas, importantes para continuarmos o aprendizado de Java; esteja animado e
motivado para iniciar o aprendizado dessa fabulosa linguagem
de programao que est dominando os mercados de desenvolvimento, programao e tecnologia na atualidade.

Java Bsico e Orientao a Objeto

INTRODUO

| Programao grfica em Java I

Apesar de voc j conseguir projetar e executar uma srie de aplicaes em


Java utilizando os conceitos aprendidos at agora, principalmente os relativos
orientao a objetos, desde o advento do sistema operacional Windows da
Microsoft, mesmo nas suas verses mais antigas, um dos grandes atrativos da
programao moderna o desenvolvimento de aplicaes grficas baseadas
em janelas, popularmente conhecido no mundo do desenvolvimento como

PROGRAMAO

PROGRAMAO DESKTOP.

DESKTOP

Assim, o Java prov no seu conjunto bsico de desenvolvimento (JDK) uma

Ramo da programao voltado para


o desenvolvimento
de aplicativos baseados em janelas,
que normalmente
rodam localmente
e por meio das GUI
conseguem trazer
facilidade de manipulao e riqueza
de visualizao para
o usurio.

srie de bibliotecas para auxiliar na programao de aplicaes desktop.


As principais bibliotecas dessa categoria so a Abstract Window Toolkit,
mais conhecida como AWT, e a Swing.
Vale lembrar que uma aplicao desenvolvida com recursos grficos agrega
muito valor a um sistema, fazendo com que ele ganhe em interatividade,
usabilidade e experincia para o usurio, tudo isso por meio de recursos de
interface grfica com o usurio, tambm conhecido como GUI (Graphical
User Interface).
No decorrer desta aula, vamos percorrer os principais componentes dessas
bibliotecas por meio de vrios exemplos alm de aprendermos a forma como
esses componentes interagem com a sua aplicao, conhecido como tratamento de eventos.

BIBLIOTECAS GRFICAS DO JDK


Dentro do JDK existe um conjunto de classes e bibliotecas que
recebe o nome especial de Java Foundation Classes (JFC), sendo uma
APPLETS

coleo de APIs que auxiliam no desenvolvimento de aplicaes Java

So aplicaes
grficas para web
desenvolvidas com
bibliotecas grficas
desktop, como
AWT e Swing, e so
inteiramente importadas para o usurio
por ocasio de sua
requisio dentro
de uma pgina ou
recurso na rede.

com GUI. Dessas APIs as duas principais so a AWT e a Swing.


Alm de aplicaes desktop, essas bibliotecas tambm podem ser
utilizadas para desenvolver aplicaes web chamadas A P P L E T S .
Existem algumas diferenas importantes entre AWT e Swing.
Na verdade, AWT uma biblioteca mais antiga, existente no Java desde
a sua verso 1.0, sendo que Swing seria sua atualizao na parte de
componentes grficos. Vamos ver as principais caractersticas de cada
uma dessas bibliotecas antes de utiliz-las.

168 Governana: Gesto, Auditoria e Tecnologia da Informao

Por questes de performance, como a AWT existe desde a primeira

AULA

verso da JVM que ainda tinha alguns problemas quanto ao seu rendimento, foram desenvolvidos alguns componentes nativos, fazendo com
que essa biblioteca seja dependente de plataforma para alguns pacotes.
Assim, no s as classes como a aparncia de sistema (look and feel) das
janelas ficam dependentes do sistema operacional utilizado, reduzindo a
portabilidade das aplicaes feitas completamente com essa API.
Por outro lado, a biblioteca Swing inteiramente escrita em Java,
resolvendo os problemas de portabilidade da AWT, sendo portanto inteiramente independente de plataforma, podendo tambm o programador
utilizar diferentes aparncias em qualquer sistema operacional. A API
Swing implementa vrios componentes da AWT, mas tambm tem vrias
linhas de herana em comum.

A BIBLIOTECA ABSTRACT WINDOW TOOLKIT (AWT)


Aprendendo sobre os Containers
No desenvolvimento de aplicaes grficas, a tcnica utilizada
para montagem do sistema a distribuio de componentes clssicos
como botes, combos, reas de texto e outros sobre tabuleiros onde sero
distribudos, formando uma arquitetura de mosaico. Esses tabuleiros,
base para todos os outros componentes, so chamados de containers, e
constituem a base de toda a programao desktop em Java.
Os principais containers existentes em Java so:
Component: uma classe abstrata para objetos que interagem
com o usurio; a raiz de todos os outros componentes de
AWT.
Container: subclasse concreta de Component, um componente
que pode conter outros componentes.
Panel: subclasse de Container, uma rea de manipulao que
pode ser colocada dentro de um Window, Dialog ou Frame.
Window: subclasse de Container, uma janela simples que no
tem borda ou barra de menu.
Dialog: janela com barra de ttulo e boto de fechar utilizada
para criao de janelas interativas com o usurio.
Frame: janela mais completa, com ttulo, barra de menu, borda
e outros atributos.

CEC I E R J E X T E N S O E M G O V E R N A N A

169

Java Bsico e Orientao a Objeto

| Programao grfica em Java I

Assim, podemos utilizar algum desses containers mostrados para


construirmos nossa aplicao de janelas.
Uma vez escolhido o tipo da janela, podemos configurar seu
tamanho por meio do mtodo setSize passando a largura e a altura
como parmetros:
void setSize(int width, int height)
Por padro, a janela no um objeto visvel aps sua execuo.
Para isso, normalmente a ltima operao executada na sua construo
a reconfigurao de seu parmetro de visualizao para true por meio
do mtodo setVisible:
void setVisible(boolean b)
Por ser o mais completo, o objeto Frame o mais comumente
utilizado em aplicaes AWT, podendo ser mesclado com objetos Panel,
como ser mostrado futuramente.
Vamos ver nosso primeiro exemplo de janela feito em Java:

Nesse exemplo aqui exposto, instanciamos nosso primeiro objeto


Frame configurando seu tamanho e fazendo-o aparecer na tela do computador por meio do mtodo setVisible.

Atividade prtica 1
Crie um novo projeto na IDE NetBeans somente para suas classes grficas
feitas com AWT e Swing e comece implementando a classe Exemplo01
como mostrado no cdigo anterior.
Por fim, execute e veja o resultado da sua primeira janela.

170 Governana: Gesto, Auditoria e Tecnologia da Informao

AULA

Vamos aprender a desenhar?


Dentro do pacote AWT, existe uma classe muito importante,
responsvel por executar operaes de desenho numa janela: a classe
Graphics.
Nessa classe, vrios mtodos nos auxiliam a executar operaes
de desenho como numa aplicao tipo Paint.
Na classe Graphics, podemos definir cores por meio de uma classe
utilizada conjuntamente com ela, a classe Color, alm de definir fontes
e traos de desenhos como retngulos e polgonos.
Veja a classe Exemplo02 para aprender uma pouco mais sobre a
classe Graphics e seu funcionamento.

CEC I E R J E X T E N S O E M G O V E R N A N A

171

Java Bsico e Orientao a Objeto

| Programao grfica em Java I

Atividade prtica 2
Crie uma nova classe Exemplo02 para implementar nosso cdigo j
mostrado. Por fim, compile e execute para entender as funcionalidades
da classe Graphics.

Componentes internos de AWT


Vamos agora aprender sobre os componentes internos de um
container em AWT, aqueles que vo compor a sua aplicao.
Como j explicamos, voc tem um tabuleiro (seu container)
sobre o qual ir arquitetar seu mosaico. As peas desse mosaico so
compostas desses componentes internos ou microcomponentes de AWT.
Os principais deles so:
Label: componente que facilita a escrita de texto na aplicao,
no formato de etiqueta.
TextField: componente que serve para escrever um texto de
entrada na aplicao, de apenas uma linha.
TextArea: componente semelhante ao TextField, mas que suporta mais de uma linha.
Button: componente que desenha um boto na aplicao da
janela.
Alm desses componentes bsicos, temos outros componentes
mais elaborados, como Checkbox (opes), Choice (combo), List (lista
de escolha) e Scrollbar (barra de rolagem).
Veja no exemplo a seguir a utilizao de muitos desses componentes internos de AWT:

172 Governana: Gesto, Auditoria e Tecnologia da Informao

9
AULA

Atividade prtica 3
Crie uma nova classe Exemplo03 para implementar nosso cdigo j
mostrado acima. Por fim, compile e execute para entender como criar
componentes internos de AWT.

CEC I E R J E X T E N S O E M G O V E R N A N A

173

Java Bsico e Orientao a Objeto

| Programao grfica em Java I

Diferentes formas para seu mosaico AWT


Agora que voc j comeou a preencher com componentes
internos seus macrocomponentes ou containers, voc precisa aprender
como organizar melhor as peas no seu tabuleiro, ou seja, organizar os
microcomponentes no container.
Para organizar as peas no tabuleiro, utilizamos estruturas chamadas Gerenciadores de Layout, que so os responsveis por determinar
a posio e o tamanho dos componentes no container.
Os Gerenciadores de Layout em Java so:
FlowLayout;
BorderLayout;
GridLayout;
GridBagLayout;
CardLayout;
BoxLayout.
Vamos aprender o conceito e a manipulao dos Gerenciadores
de Layout mais utilizados na programao desktop em Java.
A configurao do Gerenciador de Layout em Java feita por
meio do mtodo setLayout, passando como parmetro o gerenciador
a ser utilizado.
void setLayout(LayoutManager mng)
Vamos comear com o gerenciador mais simples de todos, o FlowLayout, que o gerenciador padro da classe Panel e suas subclasses.
Esse gerenciador posiciona os componentes da esquerda para a direita e
de cima para baixo, comeando no canto superior esquerdo. O que pode
ser alterado no construtor o alinhamento dos componentes, podendo
ser central, alinhado esquerda ou alinhado direita.
Aceita trs construtores diferentes, podendo ser definido o alinhamento, o gap horizontal e o gap vertical da estrutura, de acordo com o
construtor e os valores de alinhamentos escolhidos.
Os possveis construtores para FlowLayout so:
FlowLayout( );
FlowLayout(int alinhamento);
FlowLayout(int alinhamento, int gapHoriz, int gapVert).

174 Governana: Gesto, Auditoria e Tecnologia da Informao

Os valores de alinhamento possveis so:

AULA

FlowLayout.LEFT;
FlowLayout.CENTER;
FlowLayout.RIGHT.
Observe o exemplo a seguir da classe Exemplo 04 e veja como os
microcomponentes de boto so distribudos com FlowLayout:

Atividade prtica 4
2
3
Crie uma nova classe Exemplo04 para implementar nosso cdigo 1
mostrado anteriormente. Por fim, compile e execute para entender o
comportamento do Gerenciador de Layout FlowLayout.
Redimensione o tamanho da janela criada arrastando sua borda com o mouse e perceba
qual ser o comportamento dos microcomponentes de seu container.

Vamos agora aprender um outro Gerenciador de Layout: o BorderLayout. Ele o gerenciador padro da classe Window e suas subclasses.
A maioria das ferramentas desktop que conhecemos desenhada
com esse gerenciador, que um dos mais utilizados para programao
de aplicaes de janelas mais complexas.

CEC I E R J E X T E N S O E M G O V E R N A N A

175

Java Bsico e Orientao a Objeto

| Programao grfica em Java I

O BorderLayout divide o objeto container em cinco campos onde


objetos do tipo Component podem ser adicionados, inclusive objetos
Panel, como veremos depois para compormos aplicaes mais complexas.
Esses campos so distribudos de acordo com a orientao cardeal, com
caractersticas especficas, conforme mostrado a seguir:
North: espalhamento horizontal na parte superior do container;
South: espalhamento horizontal na parte inferior do container;
East: ajuste vertical na poro direita do container;
West: ajuste vertical na poro esquerda do container;
Center: ajuste em todas as direes.
Uma observao importante: s pode ser colocado um componente por regio.
Os valores de regies vlidas so:
BorderLayout.NORTH;
BorderLayout.SOUTH;
BorderLayout.EAST;
BorderLayout.WEST;
BorderLayout.CENTER.
Vamos ver o exemplo abaixo que trabalha com BorderLayout:

176 Governana: Gesto, Auditoria e Tecnologia da Informao

AULA

Atividade prtica 5
2
3
Crie uma nova classe Exemplo05 para implementar nosso cdigo 1
mostrado anteriormente. Por fim, compile e execute para entender o
comportamento do Gerenciador de Layout BorderLayout.
Redimensione o tamanho da janela criada arrastando o mouse e perceba qual ser o
comportamento dos microcomponentes de seu container.

Um outro Gerenciador de Layout muito interessante o GridLayout,


que posiciona os componentes da esquerda para a direita e de cima para
baixo, mas dividindo o container em um nmero de linhas e colunas,
como clulas.
Para isso esse gerenciador suporta um construtor no qual o programador define por ocasio da sua criao a quantidade de linhas e
colunas desejada no container:
GridLayout(int nroLinhas, int nroColunas)
Vamos ver o exemplo da classe Exemplo06 para entendermos
melhor o funcionamento desse interessante gerenciador que divide nosso
container em clulas:

CEC I E R J E X T E N S O E M G O V E R N A N A

177

Java Bsico e Orientao a Objeto

| Programao grfica em Java I

Atividade prtica 6
2
3
Crie uma nova classe Exemplo06 para implementar nosso cdigo 1
mostrado anteriormente. Por fim, compile e execute para entender o
comportamento do Gerenciador de Layout GridLayout.
Redimensione o tamanho da janela criada arrastando o mouse e perceba qual ser o
comportamento dos microcomponentes de seu container.
Perceba que, caso voc adicione menos microcomponentes do que o nmero de linhas
vezes o nmero de colunas, esse espao ficar vazio.

Para desenvolvermos aplicaes mais complexas, precisaremos


combinar diferentes gerenciadores.
Alm disso, uma tcnica interessante criarmos vrios objetos
Panel e nele inserirmos as pores que queremos desenhar no nosso
mosaico, que ser posteriormente inserido num Frame, por exemplo,
conforme podemos ver no exemplo a seguir:

178 Governana: Gesto, Auditoria e Tecnologia da Informao

9
AULA

Atividade prtica 7
2
3
Vamos ver se voc entendeu como funciona a criao de layouts com- 1
plexos em programao desktop Java?
Crie uma classe Exemplo07 e implemente a classe do exemplo anterior, analisando-a
com cuidado para entender todos os detalhes da criao e construo de painis sobre
um container.

Rumo prxima gerao: componentes da biblioteca


Swing
Conforme explicamos no incio desta aula, tnhamos alguns
problemas e limitaes em relao a alguns componentes do pacote da
biblioteca AWT. Com isso, o Java evoluiu sua plataforma de aplicaes
grficas para uma nova biblioteca chamada Swing, contida no pacote
javax.swing.
Essa nova biblioteca inteiramente escrita em Java e fornece
componentes com mais funcionalidades e melhor acabamento.
Os componentes bsicos do AWT foram apenas reescritos, mas
praticamente continuam os mesmos, inclusive com o mesmo nome,
sendo que nos nomes dos componentes da biblioteca Swing foi acrescentado o prefixo J, conforme pode ser visto na lista de seus principais
componentes a seguir:

CEC I E R J E X T E N S O E M G O V E R N A N A

179

Java Bsico e Orientao a Objeto

| Programao grfica em Java I

JComponent;
JButton;
JCheckBox;
JFileChooser;
JTextField;
JFrame;
JPanel;
JApplet;
JOptionPane;
JDialog;
JColorChooser.
Vamos ver um exemplo simples de utilizao das classes de
Swing:

Atividade prtica 8
1
2
3
Nesta atividade, temos duas tarefas.
Primeiro implemente a classe anterior para travar o primeiro contato
com a biblioteca Swing, ento compile e execute o exemplo para ver se tudo ocorreu
sem problemas.
Aps isso, reimplemente todos os nossos exemplos anteriores, mas agora utilizando os
componentes da biblioteca Swing.

180 Governana: Gesto, Auditoria e Tecnologia da Informao

9
AULA

INFORMAES SOBRE FRUM


Vamos entrar no frum para discutirmos as dvidas de vocs.
Participem, troquem informaes.
Tambm no percam o chat da semana, o horrio e dia sero
colocados na pgina do frum.

RESUMO

Vamos rever os principais conceitos vistos nesta aula:


As principais bibliotecas para programao desktop (construdas em
sistemas de janelas) em Java e que fazem parte do JDK so a Abstract
Window Toolkit, mais conhecida como AWT, e a Swing.
AWT e Swing fazem parte de um conjunto de classes e bibliotecas do JDK
chamadas Java Foundation Classes (JFC).
Alm de aplicaes desktop, essas bibliotecas tambm podem ser utilizadas
para desenvolver aplicaes web chamadas Applets;
A AWT uma biblioteca mais antiga, existente no Java desde a sua verso
1.0, sendo Swing sua atualizao na parte de componentes grficos.
A biblioteca AWT, por questes de performance possui alguns componentes
nativos, fazendo com que essa biblioteca seja dependente de plataforma
para alguns pacotes.
A biblioteca Swing inteiramente escrita em Java, resolvendo os problemas
de portabilidade da AWT, sendo portanto inteiramente independente de
plataforma.
No desenvolvimento de aplicaes grficas, a tcnica utilizada para montagem
do sistema a distribuio de componentes clssicos (microcomponentes)
como botes, combos, reas de texto e outros sobre tabuleiros onde sero
distribudos, formando uma arquitetura de mosaico. Esses tabuleiros, base
para todos os outros componentes, so chamados de containers, e consistem
na base de toda a programao desktop em Java.

CEC I E R J E X T E N S O E M G O V E R N A N A

181

Java Bsico e Orientao a Objeto

| Programao grfica em Java I

Os principais containers existentes em Java so Component, Container,


Panel, Window, Dialog e Frame.
Por ser o mais completo, o objeto Frame o mais comumente utilizado
em aplicaes AWT, podendo ser mesclado com objetos Panel.
A classe Graphics responsvel por executar operaes de desenho numa
janela. Nessa classe, vrios mtodos nos auxiliam a executar operaes de
desenho como numa aplicao tipo Paint.
Numa aplicao desktop voc tem um tabuleiro (seu container) sobre
o qual voc ir arquitetar seu mosaico. As peas desse mosaico so
compostas desses componentes internos ou microcomponentes de AWT.
Os principais deles so Label, TextField, TextArea, Button, CheckboxChoice,
List e Scrollbar.
A tcnica para organizar as peas no tabuleiro feita por meio de estruturas
chamadas Gerenciadores de Layout, que so os responsveis por determinar
a posio e o tamanho dos componentes no container.
Os Gerenciadores de Layout em Java so FlowLayout, BorderLayout,
GridLayout, GridBagLayout, CardLayout e BoxLayout.
A biblioteca Swing est no pacote javax.swing, e nela os componentes
bsicos do AWT foram apenas reescritos, mas praticamente continuam
os mesmos, inclusive com o mesmo nome, e nos nomes dos componentes
da biblioteca Swing foi acrescentado o prefixo J, sendo que seus
principais componentes so JComponent, JButton, JCheckBox,
JFileChooser, JTextField, JFrame, JPanel, JApplet, JOptionPane, JDialog
e JColorChooser.

Informao sobre a prxima aula


Na prxima aula, iremos continuar com programao grfica em Java,
aprendendo uma importante parte que necessria para definirmos a ao
que ocorrer a partir da interao do usurio com o componente. Essa parte
se chama tratamento de eventos. No perca!

182 Governana: Gesto, Auditoria e Tecnologia da Informao

10

AULA

Programao grfica em Java II

Meta da aula

objetivos

Introduzir os conceitos bsicos e ensinar


o aluno a desenvolver aplicaes grficas
desktop em Java por meio das bibliotecas
AWT e Swing.

Aps o estudo do contedo desta aula,


esperamos que voc seja capaz de:
1

entender o funcionamento das bibliotecas AWT


e Swing;

explicar o fluxo de informaes e tratamento


de eventos de aplicaes grficas desktop em
Java;

criar aplicativos com recursos grficos de janelas utilizando as bibliotecas grficas do JDK.

Pr-requisitos
Para o correto e completo aprendizado desta aula, precisamos
que voc tenha um computador com o Windows XP ou Windows
Vista instalado com pelo menos 512MB de memria RAM; tenha
instalado e configurado o Java Development Kit (JDK) conforme
as instrues do Apndice A; tenha instalado o Ambiente de
Desenvolvimento Integrado (IDE) NetBeans conforme as instrues do Apndice B; tenha compreendido bem todos os conceitos
de Orientao a Objeto aprendidos nas ltimas aulas, importantes
para continuarmos o aprendizado de Java; esteja animado e motivado para iniciar o aprendizado dessa fabulosa linguagem de programao que est dominando os mercados de desenvolvimento,
programao e tecnologia na atualidade.

Java Bsico e Orientao a Objeto

INTRODUO

| Programao grfica em Java II

Vamos dar continuidade ao aprendizado da programao grfica em Java com


as APIs AWT e Swing.
Na aula passada, vimos a primeira parte dessa programao, na qual voc
aprendeu a fazer a parte grfica propriamente dita, ou seja, aprendeu como
construir e desenhar as janelas de sua aplicao com seus componentes de
boto, caixas de entrada de texto, combos, listas e outros que faro parte da

GRAPHICAL
USER INTERFACE
Interface com o
usurio que permite a interao
com dispositivos
digitais por meio de
elementos grficos
como cones, botes
e outros indicadores
visuais, em contraste com a interface de
linha de comando.

interface grfica com o usurio ou GUI (G R A P H I C A L U S E R I N T E R F A C E ).


O que acontece se o usurio interagir com algum componente da GUI? O que
ir disparar? Como ser tratado? esse conceito que iremos ver nesta aula, o
chamado Tratamento de Eventos em Interfaces Grficas.
Tratamento de Eventos , portanto, a tcnica de capturar a ao que o usurio
realizou por meio da GUI, interpret-la identificando qual componente foi
acionado e por ltimo dar a resposta desejada ao daquele componente
analisando, se for o caso, o contedo inserido pelo usurio atravs deste
componente.
Vamos nas prximas sesses ensinar mais alguns conceitos sobre essa tcnica
e como realizar sua programao para que consigamos de forma correta interpretar o que o usurio est querendo realizar. No final, tambm vamos ensinar
algumas facilidades que a IDE NetBeans nos proporciona ao trabalharmos com
a programao de GUIs.

MODELO DE TRATAMENTO DE EVENTOS


O Modelo de Tratamento de Eventos descreve o modo como sua
classe pode responder a uma interao do usurio.
Esse modelo dividido em trs componentes, que so definidos e
utilizados da seguinte forma:
1. Gerador de Evento (Event Source): o componente da interface
que origina o evento. Por exemplo, caso o usurio pressione
o boto para solicitar uma pesquisa, nesse caso o Gerador de
Evento o boto que foi clicado.
2. Monitor de Eventos/Manipulador (Event Listener/Handler):
recebe as informaes enviadas pelo Gerador de Evento processando a interao. Por exemplo, no caso do usurio que apertou

184 Governana: Gesto, Auditoria e Tecnologia da Informao

10

o boto, o Monitor de Eventos pode receber uma informao

AULA

que foi enviada e retornar uma mensagem ao usurio relativa


a essa recepo e tratamento.
3. Objeto Evento (Event Object): quando um evento ocorre, o
pressionar de um boto por exemplo, um Objeto Evento
criado. Ele contm todas as informaes necessrias sobre o
evento gerado. Um exemplo seria o clicar do boto direito do
mouse sobre um boto.
Quando programamos um evento que pode ocorrer, um listener
(Monitor de Eventos) deve ser registrado pelo Gerador de Evento, pois
assim esse listener ir receber as informaes do evento que ocorrer nesse
Gerador de Evento. Uma vez registrado esse listener fica aguardando a
gerao de evento sobre esse componente gerador do evento.
Quando algum evento ocorre no gerador do evento, um Objeto
Evento criado, ele o descritor do evento. Aps isso, o evento disparado pelo gerador para os listeners registrados.
Quando um listener recebe uma notificao de um gerador de
evento, ele executa sua funo, interpretando e processando o evento
ocorrido.

Registrando os listeners
Como vimos, um dos passos do programador no processo de
tratamento de eventos fazer o registro dos listeners. Esse registro
feito da seguinte forma no cdigo:
void add<TipoDoListener>Listener(<TipoDoListener>Listener listenerObj)
Onde a parte <TipoDoListener> deve ser substitudo pelo Gerador
de Evento associado ao evento escolhido pelo programador, podendo
ser Key, Mouse, Focus, Component, Action etc.
Voc pode ter mais de um listener associado a um Gerador de
Evento.

CEC I E R J E X T E N S O E M G O V E R N A N A

185

Java Bsico e Orientao a Objeto

| Programao grfica em Java II

Quem so meus Objetos de Evento?


Um Objeto de Evento tem uma classe de evento que indica seu tipo.
Vamos ver as classes dos principais eventos associados a um processo de
evento programado em AWT e Swing, todos subclasses de AWTEvent:

Quem so meus Monitores de Evento ou listeners?


Monitores ou listeners de Evento so classes que implementam as
interfaces de listener e possuem mtodos que devem ser implementados
para tratar a ao que ocorreu por ocasio do evento.
Primeiramente, vamos ver as classes que implementam as interfaces listeners:

186 Governana: Gesto, Auditoria e Tecnologia da Informao

10
AULA

Vamos agora ver os mtodos que essas classes implementam:


ActionListener:

MouseListener:

CEC I E R J E X T E N S O E M G O V E R N A N A

187

Java Bsico e Orientao a Objeto

| Programao grfica em Java II

MouseMotionListener:

WindowListener:

188 Governana: Gesto, Auditoria e Tecnologia da Informao

10
AULA

Resumindo o processo e aplicando o Tratamento de Eventos


Ento vamos resumir os passos e aes necessrias para criar uma
aplicao grfica GUI com Tratamento de Eventos:
1. Crie a parte visual de sua aplicao, a GUI propriamente dita,
com seu container e seus componentes de botes, textfields,
combos, listas etc.;
2. Crie uma classe que implemente a interface listener apropriada.
Normalmente, o cdigo desse passo pode estar includo na
classe do passo 1;
3. Na classe criada no passo 2, sobrescrever todos os mtodos da
interface listener escolhida, sendo que caso exista algum mtodo
que no v tratar o evento, basta deix-lo vazio;
4. Registre o objeto listener no Gerador de Evento por meio do
mtodo add<TipoDoListener>Listener.
Vamos ver um primeiro exemplo que aplica todos esses passos
numa nica classe, para voc entender todos esses conceitos:

CEC I E R J E X T E N S O E M G O V E R N A N A

189

Java Bsico e Orientao a Objeto

| Programao grfica em Java II

190 Governana: Gesto, Auditoria e Tecnologia da Informao

10
AULA

Atividade prtica 1
2
3
No seu projeto do NetBeans em que voc est programando as classes 1
AWT e Swing, crie a classe anterior e procure observar todos os passos
do processo de criao de aplicaes grficas explicado na sesso anterior.
Por fim, execute e veja o resultado da sua primeira janela com tratamento de eventos.

CONCEITOS COMPLEMENTARES SOBRE CLASSES E


ORIENTAO A OBJETO
Vamos explicar mais alguns conceitos complementares sobre
classes e orientao a objeto aplicando-os a classes que implementam
programao grfica.
O primeiro conceito que vamos ver o de anonymous inner
class, que uma forma de simplificarmos uma classe j escrita por
meio da criao de classes internas sem as mesmas estarem declaradas;
funciona como se fosse uma chamada de mtodo em que voc coloca
sua implementao em outra parte por questo de organizao. Vamos
ver a mesma classe anterior, mas agora com uma implementao de
anonymous inner class:

CEC I E R J E X T E N S O E M G O V E R N A N A

191

Java Bsico e Orientao a Objeto

| Programao grfica em Java II

Como podemos observar, a classe ficou mais organizada a partir


do momento em que separamos a parte grfica do tratamento de eventos
propriamente dito; este foi apenas chamado atravs de method( ). Procure
sempre criar classes mais simples, claras e, principalmente, desacopladas
entre as funcionalidades e camadas.
192 Governana: Gesto, Auditoria e Tecnologia da Informao

10

Vamos ver agora como realizar o tratamento de um evento de

AULA

fechamento de janela por meio de um WindowListener (outro tipo de


listener):

CEC I E R J E X T E N S O E M G O V E R N A N A

193

Java Bsico e Orientao a Objeto

| Programao grfica em Java II

Tudo bem, at a tudo que j aprendemos, utilizamos o mtodo


addWindowListener para registrar o listener e o passamos como parmetro. Ento sobrescrevemos todos os mtodos da interface listener,
inclusive os que no iremos utilizar, deixando-os vazios simplesmente
com o { ... } (abre e fecha chaves). Funciona perfeitamente, mas ficou
um pouco feio, no ficou? Apesar de conseguirmos fazer tudo que queramos, ser que no conseguimos fazer nosso cdigo ficar um pouco
mais elegante, legvel, claro e simples? o que aprenderemos a fazer no
prximo exemplo:

194 Governana: Gesto, Auditoria e Tecnologia da Informao

10

Vejam como ficou muito mais simples. O que fizemos foi substi-

AULA

tuir o parmetro passado para o mtodo add<Tipo>Listener, em vez de


passarmos <Tipo>Listener, passamos uma classe Adapter no formato
<Tipo>Adapter (no nosso caso, como o mtodo add foi addWindowListener, a classe passada como parmetro foi WindowAdapter). Com isso
podemos implementar apenas o mtodo desejado. Veja que o preo disso
termos de saber o mtodo exato que queremos implementar, o que na
verdade no muito difcil e muito mais vantajoso diante da elegncia
que essa tcnica nos proporciona.
Uma ltima tcnica que iremos ensinar tambm pode ser utilizada
com as classes Adapter para organizar mais ainda o seu cdigo. Vamos
ver na classe a seguir uma implementao do conceito de Inner Class:

CEC I E R J E X T E N S O E M G O V E R N A N A

195

Java Bsico e Orientao a Objeto

| Programao grfica em Java II

Como podemos ver, em vez de utilizarmos um adapter como


parmetro do mtodo add, agora passamos uma classe que est definida
mais abaixo na nossa classe e, essa sim, estendendo um adapter.
Mas pode isso? Isso mesmo, em Java podemos ter uma classe dentro da outra. Alis, podemos ter quantas classes quisermos, mas somente
uma pode ser pblica e tem de ser aquela que leva o nome do arquivo
.java. Isso organiza mais ainda o nosso cdigo em algumas ocasies.

Atividade prtica 2
2
3
Implemente no seu projeto todas as classes que foram demonstradas 1
anteriormente e execute-as prestando muita ateno nos conceitos que
foram ensinados, tanto os de tratamento de eventos quanto os de organizao de classes e cdigo. Procure utiliz-los no seu dia a dia e mantenha seu cdigo sempre limpo
e elegante.

A IDE NETBEANS AUXILIANDO NA PROGRAMAO


GRFICA
Vamos fechar nossa aula de programao grfica ensinando um
assunto bem legal e que pode auxiliar muito no desenvolvimento de
janelas, principalmente no que se refere construo dos containers e
distribuio dos componentes, e faremos isso simplesmente arrastando-os
de uma paleta lateral utilizando a IDE como ferramenta RAD.
Num projeto comum Java, clique com o boto direito do mouse
sobre Pacotes de Cdigo-Fonte na rea Projetos da janela do lado
esquerdo da IDE e escolha Novo => Formulrio JFrame, conforme a
figura a seguir:

196 Governana: Gesto, Auditoria e Tecnologia da Informao

10
AULA

Depois d um nome a sua classe e clique no boto Finalizar:

CEC I E R J E X T E N S O E M G O V E R N A N A

197

Java Bsico e Orientao a Objeto

| Programao grfica em Java II

Veja que foi criada uma estrutura diferente na sua rea de edio
de cdigo, composta agora de uma rea de desenho j com o seu JFrame
desenhado e ao lado direito uma paleta com vrios componentes de AWT
e Swing para serem arrastados para o JFrame:

Perceba nas cinco elipses destacadas as reas mais importantes


desta estrutura: o boto que apresenta a rea de desenho, a rea de
desenho propriamente dita, o boto para mudar para o modo CdigoFonte, onde este apresentado, a paleta com os componentes e a rea
das propriedades do componente selecionado.
Veja a estrutura simples, mas rica em interfaces, que podemos
montar em segundos com a IDE NetBeans como RAD AWT/Swing:

F E R R A M E N TA RAD (R A P I D A P P L I C AT I O N D E V E L O P M E N T )
ou Desenvolvimento Rpido de Aplicao (em portugus), um modelo de processo de desenvolvimento de
software interativo e incremental que enfatiza um ciclo de desenvolvimento extremamente curto (entre 60 e 90
dias). O termo foi registrado por James Martin em 1991 e tem substitudo gradativamente o termo prototipao rpida, que j foi muito utilizado no passado.

198 Governana: Gesto, Auditoria e Tecnologia da Informao

10
AULA

Atividade prtica 3
2
3
Utilizando a IDE NetBeans como ferramenta RAD, crie uma estrutura 1
semelhante da figura anterior, de um JFrame com componentes de
envio de mensagem de e-mail. Alm das reas que foram explicadas, preste muita
ateno na rea chamada Inspetor no lado esquerdo inferior, onde mostrada a rvore
de todos os componentes utilizados na aplicao. Utilize a janela de propriedades para
modificar os atributos dos elementos visuais.

INFORMAES SOBRE FRUM


Vamos entrar no frum para discutir as dvidas de vocs.
Participem, troquem informaes. Tambm no percam o
chat da semana. O horrio e o dia sero colocados na pgina
do frum.

RESUMO

Vamos rever os principais conceitos vistos nesta aula:


Tratamento de Eventos a tcnica de capturar a ao que o usurio
realizou por meio da GUI, interpret-la identificando qual componente
foi acionado e por ltimo dar a resposta desejada ao daquele
componente, analisando, se for o caso, o contedo inserido pelo usurio
por meio desse componente.
Graphical User Interface uma interface com o usurio que permite a
interao com dispositivos digitais por meio de elementos grficos como
cones, botes e outros indicadores visuais, em contraste com a interface
de linha de comando.

CEC I E R J E X T E N S O E M G O V E R N A N A

199

Java Bsico e Orientao a Objeto

| Programao grfica em Java II

O Modelo de Tratamento de Eventos descreve o modo como sua classe


pode responder a uma interao do usurio. Esse modelo dividido em
trs componentes: Gerador de Evento, Monitor de Evento / Manipulador
(listener) e Objeto Evento.
Gerador de Evento (Event Source): o componente da interface que
origina o evento. Por exemplo, caso o usurio pressione o boto para
solicitar uma pesquisa, nesse caso o Gerador de Evento o boto que
foi clicado.
Monitor de Eventos/Manipulador (Event Listener/Handler): recebe as
informaes enviadas pelo Gerador de Evento processando a interao. Por
exemplo, no caso do usurio que apertou o boto, o Monitor de Eventos
pode receber uma informao que foi enviada e retornar uma mensagem
ao usurio relativa a essa recepo e tratamento.
Objeto Evento (Event Object): quando um evento ocorre, o pressionar de
um boto, por exemplo, um Objeto Evento criado. Ele contm todas as
informaes necessrias sobre o evento gerado. Um exemplo seria o clicar
do boto direito do mouse sobre um boto.
Quando programamos um evento que pode ocorrer, um listener (Monitor
de Eventos) deve ser registrado pelo Gerador de Evento, pois assim esse
listener ir receber as informaes do evento que ocorrer nesse Gerador
de Evento. Uma vez registrado, esse listener fica aguardando a gerao
de evento sobre esse componente gerador do evento.
Quando algum evento ocorre no gerador do evento, um Objeto Evento
criado, ele o descritor do evento. Aps isso, o evento disparado pelo
gerador para os listeners registrados.
Quando um listener recebe uma notificao de um gerador de evento, ele
executa sua funo, interpretando e processando o evento ocorrido.
Resumidamente, os passos e aes necessrias para criar uma aplicao
grfica GUI com tratamento de eventos so:
1. Crie a parte visual de sua aplicao, a GUI propriamente dita com
seu container e seus componentes de botes, textfields, combos,
listas etc.;

200 Governana: Gesto, Auditoria e Tecnologia da Informao

10
AULA

2. Crie uma classe que implemente a interface listener apropriada.


Normalmente o cdigo deste passo pode estar includo na classe do
passo 1.
3. Na classe criada no passo 2, sobrescrever todos os mtodos da
interface listener escolhida, sendo que, caso exista algum mtodo
que no v tratar o evento, basta deix-lo vazio.
4. Registre o objeto listener no Gerador de Evento atravs do mtodo
add<TipoDoListener>Listener.

CEC I E R J E X T E N S O E M G O V E R N A N A

201

Apndice

A
Meta da aula

objetivos

Criar e configurar um ambiente de desenvolvimento de aplicaes Java.

Aps o estudo do contedo deste apndice, esperamos que voc seja capaz de:
1

efetuar o download do Java Development Kit


(JDK);

realizar a instalao do Java Development Kit


(JDK);

realizar as configuraes das variveis de


ambiente do sistema operacional, necessrias
para o desenvolvimento dos programas em
Java.

Java Bsico e Orientao a Objeto

| Apndice A

INTRODUO
Neste apndice, voc ser acompanhado nas atividades iniciais necessrias para
a instalao e configurao do seu ambiente de desenvolvimento Java.
Isso muito importante, pois somente com muita prtica voc vai ficar seguro
para desenvolver aplicaes cada vez mais profissionais, at se tornar um grande
desenvolvedor Java, e para isso voc precisa ter um ambiente de desenvolvimento adequado e corretamente configurado.
Vamos antes explicar alguns conceitos importantes.
A linguagem Java tem como uma das principais caractersticas no realizar
execuo de programas diretamente na mquina do computador, como ocorre
com C e Pascal, mas sim numa mquina intermediria chamada M Q U I N A

MQUINA
V I R T U A L J AVA
(JVM J AVA
VIRTUAL
MACHINE)
um programa
que carrega e executa os aplicativos
Java, convertendo
os bytecodes em
cdigo executvel
de mquina. A JVM
responsvel pelo
gerenciamento dos
aplicativos medida
que so executados.
Graas Mquina
Virtual Java, os
programas escritos
em Java podem
funcionar em qualquer plataforma de
hardware e software
que possua uma
verso da JVM, tornando essas aplicaes independentes
da plataforma em
que funcionam.

V I R T U A L J A V A (JVM J A V A V I R T U A L M A C H I N E ).
Sendo assim, tanto para voc que est desenvolvendo o aplicativo em Java,
quanto para aquele que est apenas utilizando-o, ser necessria a instalao
da JVM, alm de mais algumas tarefas, para que o aplicativo funcione corretamente.
Para o usurio final (aquele que apenas utilizar o programa escrito em Java),
ser necessrio a JVM, alm de um conjunto de aplicativos e bibliotecas para
interpretar corretamente uma aplicao. A esse conjunto mnimo que deve
ser baixado e instalado no computador de quem est utilizando um aplicativo
Java damos o nome de Java Runtime Environment (JRE). Uma importante
concluso de que no faz sentido (nem existe fisicamente para download) a
instalao unicamente da JVM; como foi informado, o ambiente mnimo para
a execuo de um aplicativo Java deve ter instalado o JRE.
Alm do JRE, voc dever instalar uma srie de programas que iro auxiliar
no desenvolvimento, como o compilador Java (javap), o compactador (jar) e
o gerador de documentao (javadoc), entre outros, alm das bibliotecas de
desenvolvimento. A esse conjunto necessrio para voc trabalhar damos o nome
de Java Development Kit (JDK). Quando fazemos o download e instalamos o
JDK, j baixamos automaticamente e realizamos a instalao do JRE (no
necessrio ser feito separadamente). Para efeito de comparao, na verso
mais atual dos pacotes o JRE tem por volta de 16Mb, enquanto o JDK tem
em torno de 75Mb.

204 Governana: Gesto, Auditoria e Tecnologia da Informao

APNDICE

DOWNLOAD DO JAVA DEVELOPMENT KIT (JDK)


Comece ento a preparar o ambiente para o desenvolvimento de
sistemas em Java. A primeira coisa realizar o download do JDK, preferencialmente na sua verso mais atual; assim, voc ter instalado a JVM
alm dos aplicativos e bibliotecas necessrios ao desenvolvimento.
Ento, vamos l! No seu computador, faa o download do JDK
diretamente do site da Sun Microsystems em:
http://java.sun.com/javase/downloads/index.jsp
Passo 1
Nesta pgina, clique no boto Download no item Java SE Development Kit (JDK):

CEC I E R J E X T E N S O E M G O V E R N A N A

205

Java Bsico e Orientao a Objeto

| Apndice A

Passo 2
Selecione ento a plataforma e aceite as condies de licena:

Passo 3
Selecione o arquivo e clique no link azul do executvel:

206 Governana: Gesto, Auditoria e Tecnologia da Informao

Passo 4

APNDICE

Na janela que ir se abrir, clique para salvar o arquivo:

INSTALAO DO JAVA DEVELOPMENT KIT (JDK)


Passo 1
V ao local onde o JDK foi baixado e d um duplo clique no cone
para iniciar o executvel da instalao:

CEC I E R J E X T E N S O E M G O V E R N A N A

207

Java Bsico e Orientao a Objeto

| Apndice A

Passo 2
Ser aberta uma tela que faz a verificao do sistema. Depois,
passa automaticamente para a tela que apresenta as condies de licena
do JDK. Clique no boto Accept:

208 Governana: Gesto, Auditoria e Tecnologia da Informao

Passo 3

APNDICE

Na tela seguinte, voc ir definir sua configurao do sistema;


ali poder selecionar os pacotes que sero instalados (aconselhamos
deixar a configurao padro, que instala todos os pacotes) e o local de
instalao do Java.

Memorize o local de instalao do Java, pois esse endereo ser


utilizado na configurao das variveis de ambiente.

Aps isso, clicando no boto Next a instalao propriamente dita


ser iniciada; aguarde alguns minutos.

CEC I E R J E X T E N S O E M G O V E R N A N A

209

Java Bsico e Orientao a Objeto

| Apndice A

Como foi explicado na Introduo, a instalao do JRE feita


dentro da instalao do JDK. Nesse momento voc ver uma tela como
a que est a seguir (caso queira, modifique o local de instalao):

Passo 4
Aguarde mais alguns minutos. Ao clicar novamente em Next e ao
ser finalizada a instalao, voc ver uma tela como a que est a seguir,
o que significa que deu tudo certo:

210 Governana: Gesto, Auditoria e Tecnologia da Informao

APNDICE

CONFIGURAO DAS VARIVEIS DE AMBIENTE


Agora que voc j baixou e instalou o JDK, ainda falta uma ltima
tarefa. Configure as variveis de ambiente do sistema operacional para
que ele possa encontrar os caminhos dos aplicativos necessrios para
executar o programa em Java, alm das classes que so carregadas em
tempo de execuo.
Vamos fazer a configurao considerando o sistema operacional
Windows XP Professional SP2.
Passo 1
Clique nos botes Iniciar => Configuraes => Painel de Controle
e d um duplo clique no cone Sistema para chegar at a janela Propriedades do sistema.

CEC I E R J E X T E N S O E M G O V E R N A N A

211

Java Bsico e Orientao a Objeto

| Apndice A

212 Governana: Gesto, Auditoria e Tecnologia da Informao

Passo 2

APNDICE

Nessa janela, selecione a aba Avanado e, na parte inferior dela,


selecione Variveis de ambiente

Veja que nessa janela temos as variveis configuradas para o


usurio corrente e para o sistema, que sero aplicadas a todos os usurios.
Prefira configurar as variveis do sistema, a menos que tenha alguma
regra de segurana na sua rede que impea.

CEC I E R J E X T E N S O E M G O V E R N A N A

213

Java Bsico e Orientao a Objeto

| Apndice A

Passo 3
O primeiro passo, nessa janela, a criao de uma varivel do
sistema que, por conveno, recebe o nome de JAVA_HOME, que, como o
prprio nome diz, o local de instalao do JDK. Caso tenha aceitado as
configuraes padro do sistema, essa varivel ter o valor: C:\Arquivos
de programas\Java\jdk1.6.0_12 (onde 1.6.0_12 a verso do JDK que
foi instalada). Para cri-la, clique no boto Nova e insira o nome da
varivel e seu respectivo valor na janela que ir se abrir.

214 Governana: Gesto, Auditoria e Tecnologia da Informao

Aps preencher os campos, clique no boto OK e veja se a varivel

APNDICE

foi criada como varivel do sistema.

Passo 4
Aps isso, voc criar outra varivel do sistema, chamada CLASSPATH, cujo valor unicamente um ponto: .
Para isso, clique mais uma vez no boto Nova e insira os valores
dos campos conforme a figura a seguir:

CEC I E R J E X T E N S O E M G O V E R N A N A

215

Java Bsico e Orientao a Objeto

| Apndice A

Clique no boto OK e veja se a varivel criada aparece corretamente nas variveis do sistema:

216 Governana: Gesto, Auditoria e Tecnologia da Informao

Passo 5

APNDICE

A ltima varivel no ser criada, mas sim editada, uma vez que
j foi criada por ocasio da instalao do Windows. Essa varivel a
Path, e para isso voc deve selecion-la e em seguida clicar no boto
Editar.

Aparecer a varivel j existente e com vrios valores j


preenchidos.

CEC I E R J E X T E N S O E M G O V E R N A N A

217

Java Bsico e Orientao a Objeto

| Apndice A

Passo 6
Cuidadosamente, v com o cursor at o fim do campo Valor
da varivel, insira um ; seguido de %JAVA_HOME%\bin e clique
em OK.

Clique em OK. Est finalizada a configurao das variveis de


ambiente no Windows XP Professional SP2. Se tiver dvidas, v ao
frum da disciplina e solicite esclarecimento ao tutor.

TESTANDO A INSTALAO E AS CONFIGURAES


Vamos ver se deu realmente tudo certo por meio de dois testes
bem simples.

218 Governana: Gesto, Auditoria e Tecnologia da Informao

Passo 1

APNDICE

Abra o Prompt de Comando por meio da sequncia Iniciar =>


Programas => Acessrios => Prompt de comando.
Passo 2
Digite o comando java version e tecle Enter. Aparecer a verso
do Java como na figura a seguir:

Passo 3
Digite agora o comando javac version e tecle Enter novamente.
Aparecer a verso do compilador Java como na figura que se segue:

CEC I E R J E X T E N S O E M G O V E R N A N A

219

Java Bsico e Orientao a Objeto

| Apndice A

Se os dois testes funcionaram no seu computador, isso significa


que voc j est com o ambiente instalado e configurado para iniciar o
desenvolvimento de sistemas em Java. Parabns!
Caso tenha ocorrido algum problema, reveja cuidadosamente os
passos dos itens anteriores para verificar se deixou de efetuar alguma
configurao corretamente. Se alguma dvida persistir, v ao frum da
disciplina para esclarec-la.
Agora que voc j tem os softwares do Java instalados e configurados, voc pode comear a programar, seja da forma mais simples, por
meio de um editor de texto, ou de um ambiente mais sofisticado, como
uma IDE. Alis, voc deve estar se perguntando o que uma IDE.
Todos esses detalhes voc ver no APNDICE B. Por enquanto,
retorne ao ponto onde havamos parado na Aula 1 e continue seus
estudos.

220 Governana: Gesto, Auditoria e Tecnologia da Informao

Apndice

B
Metas da aula

objetivos

Criar e configurar um ambiente de desenvolvimento de aplicaes Java.

Aps o estudo do contedo deste apndice, esperamos que voc seja capaz de:
1

efetuar o download do Ambiente de Desenvolvimento Integrado (IDE) NetBeans;

realizar a instalao do NetBeans;

criar um projeto e test-lo por meio da IDE.

Java Bsico e Orientao a Objeto

| Apndice B

INTRODUO
Ao ter desempenhado as atividades do Apndice A, voc instalou e configurou
o JDK. Agora, vamos terminar os trabalhos de montagem do nosso ambiente
para desenvolvimento Java. Est pronto?
Ao escrever programas em Java, voc pode utilizar qualquer editor de texto,
como Bloco de Notas, Wordpad, Vi, Emacs etc. Entretanto, se voc deseja ter
mais facilidade e produtividade, pode utilizar ferramentas mais apropriadas
para a programao, as chamadas IDEs (Integrated Development Environment) ou Ambiente de Desenvolvimento Integrado. Tais ferramentas
possuem vrias funcionalidades para auxili-lo no preenchimento automtico
de cdigo, editor de cdigo, wizards para criao automtica de classes, controle de verses, ferramentas de modelagem, conexo com banco de dados,
gerenciamento de servidores e muitas outras funcionalidades que auxiliam na
programao.

Se voc for um programador iniciante, deve ter cuidado para


que a utilizao de IDEs no prejudique o aprendizado da
tecnologia. Assim, utilize bem as facilidades das ferramentas
para que isso possa auxili-lo a ganhar produtividade na correo e debug dos cdigos, mas nunca como uma mquina de
produzir programas.

Existem muitas opes de escolha de IDEs, algumas pagas, outras gratuitas.


Os mais famosos e utilizados so Eclipse e NetBeans, ambos gratuitos. Apesar
de serem de empresas diferentes, seguem a mesma linha no desenvolvimento
de suas funcionalidades, e a curva de aprendizado quando se sai de uma IDE
para outra no to grande. Neste curso, iremos utilizar a IDE oficial da Sun,
o famoso NetBeans, que iremos estudar melhor nas prximas sesses.

222 Governana: Gesto, Auditoria e Tecnologia da Informao

APNDICE

DOWNLOAD DO NETBEANS
Primeiramente, voc precisa fazer o download do NetBeans diretamente do site. Existem diversas verses; a mais nova a 6.5. As verses
atuais esto muito grandes e pesadas devido quantidade de pacotes que
j vm na plataforma, mas que muitas vezes no so importantes para
o iniciante e mesmo para o desenvolvedor intermedirio; sendo assim,
aconselhamos fazer o download de uma verso mais leve e estvel, suficiente para realizar todos os trabalhos sem comprometer a performance
do computador utilizado. Vamos, ento, utilizar o NetBeans 5.5.1.
Passo 1
No seu computador, acesse http://www.netbeans.info/downloads/
all.php?b_id=3095 e escolha a verso em portugus, de acordo com seu
sistema operacional. No exemplo, optamos pelo Windows. Aguarde a
janela de download do arquivo e escolha Salvar.

CEC I E R J E X T E N S O E M G O V E R N A N A

223

Java Bsico e Orientao a Objeto

| Apndice B

INSTALAO DO NETBEANS
Passo 2
Uma vez feito o download, v ao local onde est o executvel e
d um duplo clique no cone do programa:
Ir aparecer a tela inicial do instalador do NetBeans. Clique em Avanar:

Aceite os termos de contrato da licena:

224 Governana: Gesto, Auditoria e Tecnologia da Informao

Passo 3

APNDICE

A prxima tela apresenta o local de instalao da ferramenta.


Caso queira alterar o local, clique em Procurar; quando tiver escolhido
o local, clique em Avanar:

Passo 4
Na prxima tela, escolha o JDK mais adequado ao seu desenvolvimento, caso tenha mais de um instalado no seu computador. Clique
ento em Avanar:

CEC I E R J E X T E N S O E M G O V E R N A N A

225

Java Bsico e Orientao a Objeto

| Apndice B

Aparecer ento a ltima tela, com a confirmao de alguns dados


antes de iniciar a instalao propriamente dita:

Aguarde a instalao.

226 Governana: Gesto, Auditoria e Tecnologia da Informao

Se tudo der certo, voc ver a tela final da instalao. Basta agora

APNDICE

clicar em Concluir:

CRIAO E TESTE DE PROJETO


Agora que voc tem seu ambiente configurado e com a IDE
instalada, vamos test-la criando um primeiro projeto e executando a
primeira classe.
Passo 1
Para inicializar o NetBeans, d um duplo clique no cone que foi
criado na rea de trabalho aps a instalao ou inicialize a ferramenta
por meio do caminho Iniciar => Programas => NetBeans 5.5.1 => NetBeans IDE:

CEC I E R J E X T E N S O E M G O V E R N A N A

227

Java Bsico e Orientao a Objeto

| Apndice B

Aguarde a abertura da IDE (enquanto carregada, aparece a tela


a seguir):

Ser ento mostrado o ambiente grfico da ferramenta com suas


diversas reas, como mostrado na figura a seguir.

228 Governana: Gesto, Auditoria e Tecnologia da Informao

Passo 2

APNDICE

Em toda IDE, qualquer programa em Java deve estar associado


a um projeto. Crie ento o primeiro projeto, selecionando Arquivo =>
Novo Projeto.

Na caixa de dilogo que abrir, escolha na janela Categoria a opo


Geral e na janela Projetos a opo Aplicao Java.

CEC I E R J E X T E N S O E M G O V E R N A N A

229

Java Bsico e Orientao a Objeto

| Apndice B

Clique no boto Prximo e na caixa de dilogo seguinte preencha o Nome do Projeto com Meu Projeto Java e, ao lado da checkbox
Criar Classe Principal, defina seu nome como Hello e clique no boto
Finalizar.

Na janela que se abrir, a IDE insere um cdigo bsico de todo


programa Java, completado com algumas informaes inseridas durante a
criao do projeto. Complete esse cdigo com a linha a seguir, conforme
mostrado na figura:
System.out.println(Este nosso primeiro programa);

230 Governana: Gesto, Auditoria e Tecnologia da Informao

Passo 3

APNDICE

Ao mandar executar um programa, a IDE automaticamente compila e interpreta o cdigo, mostrando o resultado dos comandos, caso
seja uma aplicao via console (que ser o nosso caso, por enquanto),
na janela abaixo do cdigo.
Para executar o cdigo, voc deve selecionar, na janela do lado
esquerdo superior, a janela Projetos e depois o programa que deseja
executar, e clicar com o boto direito do mouse selecionando a opo
Executar Arquivo.

CEC I E R J E X T E N S O E M G O V E R N A N A

231

Java Bsico e Orientao a Objeto

| Apndice B

Com isso, voc j tem tudo instalado e configurado para continuar seu aprendizado. Alm disso, voc j sabe como manipular as
ferramentas necessrias e pode voltar para o ponto em que paramos na
Aula 1 para dar continuidade aos estudos.
Quanto IDE NetBeans, fique tranquilo. Se estiver parecendo
muita informao, com o tempo e com os exerccios voc vai ficar mais
seguro, e os procedimentos de manipulao dos projetos vo se tornar
mais naturais.
No se esquea: se tiver alguma dvida ou dificuldade, mande
uma mensagem para o frum. Sempre estaremos prontos para debater
suas dvidas com seus colegas de aula.

232 Governana: Gesto, Auditoria e Tecnologia da Informao

Referncias

Java Bsico e Orientao a Objeto

CEDERJ

233

Introduo

BARUQUE, L. Elgorm: um modelo de referncia para governana de e-learning. 2004.


Tese (Doutorado) Departamento de Informtica, Pontifcia Universidade Catlica do
Rio de Janeiro, Rio de janeiro, 2004.
MARTINS, F. M. Java: tecnologia e introduo linguagem, 2006. Disponvel em <http://
sim.di.uminho.pt/disciplinas/poo/0708/CAP2_TECNOLOGIA_JAVA5.pdf>. Acesso em:
jun. 2009.
OLIVEIRA JNIOR, D. A. Comunidades de prtica: um estudo dos grupos de usurios
Java brasileiros. 2005. Dissertao (Mestrado) Programa de Ps-Graduao em Gesto
do Conhecimento e da Tecnologia da Informao, Universidade Catlica de Braslia, Braslia, 2005. Disponvel em: <http://www.dfjug.org/DFJUG/DissertacaoDaniel%20v6.1.pdf>.
Acesso em: jun. 2009.

Aula 1

Este curso baseado no Java Education and Development Initiative


AOLI. Tecnologia Web. Disponvel em: <http://www.aoli.com.br/dicionarios.
aspx?palavra=Cache>. Acesso em: 22 abr. 2009.
GOOGLE. Disponvel em: <http://www.google.com.br>. Acesso em: 22 abr. 2009.
JAVA NET. The Source for Java Technology Collaboration. Disponvel em: <https://jedi.
dev.java.net/>. Acesso em: 22 abr. 2009.
NETBEANS. Disponvel em: <http://www.netbeans.org/>. Acesso em: 22 abr. 2009.
SUN. Sum Developer Network. Online Courses. Tutorials and online training. Disponvel
em: <http://java.sun.com/developer/onlineTraining/>. Acesso em: 22 abr. 2009.
SUN. Sum Developer Network. The Source for java developers. Disponvel em: <http://
java.sun.com/>. Acesso em: 22 abr. 2009.
Sun Microsystems. In: Wikipedia: a enciclopdia livre. Disponvel em: <http://pt.wikipedia.
org/wiki/Sun_Microsystems>. Acesso em 22 abr. 2009.
THREAD (desambiguao). In: Wikipedia: a enciclopdia livre. Disponvel em: <http://
pt.wikipedia.org/wiki/Thread>. Acesso em: 22 abr. 2009.
WIKIPEDIA. Disponvel em: <http://www.pt.wikipedia.org>. Acesso em: 22 abr. 2009.

234

CEDERJ

Aula 2

Este curso baseado no Java Education and Development Initiative


JAVA Net: the source for Java Technology Collaboration. Jedi Project. Disponvel em:
<https://jedi.dev.java.net/>. Acesso em: 18 maio 2009.
NETBEANS. Disponvel em: <http://www.netbeans.org>. Acesso em: 18 maio 2009.
SUN Developer Networker. Online courses: tutorials and online training. Disponvel em:
<http://java.sun.com/developer/onlineTraining>. Acesso em: 18 maio 2009.
SUN Developer Networker. The spource for Java developers. Disponvel em: <http://java.
sun.com>. Acesso em: 18 maio 2009.

Aula 3

Este curso baseado no Java Education and Development Initiative


JAVA Net: the source for Java technology collaboration. Jedi Project. Disponvel em:
<https://jedi.dev.java.net/.>. Acesso em: 07 maio 2009.
NETBEANS. Disponvel em: <http://www.netbeans.org/>. Acesso em: 07 maio
2009.
SUN Developer Networker. Online courses: tutorials and online training. Disponvel
em: <http://java.sun.com/developer/onlineTraining/>. Acesso em: 07 maio 2009.
SUN Developer Networker. The spource for Java developers. Disponvel em: <http://
java.sun.com/>. Acesso em: 07 maio 2009.

Aula 4

Este curso baseado no Java Education and Development Initiative


JAVA Net: the source for Java technology collaboration. Jedi Project. Disponvel em:
<https://jedi.dev.java.net/.>. Acesso em: 07 maio 2009.
NETBEANS. Disponvel em: <http://www.netbeans.org/>. Acesso em: 07 maio
2009.
SUN Developer Networker. Online courses: tutorials and online training. Disponvel
em: <http://java.sun.com/developer/onlineTraining/>. Acesso em: 07 maio 2009.

CEDERJ

235

SUN Developer Networker. The spource for Java developers. Disponvel em: <http://
java.sun.com/>. Acesso em: 07 maio 2009.
Aula 5

Este curso baseado no Java Education and Development Initiative


JAVA Net: the source for Java technology collaboration. Jedi Project. Disponvel em:
<https://jedi.dev.java.net/.>. Acesso em: 07 maio 2009.
NETBEANS. Disponvel em: <http://www.netbeans.org/>. Acesso em: 07 maio
2009.
SUN Developer Networker. Online courses: tutorials and online training. Disponvel
em: <http://java.sun.com/developer/onlineTraining/>. Acesso em: 07 maio 2009.
SUN Developer Networker. The spource for Java developers. Disponvel em: <http://
java.sun.com/>. Acesso em: 07 maio 2009.

Aula 6

Este curso baseado no Java Education and Development Initiative


JAVA Net: the source for Java technology collaboration. Jedi Project. Disponvel em:
<https://jedi.dev.java.net/.>. Acesso em: 07 maio 2009.
NETBEANS. Disponvel em: <http://www.netbeans.org/>. Acesso em: 07 maio
2009.
SUN Developer Networker. Online courses: tutorials and online training. Disponvel
em: <http://java.sun.com/developer/onlineTraining/>. Acesso em: 07 maio 2009.
SUN Developer Networker. The spource for Java developers. Disponvel em: <http://
java.sun.com/>. Acesso em: 07 maio 2009.

Aula 7

Este curso baseado no Java Education and Development Initiative


JAVA Net: the source for Java technology collaboration. Jedi Project. Disponvel em:
<https://jedi.dev.java.net/.>. Acesso em: 07 maio 2009.
NETBEANS. Disponvel em: <http://www.netbeans.org/>. Acesso em: 07 maio 2009.

236

CEDERJ

SUN Developer Networker. Online courses: tutorials and online training. Disponvel em:
<http://java.sun.com/developer/onlineTraining/>. Acesso em: 07 maio 2009.
SUN Developer Networker. The spource for Java developers. Disponvel em: <http://
java.sun.com/>. Acesso em: 07 maio 2009.
Aula 8

Este curso baseado no Java Education and Development Initiative


JAVA Net: the source for Java technology collaboration. Jedi Project. Disponvel em:
<https://jedi.dev.java.net/.>. Acesso em: 07 maio 2009.
NETBEANS. Disponvel em: <http://www.netbeans.org/>. Acesso em: 07 maio 2009.
SUN Developer Networker. Online courses: tutorials and online training. Disponvel em:
<http://java.sun.com/developer/onlineTraining/>. Acesso em: 07 maio 2009.
SUN Developer Networker. The spource for Java developers. Disponvel em: <http://
java.sun.com/>. Acesso em: 07 maio 2009.
Aula 9

Este curso baseado no Java Education and Development Initiative


JAVA Net: the source for Java technology collaboration. Jedi Project. Disponvel em:
<https://jedi.dev.java.net/.>. Acesso em: 07 maio 2009.
NETBEANS. Disponvel em: <http://www.netbeans.org/>. Acesso em: 07 maio
2009.
SUN Developer Networker. Online courses: tutorials and online training. Disponvel
em: <http://java.sun.com/developer/onlineTraining/>. Acesso em: 07 maio 2009.
SUN Developer Networker. The spource for Java developers. Disponvel em: <http://
java.sun.com/>. Acesso em: 07 maio 2009.

Aula 10

Este curso baseado na Java Education and Development Initiative


JAVA. NET: The Source Of Java Techonology Collaboration. Disponvel em: <https://
jedi.dev.java.net/>. Acesso em: 05 ago. 2009.

CEDERJ

237

NET BEANS IDE 6.7. Disponvel em: <http://www.netbeans.org/>. Acesso em: 05


ago. 2009.
SUN DEVELOPER NETWORK (SDN). Disponvel em: <http://java.sun.com/>. Acesso
em: 05 ago. 2009.
SUN DEVELOPER NETWORK (SDN). Java.sun.com: the source for Java developers.
Disponvel em: <http://java.sun.com/developer/onlineTraining>. Acesso em: 05 ago.
2009.

238

CEDERJ

ISBN 978-85-7648-648-0

9 788576 486480