Você está na página 1de 77

Programao

Orientada a
Objetos I

Uma abordagem com


Java

ROSICLEIA FRASSON DE SOUZA


INTRODUO A LINGUAGEM DE PROGRAMAO

OBJETIVOS

compreender o que so programas de computador;


diferenciar hardware de software;
conhecer os principais componentes dos computadores e suas
funcionalidades;
conhecer a linguagem dos processadores;
diferenciar tradutores e interpretadores;
compreender como feita a escolha de uma linguagem de programao;

1. O que so programas de computadores

Computadores so mquinas capazes de realizar uma infinidade de


tarefas em uma velocidade e preciso muito melhor do que ns humanos.
Atualmente, eles esto presentes nos mais diversos segmentos:

indstria;
negcios;
telecomunicaes;
medicina;
e na vida pessoal de bilhes de pessoas.

Na era em que estamos, seria incogitvel viver sem essas poderosas


mquinas. Porm, os computadores no conseguem fazer nada sozinhos, eles
precisam ser orientados para executar qualquer tarefa.
O conjunto de orientaes dadas ao computador, para que o mesmo
execute uma tarefa especfica, chamado de programa de computador ou
software.

2. Hardware X Software

O hardware a parte fsica do computador. composta pelos


componentes eltricos, eletrnicos, chips, enfim tudo o que fsico no
computador.
J o software o que no palpvel, ou seja, a imensa cadeia de
instrues que faz com que o computador seja uma ferramenta til.

3. Componentes de um computador

Figura 1: Componentes de um computador


Fonte: TI na net. Disponvel em: <http://tinanet2011.blogspot.com.br/2011/04/1-mostre-graficamente-os-
principais.html>. Acesso em 12 jan 2013.

O hardware de um computador composto por vrios componentes


e cada um tem uma responsabilidade.
Os componentes de entrada/sada tem a funo de comunicar o
computador com o usurio e o usurio com o computador.
A memria secundria serve para armazenar grandes quantidades de
dados e evitar que estes se percam com o desligamento do computador.
A CPU (Unidade Central de Processamento) o crebro do
computador. Ela a responsvel por organizar todas as funes executadas pelo
mesmo. Cabe a CPU executar as instrues dadas pelos programas de
computador. Para executar os programas, o processador utiliza a memria RAM
para armazenar as informaes necessrias a execuo dos programas.

4. Linguagem do processador

O processador um circuito eletrnico digital. Deste modo, ele


consegue processar informaes apenas compostas por bits, ou seja apenas 0 e 1.
Isto se aplica tambm as instrues dadas nos softwares. Para que o
processador possa entender, as instrues devem ser passadas em linguagem de
mquina, apenas contendo nmeros binrios.
Os primeiros computadores criados eram programados apenas
utilizando linguagem de mquina. Para inserir as instrues nestes, era necessrio
uma grande quantidade de pessoas que percorriam a gigantesca mquina
acionando ou desligando interruptores.
Era um processo muito demorado e sujeito a muitos erros. Por esse
motivo, surgiram as linguagens de programao, que so mais prximas as
linguagens humanas.

5. Interpretadores e Compiladores

Para que os processadores possam executar as instrues escritas em


linguagens de programao, necessrio traduzir as instrues para a linguagem
de mquina.A tarefa de converso feita por um programa de computador que
recebe as instrues de alto nvel e as converte para instrues binrias. Existem
alguns mtodos para efetuar o processo de traduo. Os mais conhecidos so
citados abaixo:

Interpretador: Quando um interpretador utilizado para efetuar a


converso, o mesmo vai percorrendo as instrues e medida em que vai
interpretando cada instruo, vai traduzindo para o processador, que
ento executa cada ao correspondente. Em cada execuo do programa
necessrio o uso do interpretador. O uso de um interpretador torna a
execuo do programa mais lenta.
Compilador: Utilizando um compilador, as instrues das linguagens de
programao geram um outro cdigo em linguagem de mquina. A
execuo do programa feita com o arquivo compilado, no sendo mais
necessrio o uso do compilador. A execuo de programas compilados
mais rpida, porm, o programa deve ser compilado para cada tipo de
processador e de sistema operacional.

6. Linguagens de programao

Uma linguagem de programao um meio padronizado de escrever


instrues para um processador. Existem uma infinidade de linguagens de
programao e cada uma delas, foi construda com um propsito diferente.
A escolha de uma linguagem de programao deve estar condicionada
ao tipo de problema que se quer resolver. Segundo LUZ (2009), a escolha de uma
linguagem de programao deve ser guiada por alguns princpios:
Partindo do princpio de que uma linguagem deve facilitar a
comunicao com outras pessoas e ajudar voc a expressar seu
conhecimento, vamos entrar no contexto do desenvolvimento de
software e colocar em discusso um tema que gera muita confuso,
acaba com longas amizades e at destri casamentos.
Qual a melhor linguagem de programao?
Achar uma resposta para essa pergunta muitas vezes passa por
encontrar todo tipo de argumento para defender a linguagem que
voc usa o que pode ser um grande erro se fechar seus olhos para
tecnologias que podem torn-lo um programador melhor.
O objetivo de uma linguagem de programao permitir que um
programador possa resolver problemas computacionais criando um
conjunto de instrues que seguem um determinado padro, por meio
do qual se representam aes executveis por um computador.
Isso pode fazer com que muitos pensem que a melhor linguagem
aquela que permite que um desenvolvedor possa se ?comunicar? da
melhor forma com o computador. Outro grande erro. Para isso
existem os compiladores.
Quem j trabalhou em um projeto razovel, j sofreu com problemas
durante a reutilizao do cdigo comentrios que no comentam
nada, cdigos macarrnicos e outros fatores que atrasam qualquer
projeto de criao de software.
No existe nada mais estressante para um desenvolvedor do que
perder horas, dias, semanas ou meses tentando entender um cdigo
que outro programador criou. Com isso voc perde muito tempo de
desenvolvimento, tentando ler cdigos e corrigir bugs e perdendo
produtividade.
Pensando dessa forma, uma linguagem de programao deve
melhorar a comunicao entre desenvolvedores, facilitando a criao
de cdigos mais limpos, claros e que podem ser lidos facilmente por
outro programador a qualquer momento.
Portanto ser o mais prximo de uma linguagem humana e intuitiva
uma grande qualidade e deve ser considerada na escolha de uma
linguagem para comear a programar.
Ento para de enrolar e diz logo qual devo escolher!
Sinto desapont-lo, mas essa pergunta no tem uma resposta
predefinida, pois depende de alguns fatores que esto totalmente
incorporados relao do programador com a linguagem.
Voc deve escolher a linguagem que faa de voc um programador
melhor, que se divirta programando, que aumente sua produtividade
e o anime a se aprofundar nos conceitos e na filosofia por trs dela.
Mas cuidado para nunca ficar limitado a no conhecer as novas
tecnologias que surgirem. um erro grave que frequentemente
acontece no mundo do desenvolvimento de software.
Antes de concluir o raciocnio, um exemplo interessante de que a
linguagem melhor a que fornece a possibilidade de se expressar
melhor, acontece quando imaginamos um possvel bate papo entre
um brasileiro e um americano, por exemplo.
Muitas pessoas podem achar que o correto o brasileiro falar ingls,
outras acham que o americano quem deve falar portugus e alguns
que vai depender se o brasileiro est nos Estados Unidos ou se o
americano est no Brasil.
Mas a forma como o brasileiro e o americano devem se comunicar a
forma em que ambos consigam se expressar de forma mais adequada
e confortvel, seja ela falar ingls, portugus ou tentar uma
comunicao por mmica.
Portanto, procurem conhecer bem a linguagem que voc programa ou
est interessado em comear a programar e a comunidade por trs
dela. Procure uma linguagem que te possibilite desenvolver seu
conhecimento da melhor e menos dolorosa forma possvel. Caso voc
consiga isso, ela ideal.
Na verdade, a linguagem pouco importa. Voc, o programador,
quem faz toda a diferena no final das contas.

7. Por que Java?

Em um curso de desenvolvimento, a escolha de uma linguagem de


programao um processo bem delicado. Java foi escolhida por atender
alguns requisitos. Dentre eles, pode-se citar:

Facilidade de aprendizado;
Versatilidade;
Popularidade;
Amplo mercado de trabalho;
Segurana;
Inmeros frameworks;
Grande aceitao nas companhias;
Gratuidade e
Abundncia de informaes;

Alm disso, os conceitos utilizados em Java ajudam a entender


melhor outras linguagens e tecnologias. O que deve ficar claro que o objetivo
do Java no o de construir sistemas pequenos, com um ou dois
desenvolvedores, para estes existem linguagens de programao mais
produtivas como cita CAELUM (2012):
O foco da plataforma outro: aplicaes demdio a grande porte,
onde o time de desenvolvedores tem vriaspessoas e sempre pode vir
amudar e crescer. No tenha dvidas que criar a primeira verso de
uma aplicaousando Java, mesmo utilizando IDEs e ferramentas
poderosas, ser mais trabalhoso que muitas linguagensscript ou de
alta produtividade. Porm, com uma linguagem orientada a objetos e
madura como o Java,ser extremamente mais fcil e rpido fazer
alteraes no sistema, desde que voc siga as boas prticas
erecomendaes sobre design orientado a objetos.Alm disso, a
quantidade enorme de bibliotecas gratuitas para realizar os mais
diversos trabalhos (tais comorelatrios, grficos, sistemas de busca,
gerao de cdigo de barra,manipulao de XML, tocadores de
vdeo,manipuladores de texto, persistncia transparente, impresso,
etc) um ponto fortssimo para adoo doJava: voc pode criar uma
aplicao sofisticada, usando diversos recursos, sem precisar comprar
um componenteespecfico, que costuma ser caro. O ecossistema do
Java enorme.
Cada linguagem tem seu espao e seu melhor uso. O uso do Java
interessante em aplicaes que viroa crescer, em que a legibilidade
do cdigo importante, onde temos muita conectividade e se h
muitasplataformas (ambientes e sistemas operacionais) heterogneas
(Linux, Unix, OSX eWindows misturados).
JAVA

OBJETIVOS

conhecer a histria do Java;


conhecer as diversas distribuies de Java e a utilidade de cada uma
delas;
entender o processo de compilao e execuo dos programas em Java;
compreender a diferena entre jdk e jre;
aprender a instalar o jdk;
entender o que so APIs Java;
desenvolver o primeiro programa em Java.

1. Um pouco de histria...

Java foi construda para ser utilizada em pequenos dispositivos


eletrnicos, o que no deu muito certo, pois o projeto era muito avanado para
a poca.
Com a exploso da internet, a Sun viu uma nova luz para o Java.
Remodelou a linguagem que passou a ser utilizada em applets para a internet.
A linguagem foi ficando cada vez mais poderosa e hoje est presente em sites,
portais, internet banking, programas desktop, celulares, cartes de crdito,
blue-rays e at em anis.
A parte mais interessante que a tecnologia Java nasceu com o
intuito de programar pequenos dispositivos, percorreu um longo caminho e a
cada dia est mais presente em dispositivos eletrnicos, o que era o objetivo
inicial.

PARA SABER MAIS

Para conhecer detalhes da histria do Java


acesse:<http://www.devmedia.com.br/websys.4/webre
ader.asp?cat=61&revista=easyjavamag_1#a-2982>

2. Distribuies do Java
Java pode ser encontrada em trs distribuies principais, cada uma
com sua finalidade especfica:

Java StandartEdition (JSE): Usada em computadores pessoais e


ambientes de trabalho. Vrias APIs acompanham esta verso e tantas
outras podem ser baixadas do site da Oracle.
Java Enterprise Edition (JEE): a tecnologia Java para aplicativos
distribudos em rede em larga escala e aplicativos baseados na web .
Possui um grande nmero de APIs voltadas para a segurana da
aplicao. Usada em servidores, contendo suporte para JSP, XML e
servlets.
Java Micro Edition (JME): Usada em dispositivos com recursos limitados,
como sistemas embarcados e dispositivos mveis. Possui APIs bem
simples e leves para economizar memria e processamento.

Figura 2: Edies da linguagem Java e seus respectivos alvos de aplicao.


Fonte: FIORESI, Cristiano. Conceitos bsicos da plataforma Java e J2ME. Disponvel em:
<http://www.devmedia.com.br/conceitos-basicos-das-plataformas-java-e-j2me/6484> Acesso em: 12 jan 2013.

Alm das trs principais distribuies, tambm existe o Java Card, que
uma edio especfica para cartes inteligentes, extremamente reduzida. Nesta
tecnologia at a mquina virtual dividida entre o sistema do carto e o sistema
operacional do terminal.

3. Compilador e interpretador Java

O processo de traduo da linguagem Java para a linguagem de


mquina um pouco diferente das outras linguagens de programao. Os
programas Java so compilados e interpretados.
Aps a criao de um programa Java, um compilador transforma o
programa em uma linguagem intermediria, como pode ser visto na figura 3,
chamada de bytecodes. O bytecode independente de plataforma.Todas as vezes
que o programa executado, a JVM (Java Virtual Machine) l o arquivo com a
extenso .class que est em bytecode e o interpreta para o processador.

Figura 3: Processo de criao e execuo de um programa Java


Fonte: MELO, Mario. Minicurso Java Bsico

Com o uso da mquina virtual, o programa fica independente de


sistema operacional e de plataforma. Uma mquina virtual muito mais ampla do
que um interpretador. Uma mquina virtual uma espcie de computador de
mentira, tem tudo o que um computador tem: gerenciamento de memria,
thread, pilha de execuo.
Nas primeiras verses do Java, o processo de interpretao feito pela
JVM era lento, o que tornava um problema para a linguagem. Na verso 1.2 surgiu
o Compilador Just In Time ou Compilador JIT. O compilador JIT trabalha em
conjunto com o interpretador Java. O interpretador verifica quais trechos de
cdigo so executados mais vezes e pede que o compilador JIT os compile,
convertendo o bytecode na linguagem de mquina do processador que est
executando o programa. O JIT tambm possui informaes relativas ao ambiente
em que est executando, como quantidade de usurios simultneos e memria
disponvel. Com essas informaes a JVM muda a estratgia de compilao em
busca de um melhor desempenho.

4. JSE
A JSE o segmento base da plataforma Java. O JSE possui duas
divises:

JRE: ambiente de execuo Java para quem quer apenas executar


programas em Java. composta pela JVM e as APIs Java, que uma coleo
de softwares prontos, que incluem desde estruturas para a manipulao
de arquivos at a construo de aplicativos grficos.
JDK: o conjunto de ferramentas necessrias para o desenvolvimento de
programas Java. composto pela JRE, javac (compilador), jar
(empacotador) e o javadoc (documentao)

Na figura 4 possvel observar as APIs que compem a plataforma


Java e as ferramentas que acompanham o kit de desenvolvimento (jdk).

Figura 4: Arquitetura JSE


Fonte: PAMPLONA, Vitor Fernando. O que Java. Disponvel em: <http://javafree.uol.com.br/artigo/871498/Tutorial-
Java-O-que-e-Java.html> Acesso em 12 jan 2013.

5. Instalando o ambiente de desenvolvimento

Para iniciar o desenvolvimento em Java necessrio ter o jdk


instalado. Abaixo segue um passo-a-passo para a instalao no sistema
operacional windows.
Passo 1: Acessar o site da Oracle
Acesse o endereo:
<http://www.oracle.com/technetwork/java/javase/downloads/index.html> e
clique no link correspondente ao JDK 7.

Figura 5: Instalao jdk


Fonte: Elaborao da autora

Passo 2: A pgina ser redirecionada.


Clique em aceitar os termos da licena e escolha a verso compatvel com o
sistema operacional. Neste caso, o Windows 64 bits.
Figura 6: Instalao do jdk
Fonte: Elaborao da autora

Passo 3: A pgina ser redirecionada.


Abrir uma janela semelhante a figura abaixo, para a confirmao do download.
Clique em Download.

Figura 7: Instalao do jdk


Fonte: Elaborao da autora

Passo 4: Escolha o local onde o arquivo ser salvo.


Escolha o local e clique em Salvar.
Figura 8: Instalao do jdk
Fonte: Elaborao da autora

Passo 5: O download ser iniciado.


Aguarde a concluso do download.

Figura 9: Instalao do jdk


Fonte: Elaborao da autora

Passo 6: Instalao
D um duplo clique no instalador e a janela abaixo dever ser exibida.
Clique em Next.
Figura 10: Instalao do jdk
Fonte: Elaborao da autora

Deve aparecer a prxima janela do instalador.

Figura 11: Instalao do jdk


Fonte: Elaborao da autora

O boto Change permite alterar o local de instalao.


Clique em Next.
Deve iniciar o processo de instalao
Figura 12: Instalao do jdk
Fonte: Elaborao da autora

O instalador pede a confirmao do destino da instalao.


Clique em Next.

Figura 13: Instalao do jdk


Fonte: Elaborao da autora

Deve aparecer a janela abaixo.


Figura 14: Instalao do jdk
Fonte: Elaborao da autora

Aps concluir o processo de instalao, a janela abaixo ser exibida.


Clique em Close.

Figura 15: Instalao do jdk


Fonte: Elaborao da autora

6. Bibliotecas de classes do Java

Os programas Java so formados por classes. As classes contm


mtodos que executam tarefas e retornam informaes quando as mesmas so
concludas. possvel criar tudo que necessrio para construir um programa
Java, porm Java traz consigo inmeras classes prontas, que realizam as mais
variadas tarefas. Essas classes so chamadas de APIs. Deste modo, existem dois
aspectos para aprender o mundo Java. O primeiro deles, compreender os
princpios e sintaxe da linguagem para desenvolver classes e o segundo conhecer
as APIs Java e aprender como us-las.

7. Primeiro programa em Java

Alm de ter o jdk instalado, necessrio ter um editor de texto. Abra


qualquer editor de texto e digite o texto mostrado na figura 16.A princpio, no se
preocupe em entender tudo o que est escrito. Logo abaixo o cdigo ser
explicado linha a linha. Vale lembrar que o Java case sensitive, ento cuidado
para no trocar letras maisculas e minsculas. Essa troca pode gerar um erro no
momento da compilao.

Figura 16: Primeiro programa em Java


Fonte: Elaborao da autora

Salve o arquivo dentro da pasta Programas, contida no C: com o nome


PrimeiroPrograma.java. Vale ressaltar que os programas em Java devem ser salvos
com omesmo nome da classe.

O programa j est salvo. Como j visto no tpico 3 deste captulo, os


programas Java so compilados e interpretados. Portanto, o prximo passo
compilar o cdigo. Para compilar o programa necessrio solicitar ao compilador
do Java chamado javac, que gere o bytecode correspondente ao cdigo Java. Para
faz-lo abra o terminal do Windows e v at o diretrio em que o programa est
salvo.
Figura 17: Acessando o prompt de comando
Fonte: Elaborao da autora

Digite o comando javacPrimeiroPrograma.java no prompt de


comando. Se no ocorrer nenhum erro, deve aparecer no diretrio onde est salvo
o arquivo java, um arquivo PrimeiroPrograma.class. O arquivo .class o arquivo
que contm o bytecode do cdigo fonte.
O prximo passo fazer com que a JVM interprete o bytecode e
execute o programa. Para executar o programa no prompt de comando digite
javaPrimeiroPrograma. Deve aparecer na tela a seguinte mensagem: Este meu
primeiro programa em Java!.

Figura 18: Execuo do programa Java pelo prompt de comando


Fonte: Elaborao da autora

A seguir est descrito o que faz cada linha do cdigo:

A linha 1 cria uma classe (palavra-chave class) pblica (palavra-chave


public) chamada PrimeiroPrograma;
Na linha 3 est o mtodo main, que o ponto de partida de qualquer
programa java, onde o programa de fato iniciado. A funo main precisa
ser pblica (palavra-chave public), esttica (palavra-chave static), sem tipo
de retorno (palavra-chave void) e precisa conter um parmetro array do
tipo String (Stringargs[]).
A linha 5 indica que o que est escrito entre os parnteses deve aparecer
na tela.

PARA SABER MAIS

Para mais informaes sobre PATH e CLASSPATH


acesse:<http://devjava.wordpress.com/2010/01/11/java
_home-classpath-e-path-o-que-so-isso-para-que-servem-
e-como-configura-los/>
Para entender um pouco mais sobre jdk e jre acesse:
<http://www.devmedia.com.br/alo-mundo-entendendo-
o-java-de-uma-forma-diferente/24032>

PARA FIXAR

1. Qual a diferena entre jdk e jre?

2. Crie uma classe Java que imprima o texto: "Consegui concluir meu primeiro
programa em Java".
IDE

OBJETIVOS

entender a funcionalidade das IDEs;


conhecer as principais IDEs para desenvolvimento Java;
visualizar os passos para a instalao da IDE Netbeans;
conhecer as principais funcionalidades da ferramenta.

1. IDEs

Como visto no captulo anterior, o processo de criar programas em


Java usando o bloco de notas e o prompt de comando um processo bem
dispendioso. Para deixar o processo de desenvolvimento mais produtivo, existem
programas especficos, chamados de IDEs (Ambiente de Desenvolvimento
Integrado).
Uma IDE um software que tem como objetivo maximizar a
produtividade em uma ferramenta nica. Alguns recursos que as IDEs possuem:
Editor de cdigo: Escrita rpida de cdigo, auto completar, gerenciamento
de importaes, dicas para correo e gerao de cdigo.
Depurador: Facilidade na busca por erros no cdigo atravs da anlise
cuidadosa de cada passo executado pelo software.
Compilador: Gerao de cdigo de mquina a partir do cdigo fonte
automaticamente.
Deploy: Publicao da aplicao, gerao de executveis.
Cdigo limpo e automatizado: Facilidadeno entendimento do projeto por
todos os envolvidos.
JVM: Processo de interpretao de bytecodes automtico.

2. Principais IDEs para o desenvolvimento Java

Existem uma infinidade de IDEs para o Java, abaixo segue as


caractersticas de algumas delas.
JDeveloper: O JDeveloper uma ferramenta da Oracle que tem como
principal caracterstica a cobertura de todo o ciclo de desenvolvimento:
anlise, codificao, manuteno, otimizao e implantao. Esta
ferramenta pouco flexvel e seu uso recomendado quando o software
for produzido usando toda a arquitetura com produtos Oracle.
Eclipse: Poderosssima IDE de desenvolvimento, leve, rpido
configurvelcom inmeros plug-ins. Deixa a desejar no desenvolvimento
de telas para desktop.
Netbeans: Juntamente com o Eclipse, uma das IDEs mais utilizadas pela
comunidade de desenvolvimento. Tem editor de GUI nativo.Gera muito
cdigo automtico, no editvel.

3. Netbeans

Neste curso, vamos optar pela IDE Netbeans, por ter um melhor
suporte para desenvolvimento Desktop. O Netbeans uma ferramenta gratuita e
tem suporte para desenvolvimento nas linguagens C, C++, Groovy, PHP e Java.
O download da ferramenta pode ser feito em:
<http://netbeans.org/downloads/index.html>. Abrindo a pgina correspondente
ser visualizada uma tela como na figura abaixo:

Figura 19: Download do Netbeans


Fonte: Elaborao da autora

Inicialmente, os softwares desenvolvidos, tero o padro Desktop,


deste modo, baixar a verso correspondente a Java SE suficiente. Clicando em
Download, ser aberta uma janela para a escolha do local onde o instalador ser
salvo como mostra a figura abaixo.
Figura 20: Download do Netbeans
Fonte: Elaborao da autora

Aps a escolha do local onde ficar salvo o instalador clique em salvar.


O download ser iniciado. D um duplo clique sobre o instalador. A janela do
mesmo ser aberta.

Figura 21: Instalao do Netbeans


Fonte: Elaborao da autora

Na janela abaixo, clicando em personalizar possvel escolher os


pacotes que sero instalados. Aps ter efetuado a escolha, clique em prximo.
Figura 22: Instalao do Netbeans
Fonte: Elaborao da autora

Na janela seguinte, necessrio aceitar o contrato de licena. Clique


em prximo.

Figura 23: Instalao do Netbeans


Fonte: Elaborao da autora

A prxima janela sobre o framework JUnit. O JUnit uma ferramenta


usada para testes. Neste momento no ser necessrio instalar a mesma. Clique
em no instalar JUnit. Clique em prximo.
Figura 24: Instalao do Netbeans
Fonte: Elaborao da autora

Na prxima tela sero solicitados o local para a instalao e o local


onde o jdk se encontra. Depois de preencher essas afirmaes, clique em prximo.

Figura 25: Instalao do Netbeans


Fonte: Elaborao da autora

Na prxima tela mostrado um resumo das configuraes da


instalao. Clique em instalar.

Figura 26: Instalao do Netbeans


Fonte: Elaborao da autora

A tela do progresso da instalao ser mostrada.

Figura 27: Instalao do Netbeans


Fonte: Elaborao da autora
Quando a instalao for concluda, a tela abaixo ser mostrada. Clique em finalizar.

Figura 28: Instalao do Netbeans


Fonte: Elaborao da autora

4. Funcionalidades do Netbeans

As principais funcionalidades do Netbeans so:

Autocompletar: Pressionando as teclas CTRL + Espao, uma caixa de


seleo ser aberta, com opes para preenche o cdigo faltante.
Gerenciar importaes: O Netbeans varre o cdigo do editor de texto
constantemente e avisa imediatamente a ocorrncia de classes no
importadas ou instrues importadas no utilizadas. Nos casos de no
importao de classes, uma marca de erro exibida e para importaes
no utilizadas uma advertncia.
Dicas para corrigir cdigo: Para os erros mais comuns de cdigo, o
Netbeans enumera possveis maneiras de corrigir os mesmos.
Formatar cdigo: Pressionando ALT + SHIFT + F, o Netbeans formata o
cdigo da classe.
Dobramento de cdigo: No editor de cdigo, possvel contrair e expandir
blocos de cdigo. Com este recurso, possvel deixar as partes de cdigo
que se est trabalhando mais visvel.
Gerar cdigos: Pressionando as teclas ALT + INSERT possvel gerar
construtores e mtodos de acesso.
Code templates: So pedaos de cdigo que podem ser acessados por
atalhos. Existem alguns disponveis no Netbeans e esto citados abaixo.
Eles devem ser acessados juntamente com a tecla TAB.
o sout: Atalho para

o psvm: Atalho para o mtodo main;

o for: Atalho para

o St:

o if:

Teclas de atalho:
o ALT + F1: pesquisarjavadoc;
o CTRL + E: excluir a linha atual;
o F5: iniciar depurao do projeto principal;
o SHIFT + F6: executar projeto principal;
o ALT+ ENTER: exibir dica.
SINTAXE DA LINGUAGEM JAVA

OBJETIVOS

entender a utilizao do ponto-e-vrgula, espaos em branco e o padro


case-sensitive presente na linguagem Java;
conhecer as palavras reservadas;
aprender a utilizar os tipos primitivos de dados;
compreender os casts implcitos e explcitos entre tipos numricos;
entender o uso de Strings em Java;
aprender como se declaram as variveis e constantes em Java;
compreender a diferena de alocao na memria entre os tipos primitivos
e as variveis de referncia;
conhecer o GarbageCollector;
conhecer os operadores bsicos, lgicos, aritmticos, incremento e
decremento e de atribuio;
aprender a sintaxe das estruturas de controle e repetio da linguagem
Java;
diferenciar os tipos de comentrios e a utilidade de cada um.

1. Ponto-e-vrgula, blocos, espaos em branco e case-sensitive

Java uma linguagem de formato livre, ou seja, no existem regras


especiais para o espaamento vertical ou para a identao horizontal. Porm, para
uma melhor legibilidade do cdigo, interessante usar espaos, tabulaes e
novas linhas. Em Java, espaos em branco podem ser usados sem restries.

Um bloco formado por uma ou mais instrues agrupadas entre


chaves indicando que formam uma s unidade. O uso de chaves em Java indica a
presena de um bloco, ondea abertura da chave indica o incio do bloco e o
fechamento da chave, o fim do bloco. Os blocos podem ser organizados em
estruturas aninhadas infinitamente.

Uma instruo composta por uma ou mais linhas terminadas com


um ponto-e-vrgula. No fim de cada instruo, indispensavelmente deve ser usado
o sinal de pontuao ponto-e-vrgula. A quebra de linha no separa instrues.

O Java uma linguagem case-sensitive, ou seja, diferencia maisculas


de minsculas. Portanto, escrever letra e LETRA diferente para o Java.
2. Palavras reservadas

O Java possui uma lista de palavras que possuem um significado


especial para o compilador. Essas palavras no podem ser usadas na declarao
de classes, mtodos e variveis. A tabela 1 lista estas palavras.

abstract assert boolean break byte case

catch char class const continue default

Do double else enum extends false

final finally float for goto if

implements import instanceof int interface long

native new null package private protected

public return short static strictpf super

switch synchronized this throw throws transient

Try void volatile while


Tabela 1: Palavras reservadas Java
Fonte: Elaborao da autora.

3. Tipos primitivos de dados

Figura 29: Declarao de tipos primitivos em Java


Fonte: Elaborao da autora

Existem somente oito tipos primitivos de dados em Java, todo o resto


objeto. Tipos primitivos fazem parte da linguagem e no so instncias de outras
classes. A declarao dos tipos primitivos pode ser vista na figura 29. Os seus
nomes so palavras reservadas.

3.1 Tipo boolean

O tipo boolean o tipo mais simples encontrado em Java. Uma varivel


booleana pode conter apenas dois valores: true ou false, que representam os
valores verdadeiro e falso, respectivamente. O valor padro do tipo boolean
false.

3.2 Tipo char

O tipo char representa um nico caracter em Java. Caracteres em Java


so representados usando o conjunto de caracteres Unicode, usando dois bytes
por caracter. Esta representao de caracteres permite a representao em vrias
lnguas simultaneamente.

Alguns caracteres so considerados especiais se tentarmos imprimir


esses caracteres ao invs de imprimir um caracternormal, uma ao especial
ocorrer. o caso, por exemplo do nmero 7 que corresponde ao som bell.

Existem ainda os caracteres de controle, mostrados na tabela 2.

Caracter Descrio

\ aspa dupla

\ aspa simples

\n nova linha

\t Tabulao

\\ Barra

\r Enter
Tabela 2: Caracteres de controle
Fonte: Elaborao da autora

3.3 Tipos numricos


Classificao Tipo Descrio

Inteiro byte Variveis do tipo byte podem representar valores


inteiros com 8 bits de preciso, ou seja, valores
entre -128 a 127.

short Variveis do tipo short podem representar


valores inteiros com 16 bits de preciso, ou seja,
valores entre -32768 a 32767.

int Variveis do tipo int podem representar valores


inteiros com 32 bits de preciso, ou seja, valores
entre -2147483648 a 2147483647.

long Variveis do tipo long podem armazenar valores


inteiros com 64 bits de preciso, ou seja, valores
entre -9223372036854775808 a
9223372036854775807.

Ponto Flutuante float Variveis do tipo float podem armazenar valores


em ponto flutuante com 32 bits de preciso, na
faixa de - 1.40239846E-45 a 3.40282347E + 38 (9
dgitos significativos de preciso).

double Variveis do tipo double podem armazenar


valores em ponto flutuante com 64 bits de
preciso, na faixa de - 4.94065645841246544E-
324 a 1.79769313486231570E + 308 (18 dgitos
significativos de preciso).
Tabela 3: Tipos primitivos numricos em Java
Fonte: Elaborao da autora

Ao escolher um tipo de dado para ser usado, o programador deve estar


atento a faixa de valores que o campo pode vir a ocupar.

Para representar valores decimais em Java, utilizamos o ponto ao invs


da vrgula.

4. Converso entre tipos primitivos


Figura 30: Casts implcitos e explcitos
Fonte: Elaborao da autora

Valores de tipos numricos podem ser transformados em outros tipos


numricos de duas formas:

Implicitamente: A JVM transforma em tempo de execuo, quando acha


conveniente, tipos restritos em tipos com maior amplitude, ou seja, uma
varivel pode receber valores de variveis de tipos com tamanho menor
do que a mesma foi declarada. . Nenhuma informao perdida (Figura
30).
Atravs de uma operao chamada casting ou converso explcita. Para
efetuar a converso explcita, basta colocar o tipo de dado para o qual se
deseja converter entre parnteses antes da expresso a ser convertida.
Neste caso, o programador estar se responsabilizando por possveis
perdas de valores (Figura 30).

Na tabela abaixo, esto relacionados todos os casts possveis na


linguagem Java.

Para byte short char int long float double

byte De ----- implcito (char) implcito implcito implcito implcito

short (byte) ----- (char) implcito implcito implcito implcito

char (byte) (short) ----- implcito implcito implcito implcito

int (byte) (short) (char) ----- implcito implcito implcito

long (byte) (short) (char) (int) ----- implcito implcito

float (byte) (short) (char) (int) (long) ----- implcito

double (byte) (short) (char) (int) (long) (float) -----


Tabela 4 :Casts possveis na linguagem Java
Fonte: CAELUM. Java e orientao a objetos. Disponvel em: < http://www.caelum.com.br/apostila-java-orientacao-
objetos/> Acesso em 14 jan 2013.

5. String

Em Java no existe um tipo primitivo para se trabalhar com textos.


Para fazer uso dos mesmos necessrio utilizar a classe String presente no Java
desde a primeira verso. Por ser uma classe amplamente usada, ela no precisa
ser instanciada, sua atribuio composta por uma sequncia de caracteres
delimitados por aspas duplas.

6. Declarao de variveis

Variveis so espaos na memria onde podemos guardar


informaes. Cada valor convertido para binrio e ento pode ser alocado na
memria.Praticamente todos os programas usam variveis. E como o prprio
nome diz, elas podem ter o valor modificado durante a execuo do programa. As
variveis possuem tipos diferentes, dependendo da informao a ser armazenada.

No Java, para declarar uma varivel necessrio especificar o tipo, dar


um nome a ela e preferencialmente inicializ-la.

Os nomes de variveis ou identificadores possuem algumas regras


para que o compilador identifique como vlido:

Os nomes de variveis em Java devem ser inicializados por uma letra, um


cifro ou por undescore;
Aps o primeiro caracter, vale qualquer combinao de nmeros, letras e
caracteres;
Os identificadores no podem ter o nome igual ao de uma palavra
reservada.

7. Diferena entre tipos primitivos e variveis de referncia

As variveis primitivas guardam o real contedo da varivel. Uma


varivel de tipo primitivo pode armazenar exatamente um valor de seu tipo
declarado por vez, quando outro valor for atribudo a essa varivel, seu valor inicial
ser substitudo.

As variveis de referncia so as variveis que apontam para um


objeto, ou seja,guardam um endereo de memria para um objeto criado.Desta
forma, quando um outro valor atribudo para a varivel, uma nova posio de
memria aloca o novo valor e a referncia aponta para a nova posio de
memria. O tamanho alocado para uma varivel de referncia sempre fixo, pois
se trata de um endereo de memria que mostra como chegar ao objeto.

8. GarbageCollector

Quando referncias so criadas, espao em memria alocado a elas.


Quando no as utiliza mais, este espao precisa ser liberado.

Em Java, isto responsabilidade do


GarbageCollector. Este mecanismo verifica os espaos de
memria sem referncia e os limpa para um melhor
aproveitamento.

O coletor de lixo em Java faz isso


automaticamente, ou seja, o programador no precisa se preocupar com isso.

9. Constantes

Uma constante em Java recebe um valor que no pode ser modificado.


Para criar uma constante em Java utilizado o modificador final. Uma vez que a
varivel for definida como constante, obrigatrio, a inicializao da mesma.
Convenes de Cdigo

Mtodos, atributos e variveis: Devem ser declarados com letras


minsculas. Caso seja nome composto, a primeira letra de cada
palavra, exceto a primeira, deve ser escrita em maiscula. Ex: nome,
meuNome.
Constantes: Devem ser usadas letras maisculas na declarao. Em
casos de palavras compostas, as palavras devem ser divididas usando
o undescore.

10.Operadores bsicos

. Referncia a mtodo, funo ou atributo de um objeto.

, Separador de identificadores.

; Finalizador de declaraes e comandos.

[] Declarador de vetores e delimitador de ndices.

{} Separador de blocos.

() Lista de parmetros.

= Operador de atribuio.
Tabela 5: Operadores bsicos da linguagem Java
Fonte: Elaborao da autora

11. Operadores lgicos

> Maior

>= Maior ou igual

< Menor

<= Menor ou igual


== Igual

!= Diferente

&& E

|| Ou
Tabela 6: Operadores lgicos
Fonte: Elaborao da autora

12. Operadores aritmticos

Na tabela 1, esto apresentados os operadores aritmticos disponveis


em Java.

+ Soma

- Subtrao

/ Diviso

* Multiplicao

% Mdulo (resto da diviso)


Tabela 7: Operadores lgicos
Fonte: Elaborao da autora

13. Incremento e decremento

Os operadores de incremento e decremento so operadores que


atuam sobre uma nica varivel numrica, aumentando ou diminuindo ou seu
valor.

incremento: adicionar o valor de uma unidade ao valor atual. O operador


de incremento o sinal de ++;
decremento: diminuir uma unidade do valor atual. O operador de
decremento o --;

Os operadores de incremento e decremento podem ser posicionados


imediatamente antes ou imediatamente aps o nome da varivel. Vale ressaltar
que esses operadores funcionam de forma diferente dependendo da posio em
relao a varivel. Se o operador for colocado antes, a varivel incrementada no
momento da sua avaliao. Caso contrrio, a varivel incrementada aps a sua
avaliao. Maiores detalhes podem ser vistos na tabela abaixo:

Operador Exemplo Significado

++ ++x Incrementa a varivel e depois usa.

x++ Usa a varivel e depois incrementa.

-- --x Decrementa a varivel e depois usa.

x-- Usa a varivel e depois decrementa.


Tabela 8: Operadores de incremento e decremento
Fonte: Elaborao da autora

14. Operadores de atribuio

Para efetuar uma operao aritmtica seguida da atribuio do valor


de retorno a varivel que continha o primeiro termo da operao, pode ser
utilizada uma notao compacta. Segue abaixo a mesma:

Operador Exemplo Expresso equivalente

+= x += y x=x+y

-= x -= y x=x-y

*= x *= y x=x*y

/= x /= y x=x/y

%= x%=y x=x%y
Tabela 9: Operadores de atribuio
Fonte: Elaborao da autora

15. Estruturas de controle e repetio

Instruo if

Comando if... else A estrutura if permite especificar um


comando ou um bloco de comandos que
devem ser executados quando uma
if (expresso){ determinada condio for satisfeita.
bloco de comandos A estrutura if ... else permite expressar duas
}else{ alternativas de execuo, uma delas executa
bloco de comandos caso a condio seja verdadeira e a outra
} quando a condio no for satisfeita.
Quando houver apenas um comando dentro
do bloco if ou do bloco else, no necessrio
o uso das chaves.
Quando houver comandos if aninhados, cada
else est relacionado ao if que estiver dentro
do mesmo bloco que ele.

Instruo switch

Comando switch O comando switch faz o teste da


switch (expresso){ expresso de seleo contra os valores
case constante1: das constantes indicados nas clusulas
bloco decomandos; case, at que um valor verdadeiro seja
break; obtido.
case constante2: Se nenhum dos testes produzir um
bloco decomandos; resultado verdadeiro, so executados
break; os comandos do bloco default.
O comando break utilizado para
default: forar a sada do switch.
bloco decomandos;
}

Comando for

for (inicializao; condio; incremento){ O comando for usado


bloco de comandos; quando necessrio
} repetir um trecho de
cdigo diversas vezes.
o comando for permite
expressar iteraes
combinando uma
expresso de inicializao,
um teste de condio e
uma expresso de
incremento.
inicializao: comando de
atribuio que define o
valor inicial da varivel que
controla o nmero de
repeties.
condio: expresso
relacional que define at
quando as iteraes sero
executadas.
incremento: expresso
que define como a varivel
de controle do lao deve
variar ( pode aumentar ou
diminuir).
o teste da condio do
controle feito no incio
do lao, o que significa que
se j for falsa os comandos
dentro do lao no sero
executados.

Comando while

while (condio){ como dito anteriormente no comando for, o


bloco de comandos; comando while tambm utilizado para
} repetir um trecho de cdigo diversas vezes.
pode ser qualquer expresso ou valor que
resulte em um verdadeiro ou falso.
o lao while executado enquanto a
condio for verdadeira.
o teste da condio do controle feito no
incio do lao, o que significa que se j for
falsa os comandos dentro do lao no sero
executados.

Comando do ...while

do{ Similar ao comando while, porm, o teste


bloco de comandos; da condio de controle feito no fim do
}while (condio); lao, o que significa que os comandos
dentro do lao so executados pelo menos
uma vez.
Tabela: Estruturas de controle e repetio
Fonte: Elaborao da autora

15. Comandos break e continue

Os comandos break e continue so estruturas auxiliares dos fluxos de


repetio. O comando break paralisa a execuo de um loop inteiro e o comando
continue para somente a interao atual.

16. Comentrios

Comentrio a parte do cdigo ignorada pelo compilador. utilizado


para deixar o cdigo mais inteligvel. Java possui trs tipos diferentes de
comentrio:

Comentrio de uma linha: O uso de barra dupla marca o incio do


comentrio que se estende at o fim da linha.
Comentrio de vrias linhas: Os delimitadores /* e */ indicam incio e fim
de um comentrio e podem conter vrias linhas.
Comentrio javadoc: utilizado para gerar a documentao javadoc e
delimitado pelas sequncias de smbolos /** e */. Para gerar o javadoc
necessrio que o comentrio esteja localizado imediatamente antes da
classe, atributo ou mtodo documentado.

O cdigo apresentado nas figuras 31 exemplifica os comandos vistos


neste captulo.

public class SintaxeJava {


public static void main(String[] args) {

/*
*Declaraodavarivelidade do tipointeirocom o valor inicial 5
*atribudo.
*/
int idade = 6;

/* Usodaestruturacondicionalif.
* Nesteexemplo, a condio a sersatisfeita que a idadesejamaior
* ouigual a 6.
*/
if ( idade >= 6){

/*
* O comando switch recebeumavarivel, no casoabaixoidade e abre
* umblocodedados. Dentrodesseblocoestoos cases.
* Cada case recebeum valor nico e apsosdoispontosdecada case
* estainstruoquedeveserexecutadacaso a condiosejasatis-
* feita. O comando break utilizadoparaforar a sada do switch.
* O comando default pegaqualquerresultadoquenoestejadefinido
* no case.
*/
switch (idade){
case 6:
System.out.println ("Aluno deveria estar no primeiro ano");
break;
case 7:
System.out.println ("Aluno deveria estar no segundo ano");
break;
case 8:
System.out.println("Aluno deveria estar no terceiro ano");
break;
case 9:
System.out.println("Aluno deveria estar no quarto ano");
break;
default:
System.out.println("No deveria estar frequentando o primrio");
}
}

/*
* O comando for utilizadoemlaoscontados.
* A primeirainstruodeclara e atribui o valor inicial a varivelde
* controle.
* A segundainstruocontempla a condiodecontrole do lao.
* A terceiracondio define como a varivelde controle do lao deve
* variar
*/
for ( int i = 0; i<=6; i++){
System.out.println("O valor da varivel i : " + i);
}
int j = 0;

/*
* O lao while executado enquanto a expresso condicional for
* verdadeira.
*/
while ( j < 6){
if ( j == 3){
/*
*O comando continue para a interao atual. Desta forma quando
*j for igual a 3, o valor de j no ser impresso.
*/

break;
}
System.out.println("O valor de j : " + j);
j ++;
}
}
}

Figura 31: Cdigo exemplificando a sintaxe Java (Parte I)


Fonte: Elaborao da autora

PARA FIXAR

1.Quais dos identificadores abaixo, podem ser usados como nomes de variveis
em Java? Quais no podem e porqu?
a) for j) 123nome
b) four k) contador
c) FROM l) para
d) main m) ENQUANTO
e) MAIN n) 123
f) nome o) new
g) novo_nome p) table
h) $nome q) PEN
i) _nome r) dia-e-noite

2. Escolha o tipo de dado mais adequado para representar:


a) O nmero de cidades do Brasil.
b) A populao mundial.
c) Nome do cachorro da minha colega.
d) Um nmero sorteado na Mega Sena.
e) Estado de uma lmpada (acesa ou apagada).
f) O peso do seu colega.
g) O sexo de uma pessoa.

3. O que acontece se voc dividir um nmero inteiro por 0? E por 0.0?

4. Determine se cada um dos seguintes itens verdadeiro ou falso. Se falso


explique por qu.
a) Todas as variveis em Java devem ser atribudas a um tipo quando so
declaradas.
b) O Java considera que as variveis nome e NOME so idnticas.
c) O operador resto (%) pode ser utilizado apenas com operandos inteiros.
d) Os seguintes so todos nomes de varivel invlidos: _123, a23, 12a, $12.

5. Implemente uma calculadora que resolva as quatro operaes (+, -, * e /), que
receba como entrada dois nmeros reais.

6. Imprima a soma de 1 at 1000.


7. Imprima todos os mltiplos de 3, entre 1 e 100.

8. Receba como entrada um nmero e um expoente. Calcule este nmero elevado


ao expoente. Faa trs verses deste programa:
Use uma declarao while para resolver este problema;
Use uma declarao do-while para resolver este problema;
Use uma declarao for para resolver este problema.

9. (IADES 2011 PG/DF - Analista Jurdico - Analista de Sistemas) Analise o cdigo


fonte em Java a seguir e assinale a alternativa que apresenta o resultado da
execuo do programa.

import java.io.*;
public class Calculadora {
public static void main(String [] args) {
int a, b, c;
a = 5;
b = 3;
c = a++ + ++b;

System.out.println("Valores = " + a + b + c);


}
}

a) Valores = 16
b) Valores = 548
c) Valores = 18
d) Valores = 649
e) Valores = 19

10. (Cesgranrio - 2009 CBM - Negcios em TI)

publicclass Main {
publicstaticvoid main(String[] args) {
int x = 0;
int y = 1;
int z = 8;
while (x < z) {
while (y > z) {
x++;
y--;
}
y += ++x;
}
x += y;
System.out.println(x);
}
}
Qual ser a sada do programa Java mostrado acima?
a) 8
b) 24
c) 25
d) 42
e)43

11. (Cesgranrio - 2012 CHESF - Analista de sistema)Considere o trecho de cdigo


que corresponde ao mtodo principal de uma classe em linguagem Java.

publicclass Main {
publicstaticvoid main(String[] args) {
int n = 1;
int x = 0;
int i;
while (n < 10) {
if (n % 2 != 0) {
for (i = 3; i * i <= n; i += 2) {
if (n % i == 0)
break;
}
if (i < n) {
x++;
}
}
n++;
}
System.out.println(x);
}
}

Qual o resultado produzido por esse mtodo quando ele corretamente


executado?
(A) 0
(B) 1
(C) 2
(D) 3
(E) 5

12. (Cesgranrio - 2011 PETROBRAS - Tcnico de Informtica Jnior)Qual a instruo


Java em que o valor da varivel x ser 13aps o loop ter executado 5 vezes?
a)for (int x=3; x<12; x+=2){
++count;
}

b)for (int x=1; x<12; x+=5){


++count;
}

c) for (int x=5; x>12; x-=2){


++count;
}

d) x = 1;
while (x < 13){
++x;
}

e) x = 5;
while (x < 12){
++x;
}
PROGRAMAO ORIENTADA A OBJETOS

OBJETIVOS

diferenciar programao estruturada de programao orientada a objetos;


entender os princpios da POO;
distinguir objetos de classes;
definir atributos e mtodos;
compreender o que so instncias de classes;
construir construtores;
organizar classes e pacotes.

1. Programao estruturada X programao orientada objetos

Diferena entre programao estruturada e programao orientada a objetos


Fonte: http://www.webfinal.com.br/blog/wp-content/uploads/2010/07/sextanet2.png

A programao estruturada baseada em funes e dados. Os


procedimentos inseridos em blocos estruturados comunicam-se com outros
procedimentos por meio da passagem de dados.

A programao orientada a objetos simula o mundo real dentro do


computador. Nela, os problemas so resolvidos com a criao e interao de
diferentes objetos. Os objetos comunicam-se atravs de mensagens.
2. Princpios da programao orientada a objetos

A programao orientada a objetos foi criada com o intuito de


aproximar o mundo real do virtual. Para isso, um programa visto como um
conjunto de objetos que executam tarefas especficas e se comunicam atravs de
mensagens em busca de um objetivo comum.

De uma maneira geral, os objetos so compostos por dados e


instrues para processar estes dados.

Na POO, o desenvolvedor responsvel por moldar os objetos e


explicar para os mesmos como ser feita a comunicao. Esses moldes de objetos
so chamados de classes.

A programao orientada a objetos est sedimentada em quatro


pilares: encapsulamento, herana, composio e polimorfismo.

Figura 32: Pilares da orientao a objetos


Fonte: BEZERRA, Adriano. Programao orientada a objetos. Disponvel em:
<http://www.metropoledigital.ufrn.br/aulas/disciplinas/poo/aula_01.html> Acesso em 15 jan 2013.

Benefcios da programao orientada a objetos:

Modularidade: um objeto criado pode ser passado por todo o sistema;


Encapsulamento: os detalhes da implementao ficam ocultos, quem usa
determinado objeto no precisa saber como seus mtodos esto
implementados;
Reuso: aps a implementao o objeto pode ser usado em todo o
programas e at mesmo em outros programas.
Manutenibilidade: a manuteno realizada somente dentro do objeto
que deve ser alterado, no influenciando nas demais partes do cdigo.
3. Objetos

Objeto qualquer entidade do mundo real que possui atributos e


comportamentos, como por exemplo, casa, carro, escola, computador, cachorro.

Todo objeto possui caractersticas prprias, que so comumente


chamadas de atributos. Os atributos so o que diferem dois objetos semelhantes.
Tomando como exemplo o cachorro, o que diferencia dois deles a raa, o peso, a
cor do pelo, o peso, ou seja, os atributos que eles possuem.

Alm de possurem atributos, os objetos tambm possuem


comportamentos. Os comportamentos geralmente so verbos e representam as
aes que o objeto pode realizar. Um objeto cachorro, por exemplo, pode comer,
correr e latir.

A figura 34 ilustra trs diferentes objetos do tipo cachorro: Bob,


Scooby e Rex. Os cachorros ilustrados possuem os mtodos andar, falar, comer,
pegar osso e dormir.

Figura 33: Exemplos de objetos.


Fonte: PALMEIRA, Thiago Vincius Varallo. Introduo a programao orientada a objetos em Java. Disponvel em:
<http://www.devmedia.com.br/introducao-a-programacao-orientada-a-objetos-em-java/26452>. Acesso em 15 jan.
2013.
4. Classes

Uma classe em Java a especificao para a criao de um objeto.


Uma classe descreve as propriedades e funcionalidades que um objeto ter. Desta
forma, os atributos e mtodos que os objetos tm so declarados na classe.

A figura 34 mostra a representao de uma classe pela UML e pelo


cdigo Java.

public class Carro {

String placa;
String corLataria;
String corParachoque;
String aro;

Figura 34: Representao de uma classe public void trocarMarcha(){


Fonte: Elaborao da autora }

public void ligar(){


}

public void acelerar(){


}
}

A figura 34 especifica um novo tipo, Carro. Na especificao (classe) foi


definido que um objeto do tipo Carro deve conter necessariamente os atributos
placa, cor da lataria, cor do para-choque e aro.

Em Java, uma classe definida utilizando a palavra chave class. Aps a


palavra chave class, deve seguir o nome da classe, que deve ser um identificador
vlido. A definio da classe pode conter tambm um modificador. No exemplo
acima, foi utilizado o modificador public. Outros modificadores usados na
definio de classes so o abstract e o final.

Aps a declarao da classe aparecem os atributos e os mtodos que


sero detalhados a seguir.

5. Atributos

Os atributos so as caractersticas de um objeto.

A declarao de um atributo deve conter necessariamente um tipo e


um nome. O tipo pode ser um dos tipos primitivos Java ou o nome de uma classe.
O nome dever ser um identificador vlido da linguagem Java.

Um atributo pode conter um modificador de acesso, que ser descrito


mais adiante e pode ser inicializado no ato de sua construo.

Palavra Nome da classe escolhido


obrigatria para pelo programador. Por
indicar a criao padro, utiliza-se sempre a
Modificador de uma classe. primeira letra em maiscula.
de acesso

public class Carro {

tipo String placa; nome

String corLataria;
String corParachoque;
String aro;
Conjunto de caractersticas dos objetos da
Classe Carro
6. Mtodos

Mtodos so as aes realizadas pelos objetos. Eles podem manipular


atributos de objetos para os quais os mtodos foram definidos. Os mtodos
tambm podem definir e manipular variveis locais.

Cada mtodo especificado por uma assinatura. A assinatura de um


mtodo composta pelo modificador (no obrigatrio), tipo de retorno e o nome
do mtodo que deve ser um identificador vlido. Os mtodos tambm podem
receber parmetros por valor atravs da lista de argumentos.

Os mtodos podem ter retorno ou no. Para mtodos sem retorno


usa-se a palavra chave void. Para os mtodos com retorno, usa-se o tipo de
retorno, que pode ser um valor primitivo ou uma classe Java.

O fato de um mtodo possuir retorno ou no, altera o encerramento


da execuo. Quando um mtodo no tem valor de retorno, a execuo
encerrada quando o bloco do corpo do mtodo chega ao final. J quando o
mtodo possui valor de retornoa execuo encerrada atravs do comando
return.

Os mtodos podem receber argumentos representados por uma lista


de parmetros separados por vrgula, onde para cada parmetro indicado o tipo
e o nome.
Mtodo sem retorno e sem
parmetros
public void trocarMarcha(){

}
Mtodo com retorno do tipo boolean, sem
public boolean estaLigado (){ parmetros. O uso da palavra-chave return
returntrue;
obrigatrio em mtodos com retorno.
}

public void frear (int intensidade){


Mtodo sem retorno e com parmetro.
}
Este mtodo necessita da informao
da intensidade da velocidade para ser
executado.

6.1. O mtodo main

O mtodo main utilizado pela JVM para inicializar a execuo do


programa.Segundo RICARTE (2001):
O mtodo main um mtodo associado a classe e no a um objeto
especfico da classe assim ele definido como mtodo esttico.
Adicionalmente, deve ser um mtodo pblico para permitir sua
execuo a partir da mquina virtual Java. No tem valor de retorno,
mas recebe como argumentoum arranjo de strings que corresponde
aos parmetros que podem ser passados para a aplicao a partir da
linha de comando.

7. Instncias de classes

Uma classe a especificao de um objeto. Porm para ser criado, um


objeto precisa ser instanciado. Quando um objeto criado, ele adquire espao
em memria para armazenar seu estado e um conjunto de operaes podem ser
aplicadas ao mesmo.

Abaixo, segue exemplo com a criao de um objeto carro.

Declarao da
varivel c1 do Cria um objeto na
tipo Carro. memria

public class Principal {

public static void main(String[] args)


{

Carro c1 = new Carro();

c1.aro = "18";
c1.corLataria = "prata";
c1.corParachoque = "prata";
c1.placa = "MHZ 1521";
}
} Definindo valores para os atributos
do Carro criado c1.

8. Construtores
A funo do construtor iniciar a construo de um objeto. O mesmo
invocado toda vez que a palavra new utilizada.

O construtor possui o mesmo nome da classe e no tem nenhum tipo


de retorno. Ele pode conter parmetros.

Toda classe deve ter um construtor definido. Se o construtor no


estiver explicitamente declarado, o compilador cria um construtor default, ou seja,
um construtor sem parmetros e o corpo vazio.

No momento em que o programador cria um construtor, o construtor


default deixa de ser criado automaticamente. Portanto, necessrio declarar o
construtor default, se a utilizao domesmo for necessria.

Podem ser declarados diversos construtores em uma mesma classe,


desde que a assinatura dos mesmos forem diferentes, ou seja, vrios construtores
com argumentos diferentes.

public class Carro { A - Construtor sem corpo e sem


parmetros.Quando um construtor
no declarado explicitamente, o
String placa; compilador cria um construtor
String corLataria; similar a este.
String corParachoque;
String aro; B - Construtor contendo os parmetros
placa e cor da lataria. Ao usar este
public Carro (){ construtor, no momento da criao do
objeto devem ser informados a placa e
a cor da lataria do objeto criado.
}

public Carro (String placa, String corLataria){


this.placa = placa;
this.corLataria = corLataria;
}

public Carro (String aro){ C - Construtor com o


parmetro aro. No momento
this.aro = aro;
da construo deve ser
corParachoque = "preto"; informado, o aro do objeto. No
} corpo do mtodo tambm
inicializado o atributo cor do
parachoque. Os objetos
criados utilizando este
construtor, so inicializados
com a cor do parachoque
preto.
A palavra this usada para
referenciar mtodos ou
atributos do objeto que est
sendo usado.

public class Principal {

public static void main(String[] args) {


Objeto criado usando o
construtor A.
Carro c1 = newCarro();

Carro c2 = newCarro("JLM 2343", "vermelho");


Objeto criado
Carro c3 = newCarro("16"); usando o
Objeto criado usando o construtor B.
} construtor C.
}

9. Pacotes

Os pacotes servem para organizar as classes de acordo com suas


funcionalidades. Um pacote um diretrio onde est armazenada uma ou mais
classes.A palavra chave package define em qual pacote se encontra a classe.

Para utilizar classes de um pacote usada a palavra chave import.A


utilizao do import s necessria, caso a classes que est utilizando as
funcionalidades da outra classe esteja em pacote diferente.

O pacote java.lang automaticamente importado pelo Java. o nico


pacote que contm esta caracterstica.

As principais classes que fazem parte deste pacote so: Math, Object,
String, System.
package br.com.senai.exemplo.pacote;

public class Pac { Definio do pacote em que a


classe se encontra.
}

import br.com.senai.exemplo.pacote.Pacote;
Importao do
public class TestePacote {
pacote para o uso da
classe Pac
Pac p1 = new Pac();

PARA FIXAR

1. O que uma classe e para que serve?

2. Escreva um modelo para representar um livro que est venda em uma livraria.
Que dados devem ser representados por este modelo?

3. Escreva uma classe EntradaDeCinema com a seguinte estrutura (dados):


Data dataDoFilme
float horrio
int sala
float valor
E com as seguintes aes (mtodos):
Construtor: com a finalidade de inicializar todos os atributos.
CalculaDesconto: que deve receber como parmetro a data de nascimento do
cliente (do tipo Data) e caso seja menor de 12 anos, deve ser dado um desconto
de 50% no valor normal.
CalculaDesconto: que deve receber como parmetro a data de nascimento do
cliente (do tipo Data) e o nmero de sua carteira de estudante (do tipo int). Se o
estudante tiver idade entre 12 e 15 anos, deve ser dado um desconto de 40%, de
16 a 20 um desconto de 30% e mais que 20 anos um desconto de 20% no valor
normal.
CalculaDescontoHorrio: esse mtodo deve dar um desconto de 10% sobre o valor
aferido aps todas as outras opes de desconto, caso o horrio do filme seja
antes das 16 horas.
toString(): que deve imprimir todos os dados do ingresso.
Desenvolva uma aplicao que leia os dados necessrios para instanciar e imprimir
o ingresso para clientes normais, menores de 12 anos e estudantes.
ENCAPSULAMENTO

OBJETIVOS

entender o conceito de encapsulamento;


conhecer os modificadores de acesso;
utilizar os mtodos getter e setter.

1. Encapsulamento

O encapsulamento isola as partes do programa. Apenas o mnimo


necessrio deve ser revelado. Deve ser suficiente conhecer a especificao do
mtodo, sem saber como a funcionalidade que ele executa foi implementada.

O encapsulamento torna possvel a idia de abstrao da programao


orientada a objetos.

A orientao a objetos recomenda que os objetos devem ser


manipulados somente atravs dos mtodos pblicos do objeto, dos quais apenas
a assinatura deve ser revelada. Os atributos no devem ser revelados
externamente, exceto em caso de serem constantes.

2. Modificadores de acesso

Para tornar possvel o encapsulamento, se faz necessrio, o uso dos


modificadores de acesso. Em Java, os principais modificadores de acesso so:

public: membro acessvel a qualquer objeto;


protected: membro acessvel as subclasses e aos objetos do mesmo
pacote;
default: quando no for definido nenhum modificar o membro fica
acessvel apenas as classes do mesmo pacote;
private: no pode ser acessado por nenhum outro objeto.

Normalmente na constituio das classes, os mtodos so pblicos e


os atributos so privados.
public class Carro {

String placa;
String corLataria;
String corParachoque;

String aro; //modificador default: acesso


somente as classes do mesmo pacote

public double velocidade; //modificador


pblico: acesso a todas as classes

protected int ano; //modificador protegido:


acesso as classes do mesmo pacote
// e as subclasses

private String marca; //modificador privado:


nenhum acesso externo permitido.

3. Gets e sets

Quando usado o modificador de acesso private em um atributo, no


possvel acess-lo em outra classe. Para alterar ou recuperar o valor do mesmo,
necessrio escrever dois mtodos de acesso, um que retorna o valor e outro que
muda o valor.

A conveno para estes mtodos colocar a palavra get ou set antes


do nome do produto.

O mtodo set usado para modificar algum atributo. Os mtodos sets


no retornam nenhum valor, portanto so mtodos void. Porm, eles devem
receber obrigatoriamente um argumento, que ser o valor atribudo ao campo.

O mtodo get usado para retornar algum atributo. Os mtodos gets


obrigatoriamente possuem retorno de valor. Porm, eles no possuem nenhum
argumento.
public class Carro {
Mtodo que atribui um
valor para a varivel
private String placa; placa. Na chamada do
private String corLataria; mtodo indicado o valor
private String corParachoque; que a placa ter.
private String aro;

public void setPlaca (String placa){


this.placa = placa;
}
Mtodo que retorna o
public String getPlaca (){ valor de um atributo.
returnthis.placa; Nesse caso, o mtodo
} deve retornar uma
string.

public class Principal {

public static void main(String[] args) {

Carro c1 = newCarro();

c1.setPlaca("TRW 2345");

System.out.println(c1.getPlaca());

}
}

PARA SABER MAIS

Como no aprender Java e orientao a objetos: getters e


setters. Disponvel em:<http://blog.caelum.com.br/nao-
aprender-oo-getters-e-setters />
4. Sobrecarga de mtodos

Mtodos sobrecarregados so mtodos com o mesmo nome, porm


com assinaturas diferentes.

O compilador, a partir da anlise dos tipos de argumentos dos


mtodos determina qual o mtodo deve ser executado.

5. Agregao e composio

A agregao uma relao entre os objetos em que um objeto contm


uma lista de outros objetos. Na agregao, os objetos contidos podem existir fora
do contexto do objeto que os contm. Por exemplo, pneu e carro. Um pneu existe
sem o carro.

Composio o mecanismo que permite o uso de uma ou vrias


classes para compor uma outra classe.Na composio, os objetos contidos no
fazem sentido fora do contexto do objeto que os contm. Por exemplo, pedido e
item. Um item no existe fora do pedido.

PARA FIXAR
O exerccio 1 foi retirado do curso Java Starter e deve respeitar o uso do
encapsulamento. Disponvel em:
<http://www.t2ti.com/curso/video/java/basico/java_starter.php>

1. De acordo com os conceitos apresentados:


a) Implemente uma classe Pessoa com os seguintes atributos: nome, idade e cpf;
b) Utilizando a classe implementada na letra a, crie um programa que instancie 2
pessoas com todos os atributos e imprima os valores;
c) Implemente uma classe que represente uma sala de aula, esta sala pode ter o
mximo de 10 alunos, se extrapolar este limite deve ser impressa uma mensagem
avisando que o nmero mximo de alunos foi atingido;
d) Implemente uma classe de Endereo com os seguintes atributos: estado,
cidade, rua, cep e telefone;
e) Adicione a classe Pessoa um atributo de endereo utilizando a classe
desenvolvida no tem d;
f) Implemente um mtodo construtor para a classe Pessoa de forma que uma
instncia desta classe seja criada apenas se possui nome, idade e cpf;
g) Implemente uma classe que simule um cadastro de pessoal. Esta classe deve
armazenar at 100 pessoas (utilize a classe Pessoa) com seus respectivos
endereos. Essa classe deve ter os seguintes comportamentos: permitir o
cadastramento e excluso de pessoas do cadastro;
2. Escreva uma classe que represente um pais. Um pais tem como atributos o seu
nome e a sua dimenso em Km2 e uma lista de pases com os quais ele faz
fronteira. Represente a classe e fornea os seus membros a seguir:
a) Construtor que inicialize o nome e a dimenso do pas;
b) Mtodos de acesso (get) para a propriedade dimenso do pas;
c) Um mtodo que permita verificar se dois pases so iguais. Dois pases so iguais
se tiverem o mesmo nome e a mesma capital. A assinatura deste mtodo deve
ser:public boolean equals(Pais outro);
d) Um mtodo que informe se um outro pas seu limtrofe (faz fronteira);
e) Um mtodo que receba um outro pas como parmetro e retorne uma lista de
vizinhos comuns aos dois pases.
Obs: Considere que um pas tem no mximo 40 outros pases com os quais faz
fronteira.
f) Escreva uma classe continente. Um continente possui um nome e um conjunto
de pases, que dele fazem parte. Desenvolva um mtodo que fornea a dimenso
total do continente.

3. Um avio representado pelo seu prefixo, pelo nome do seu modelo, pelo
nome do seu fabricante, pela quantidade de assentos e pela quantidade de
assentos ocupados.
Escreva uma classe que represente um avio e desenvolva um mtodo que
informe qual o prefixo da aeronave.
Um aeroporto representado pelo seu cdigo e seu nome (ex.: SSA: Salvador, BSB:
Braslia. etc), por um status que informa se ele um aeroporto internacional ou
no, uma lista de outros aeroportos para os quais partam vos diretos partir dele
e uma lista de outros aeroportos de onde venham vos para ele. Alm disto possui
uma lista de avies que esto atualmente no ptio.
Escreva uma classe que contemple os atributos apresentados e mais os seguintes
membros:
a) Um construtor que inicialize o cdigo do aeroporto e seu nome.
b) Mtodos que verifiquem e alterem a situao relativa ao fato do aeroporto ser
internacional ou no.
c) Um mtodo que verifique e informe se um aeroporto igual a ele:
public boolean equals (Aeroporto aeroporto)
Dois aeroportos so iguais se o seu cdigo for coincidente.
d) Um mtodo que receba um prefixo de avio como parmetro e informe se a
aeronave est pousada nele.
e) Um mtodo que receba um outro aeroporto como parmetro e verifique se
existe alguma forma de se chegar nele. Para isto, o aeroporto deve verificar se ele
possui vo partindo para o aeroporto desejado, e caso no saia, se existe alguma
forma de chegar nele partir dos aeroportos de onde sai
public boolean possuiRota(Aeroporto aeroporto)
Obs: A quantidade mxima de aeronaves que um aeroporto pode ter em
terra igual a 100 e a quantidade mxima de outros aeroportos com os
quais o aeroporto pode ter linhas saindo e chegando 100.

4. Nas duas tabelas abaixo esto inseridos os cdigos de duas classes Java: a classe
Carro e a classe Principal. Explique o que cada linha de cdigo representa.

package br.com.senai.exemplo.modelo;

public class Carro {

//Atributos
private String cor;

private String modelo;

private double velocidadeAtual;

private double velocidadeMaxima;

public Carro() {

public Carro(String cor, String modelo, double velocidadeAtual,


double velocidadeMaxima) {
this.cor = cor;
this.modelo = modelo;
this.velocidadeAtual = velocidadeAtual;
this.velocidadeMaxima = velocidadeMaxima;
}

public String getCor() {


return cor;
}

public void setCor(String cor) {


this.cor = cor;
}

public String getModelo() {


return modelo;
}

public void setModelo(String modelo) {


this.modelo = modelo;
}
public double getVelocidadeMaxima() {
return velocidadeMaxima;
}

public void setVelocidadeMaxima(double velocidadeMaxima) {


this.velocidadeMaxima = velocidadeMaxima;
}

public double getVelocidadeAtual() {


return velocidadeAtual;
}

public void setVelocidadeAtual(double velocidadeAtual) {


this.velocidadeAtual = velocidadeAtual;
}

public void liga(){


System.out.println("O carro est ligado");
}

public void acelera (double quantidade){


double velocidadeNova = this.velocidadeAtual +
quantidade;
this.velocidadeAtual = velocidadeNova;
}

}
HERANA E POLIMORFISMO

OBJETIVOS

compreender o uso da herana;


usar a sobrescrita de mtodos;
entender o conceito de polimorfismo.

1. Herana

A herana um dos pilares da programao orientada a objetos que


permite a criao de novas classes a partir de outras j existentes, ou seja, uma
classe pode derivar de outra classe. As novas classes so chamadas de subclasses
e as classes j existentes que deram origem as subclasses so chamadas de
superclasses.

O mecanismo de herana viabiliza o reuso de cdigo. Para fazer uso da


herana usada a palavra-chave extends, seguida do nome da superclasse.

Para referenciar os mtodos da superclasse utilizada a palavra-chave


super.

A herana em Java tambm pode ocorrer implicitamente, o que


ocorre com a superclasse Object. Todas as classes criadas em Java estendem
implicitamente de Object.
import java.awt.Image;

public class Animal {

private Image foto;


private double peso;
private String comida;

public void comer(){


}

public void dormir(){


}

public void movimentar(){


}

public void fazerBarulho(){


}

public class Cachorro extends Animal {


}

public class Coruja extends Animal {


public void voar(){
}

public void botar(){


}
}

public class Galinha extends Animal {


public void voar(){
}
public void botar(){
}
}

2. Sobrescrita de mtodos

A sobrescrita de mtodos o mecanismo que permite a alterao do


comportamento de uma superclasse pelas suas subclasses, ou seja, a sobrescrita
de um mtodo uma nova implementao para o mesmo.

A sobrescrita de um mtodo ocorre somente se a assinatura do


mesmo permanece intacta, isto , o tipo de retorno e os parmetros devem ser os
mesmos.

O modificador final no permite que o mtodo seja sobrescrito. Este


modificador tambm pode ser usado na definio da classe para impedir que a
mesma seja estendida.

3. Polimorfismo

O polimorfismo em Java o mecanismo que garante que classes


derivadas de uma mesma superclasse invoquem mtodos com a mesma
identificao, mas com comportamentos distintos.

PARA FIXAR

Os exerccios 1 e 2 foram retirados do curso Java Starter disponvel em:


<http://www.t2ti.com/curso/video/java/basico/java_starter.php>

1. A partir dos conceitos apresentados:

a) Crie uma hierarquia de classes em Java com os atributos e comportamentos


descritos abaixo. Distribua as caractersticas de forma que tudo o que for comum
a todos os animais fique na classe Animal.
Animal

cachorro cavalo preguia


possui nome possui nome possui nome
possui idade possui idade possui idade
deve emitir som deve emitir som deve emitir som
deve correr deve correr devesubir em rvores

b) Implemente um programa que crie os trs tipos de animais definidos no item


anterior e invoque o mtodo que emite o som de maneira polimrfica, isto ,
independente do tipo de animal.
c) Implemente uma classe Veterinrio que contenha um mtodo examinar( ), cujo
parmetro de entrada um Animal, quando o animal for examinado deve emitir
um som, passe os trs animais como parmetro.
d) Crie uma classe Zoolgico com 10 jaulas (utilize um array), coloque em cada
jaula um animal diferente, percorra cada jaula e emita o som do animal
correspondente.

2. Resolva a seguinte situao utilizando os conceitos aprendidos.


a) Uma empresa quer manter o registro da vida acadmica de todos os
funcionrios, o modelo deve contemplar o registro das seguintes informaes, de
forma incremental.
Para o funcionrio que no estudou, apenas o nome e o cdigo funcional;
Para o funcionrio que concluiu o ensino bsico, a escola;
Para o funcionrio que concluiu o ensino mdio, a escola;
Para o funcionrio que concluiu a graduao, a universidade.
b) Estenda o modelo de forma que todo funcionrio possua uma renda bsica de
R$ 1000,00 e:
Com a concluso do ensino bsico a renda total a renda bsica acrescida
de 10%;
Com a concluso do ensino mdio a renda total a renda bsica acrescida
de 50%;
Com a concluso do ensino superior a renda total a renda bsica
acrescida de 100%;
c) Crie um programa que simule uma empresa com 10 funcionrios, utilize um
array, sendo que a escolaridade dos funcionrios distribuda da seguinte forma:
40% do ensino bsico, 40% do ensino mdio e 20% superior. Calcule os custos da
empresa com salrios totais e por nvel de escolaridade.
3. (FCC - TRT 20 REGIO/2010 - Tecnologia da Informao) Considere o cdigo
JAVA abaixo:

public class Carro extends Veiculos {

private String categoria;

public void setCategoria(String categoria) {


this.modelo = categoria;
}

public String getCategoria() {


return this.categoria;
}
}
Em relao ao cdigo acima, correto afirmar que:
A) A palavra reservada extends indica que Carro uma superclasse e Veiculo um
objeto.
B) A classe Carro ir herdar atributos e mtodos da classe Veiculo que no estejam
com o modificador protected.
C) Todas as classes que herdarem a classe Carro tero o atributo modelo.
D) A palavra reservada extends indica que Carro e Veiculo so classes de mesmo
nvel.
E) A classe Carro ir herdar atributos e mtodos da classe Veiculo que no estejam
com o modificador private.

4. (ESAF - ANA/2009 - Analista Desenvolvimento de Sistemas)Em Java, para que


um mtodo de uma superclasse no seja sobrescrito em suas subclasses, aplica-
se o modificador :
A) static.
B) public.
C) final.
D) protected.
E) abstract.

5. (ESAF - ANA/2009 - Analista Desenvolvimento de Sistemas) Se, na superclasse,


um mtodo declarado protected, o(s) modificador(es) aplicvel(is) na sobrescrita
do mtodo (so):
A) private.
B) private e protected.
C) default.
D) protected, default e public.
E) protected e public.

6. class Prova{
public int a;
Prova(int _a){
a = _a;
}

public void acrescenta(int n){


a += n;
}

public void acrescenta(){


a++;
}
}

class SubProva extends Prova{


private int b;
SubProva(int umb, int uma){
super(uma);
b = umb;
}

public void acrescenta(int n){


b = b + n + 2;
}

public static void main (String args[ ]) {


SubProva s = new SubProva(2,5);
Prova p = new Prova(2);
s.acrescenta(3);
p.acrescenta();
System.out.println(s.b+s.a);
System.out.println(p.a);
s.acrescenta();
System.out.println(" "+s.b+p.a+s.a) ;
}
}
7. (COSEAC/UFF - Dataprev/2008 - Analista - Desenvolvimento de Sistemas) Com
relao s duas classes anteriores pode-se dizer que:
A) existe sobrecarga no mtodo main;
B) existe sobrecarga no mtodo SubProva;
C) existe sobrecarga no mtodo Prova;
D) existe sobrecarga no mtodo acrescenta;
E) no existe sobrecarga;

8. (ESAF 2009 ANA - Analista de Sistemas) Se, na superclasse, um mtodo


declarado protected, o(s) modificador(es) aplicvel(is) na sobrescrita do mtodo
(so):
a) private.
b)private e protected.
c) "default".
d) protected, default" e public.
e) protected e public.

9. (ESAF 2008 CGU - AFC-TI) Na linguagem de programao Java, pode-se definir a


visibilidade dos mtodos e atributos. Com relao a essa caracterstica, correto
afirmar que:

a) mtodos declarados como public em uma superclasse, quando herdados,


precisam ser protected em todas as subclasses dessa classe.
b) mtodos declarados como protected em uma superclasse, quando herdados,
precisam ser protected ou public nas subclasses dessa classe.
c) o nvel de acesso protected mais restritivo do que o nvel de acesso default.
d) mtodos declarados como public s podem ser acessados a partir dos mtodos
da prpria classe ou de classes derivadas.
e) mtodos declarados como default s podem ser acessados a partir dos mtodos
da prpria classe.

10. O que herana?

11. O que herana mltipla? O Java suporta herana mltipla?

12. Um animal contm um nome, comprimento, nmero de patas (o padro 4),


uma cor, ambiente e uma velocidade (em m/s).
Um peixe um animal, tem 0 patas, o seu ambiente o mar (padro), cor cinzenta
(padro). Alm disso, o peixe tem como caractersticas: barbatanas e cauda;
Um mamfero um animal, o seu ambiente a terra (padro);
Um urso um mamfero, cor castanho e o seu alimento preferido o mel.

Codifique as classes animal, peixe e mamfero.


Para a classe animal, codifique os mtodos:
Animal (String nome, String cor, String ambiente, int comprimento, float
velocidade, int patas);
void alteraNome (String nome);
void alteraComprimento(int comprimento);
void alteraPatas (int patas);
void alteraCor (String cor);
void alteraAmbiente (String ambiente);
void alteraVelocidade (float velocidade);
void dados(); //imprime os dados do animal;

E os seus atributos so:


String nome;
int comprimento;
int patas;
String cor;
String ambiente;
float velocidade;

Para a classe Peixe, codifique:


Peixe (String nome, String caracteristica, int comprimento, float
velocidade);
void alteraCaracteristica (String caracteristica);
String caracteristica ( ); //retorna a caracterstica de um determinado
peixe;
void dados ( ); //imprimir na tela todos os dados;

Para a classe Mamifero, codifique:


Mamifero ( String nome, String cor, String alimento, int comprimento, float
velocidade, int patas);
void alteraAlimento (String alimento);
String alimento ( ); //retorna o alimento de um determinado urso
void dados ( ); imprimir na tela todos os dados;

Por ltimo, crie um arquivo de teste de forma a ter um jardim zoolgico com os
seguintes animais: camelo, tubarao, urso-do-canad.
13. Escreva uma classe chamada Pessoa com os atributos: nome (tipo String), sexo
(tipo char), idade (tipo int). Escreva agora outra classe chamada Amigo, que uma
pessoa (estende da classe Pessoa) de quem sabemos o dia de seu aniversrio,
atributo diaDoAniversario (tipo String). Use encapsulamento e fornea construtor
padro e construtor usando todos os atributos para as duas classes. Faa uma
classe teste para criar um amigo e imprimir o nome e a data de nascimento do
mesmo.

14. Escreva as seguintes classes:


a) Uma classe Pessoa com atributos nome (tipo String) e sobrenome (tipo String).
Use encapsulamento. A classe Pessoa ainda deve ter o seguinte mtodo:
Assinatura String getNomeCompleto()
Efeito Retorna a concatenao do atributo nome com o atributo
sobrenome
Alm disso, a classe deve possuir um construtor sem parmetros e outro
construtor que recebe como parmetros o nome e o sobrenome da pessoa e
armazena respectivamente nos atributos nome e sobrenome.
b) Uma subclasse de Pessoa, chamada Funcionario. A classe Funcionario deve ter
os atributos matricula (tipo int) e salario (tipo double). Use encapsulamento.
Considere a seguinte regra no mtodo modificador setSalario:
Assinatura void setSalario(int valor)
Efeito Atribui ao atributo salrio o valor recebido como parmetro
desde que este valor no seja negativo. Caso seja negativo,
no faz nada.
Todo funcionario recebe seu salrio em duas parcelas, sendo 60% na primeira
parcela e 40% na segunda parcela. Assim, escreva os mtodos:
Assinatura double getSalarioPrimeiraParcela()
Efeito Retorna o valor da primeira parcela do salrio (60%)

Assinatura double getSalarioSegundaParcela()


Efeito Retorna o valor da segunda parcela do salrio (40%)
c) Uma subclasse de Funcionario, chamada Professor. Todo professor recebe seu
salrio em uma nica parcela. Assim, deve-se sobrescrever os mtodos
getSalarioPrimeiraParcela e getSalarioSegundaParcela.
Assinatura double getSalarioPrimeiraParcela()
Efeito Retorna o valor integral do salrio do professor

Assinatura double getSalarioSegundaParcela()


Efeito Retorna o valor zero.

d) Uma classe Programa que, no mtodo main, instancia os seguintes objetos:


Nome da varivel: Nome da varivel: Nome da varivel: pessoa3
pessoa1 (tipo Pessoa) pessoa2 (tipo (tipo Professor)
nome: Joo Funcionario) nome: Antnio
sobrenome: Medeiros nome: Leonardo sobrenome: Silva
sobrenome: Messias salario: 1500.00
salario: 1000.00
Depois disso, executa as seguintes operaes na seguinte ordem:
- Imprime o retorno do mtodo getNomeCompleto para os 3 objetos.
- Imprime o retorno dos mtodos getSalarioPrimeiraParcela e
getSalarioSegundaParcela para os objetos pessoa2 e pessoa3.

15. Escreva uma classe Conta com atributo saldo (tipo double) e os seguintes
mtodos
Assinatura void depositar(double valor)
Efeito Acrescentar o valor recebido como parmetro ao atributo
saldo
Assinatura void sacar(double valor)
Efeito Subtrair o valor recebido como parmetro do atributo saldo
O atributo saldo pode ser negativo. Escreva uma subclasse de Conta chamada
Poupanca. A classe Poupanca deve ter um atributo chamado diaRendimento do
tipo int que armazena o dia do ms em que ocorre o rendimento da poupana.
Use encapsulamento nas duas classes. Fornea construtor que recebe valores para
os atributos correspondentes para as duas classes. O atributo saldo da classe
Poupanca no pode ser negativo. Use esta regra no mtodo modificador do
atributo saldo (mtodo setSaldo):
Assinatura void setSaldo(double valor)
Efeito Atribui ao atributo saldo o valor recebido como parmetro
desde que este valor no seja negativo. Caso seja negativo,
no faz nada.
Aplique esta mesma regra e redefina (por sobreposio) o mtodo sacar para a
classe Poupanca:
Assinatura void sacar(double valor)
Efeito Subtrair o valor recebido como parmetro do atributo saldo
desde que este valor no seja negativo. Caso seja negativo,
no faz nada.
Escreva um programa com um mtodo main que cria um objeto do tipo Conta e
outro objeto do tipo Poupanca. Em seguida realiza um depsito na conta no
valor de 10000 e depois um saque de 15000 da conta e um depsito na
poupana no valor de 15000. Depois realize um saque de 20000 na poupana e
imprima o saldo da conta e da poupana.

16. Escreva as seguintes classes:


Uma classe Equipamento com o atributo ligado (tipo boolean) e com os mtodos:
Assinatura void liga()
Efeito Torna o atributo ligado true

Assinatura void desliga()


Efeito Torna atributo ligado false
Use encapsulamento.
Uma classe EquipamentoSonoro que herda as caractersticas de Equipamento e
que possui os atributos volume (tipo int) e stereo (tipo boolean). Use
encapsulamento. A classe deve possuir os mtodos:
Assinatura void mono()
Efeito Torna o atributo stereo falso

Assinatura void stereo()


Efeito Torna o atributo stereo verdadeiro

Assinatura void liga()


Efeito Sobrescreve o mtodo liga da superclasse. Este mtodo
deve chamar o mtodo liga da superclasse e ajustar o
atributo volume para 5

17. Quais so as regras para a utilizao de sobrescrita de mtodo? Fornea um


exemplo em cdigo Java.

18. Quais so as regras para a utilizao de sobrecarga de mtodo? Fornea um


exemplo em cdigo Java.
19. Em um sistema de folha de pagamento de uma empresa, que calcula o salrio
dos funcionrios, dois tipos de funcionrios so considerados: funcionrios
horistas e funcionrios mensalistas.
Todo funcionrio possui nome e sobrenome. Os funcionrios horistas possuem
como atributos o salarioPorHora (que guarda o salrio por hora) e o numeroHoras
(que guarda o nmero de horas que o horista trabalhou). Os funcionrios
mensalistas possuem o valor do salrio armazenado no atributo salMensal. Caso
o funcionrio mensalista tenha faltado algum dia de trabalho, os dias no
trabalhados implicam em perda de 2 % no valor total do salrio por cada um dos
dias no trabalhados (veja se necessrio criar um atributo para isso).
- A superclasse Funcionrio possui o seguinte atributo: private static int numFunc,
que armazena o nmero de funcionrios instanciados. Esse atributo
incrementado no construtor e decrementado no mtodo finalize da classe.
- A superclasse Funcionrio deve implementar os mtodos: clone e equals (que
so herdados da classe Object) para que seja possvel realizar um clone de um
objeto funcionrio e tambm comparar um funcionrio com outro.
- O clculo do valor do salrio do funcionrio horista : n de horas trabalhadas *
salrio por hora.
- O clculo do valor do salrio do mensalista o valor do seu atributo salMensal.
Um novo clculo do valor do salrio do mensalista deve ser feito caso existam dias
no trabalhados, conforme explicado anteriormente.
- As subclasses devem usar pelo menos um mtodo sobrescrito. Os outros
mtodos devem ser identificados e implementados de acordo com a sua
modelagem.
Desenvolver um sistema orientado a objetos para implementar o sistema de folha
de pagamento de uma empresa, implementando a classe Funcionrio, as
subclasses identificadas por voc e o teste da classe.
Criar um pacote Java (package). O pacote deve ter o seguinte nome: pacote.folha.
Nesse pacote devem estar as classes Funcionrio e subclasses que voc
implementar. As classes do pacote devem ser arquivadas em um arquivo .jar
com o seu nome: nomeDoAlunofolha.jar (que tambm deve ser entregue).
O teste da classe (main Java) deve realizar as seguintes tarefas em ordem:
- mostrar o nmero de funcionrios existentes;
- deve instanciar dois funcionrios horistas;
- deve instanciar dois funcionrios mensalistas;
- deve mostrar o valor do salrio de cada um dos funcionrios;
- deve mostrar nome e sobrenome de cada funcionrio instanciado;
- deve comparar dois funcionrios;
REFERNCIAS BIBLIOGRFICAS

CAELUM. Disponvel em: < http://www.caelum.com.br/apostila-java-orientacao-


objetos/>. Acesso em: 21 jan. 2013.

JAVA STARTER. Disponvel em:


<http://www.t2ti.com/curso/video/java/basico/java_starter.php> Acesso em: 19
jan. 2013.

LUZ, Diego. Linguagens de programao, qual devo escolher? Disponvel em: <
http://webinsider.uol.com.br/2009/09/16/linguagens-sao-linguagens-mas-qual-
devo-escolher/>. Acesso em 22 jan. 2013.

PAMPLONA, Vitor Fernando. Tutorial Java 2: caractersticas bsicas. Disponvel


em: <http://javafree.uol.com.br/artigo/871496/Tutorial-Java-2-Caracteristicas
-Basicas.html>. Acesso em: 20 jan. 2013.