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/webread
er.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_h
ome-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.
D
e

Para byte short char int long float double
byte ----- 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){
bloco de comandos
}else{
bloco de comandos
}
determinada condio for satisfeita.
A estrutura if ... else permite expressar duas
alternativas de execuo, uma delas executa
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
switch (expresso){
case constante1:
bloco decomandos;
break;
case constante2:
bloco decomandos;
break;

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




Comando for
for (inicializao; condio; incremento){
bloco de comandos;
}
O comando for usado
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){
bloco de comandos;
}
como dito anteriormente no comando for, o
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;
}while (condio);
da condio de controle feito no fim do
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
b) four
c) FROM
d) main
e) MAIN
f) nome
g) novo_nome
h) $nome
i) _nome
j) 123nome
k) contador
l) para
m) ENQUANTO
n) 123
o) new
p) table
q) PEN
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.








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.
public class Carro {

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

public void trocarMarcha(){
}

public void ligar(){
}

public void acelerar(){
}
}
Figura 34: Representao de uma classe
Fonte: Elaborao da autora

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.




public class Carro {

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




6. Mtodos
Mtodos so as aes realizadas pelos objetos. Eles podem
nome
tipo
Modificador
de acesso
Palavra
obrigatria para
indicar a criao
de uma classe.
Nome da classe escolhido
pelo programador. Por
padro, utiliza-se sempre a
primeira letra em maiscula.
Conjunto de caractersticas dos objetos da
Classe Carro
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.

public void trocarMarcha(){

}

public boolean estaLigado (){

returntrue;
}

public void frear (int intensidade){

}



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
Mtodo sem retorno e sem
parmetros
Mtodo com retorno do tipo boolean, sem
parmetros. O uso da palavra-chave return
obrigatrio em mtodos com retorno.
Mtodo sem retorno e com parmetro.
Este mtodo necessita da informao
da intensidade da velocidade para ser
executado.
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.




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";
}
}


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
Declarao da
varivel c1 do
tipo Carro.
Cria um objeto na
memria
Definindo valores para os atributos
do Carro criado c1.
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 {

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

public Carro (){

}

public Carro (String placa, String corLataria){
this.placa = placa;
this.corLataria = corLataria;
}

public Carro (String aro){
this.aro = aro;
corParachoque = "preto";
}




A - Construtor sem corpo e sem
parmetros.Quando um construtor
no declarado explicitamente, o
compilador cria um construtor
similar a este.
B - Construtor contendo os parmetros
placa e cor da lataria. Ao usar este
construtor, no momento da criao do
objeto devem ser informados a placa e
a cor da lataria do objeto criado.
C - Construtor com o
parmetro aro. No momento
da construo deve ser
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) {

Carro c1 = newCarro();

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

Carro c3 = newCarro("16");

}
}

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.





Objeto criado usando o
construtor A.
Objeto criado
usando o
construtor B.
Objeto criado usando o
construtor C.


package br.com.senai.exemplo.pacote;

public class Pac {

}



import br.com.senai.exemplo.pacote.Pacote;

public class TestePacote {

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.
Definio do pacote em que a
classe se encontra.
Importao do
pacote para o uso da
classe Pac
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 {

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

public void setPlaca (String placa){
this.placa = placa;
}

public String getPlaca (){
returnthis.placa;
}


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 />
Mtodo que atribui um
valor para a varivel
placa. Na chamada do
mtodo indicado o valor
que a placa ter.
Mtodo que retorna o
valor de um atributo.
Nesse caso, o mtodo
deve retornar uma
string.
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.





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.
Animal
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:
pessoa1 (tipo Pessoa)
nome: Joo
sobrenome:
Medeiros
Nome da varivel:
pessoa2 (tipo
Funcionario)
nome: Leonardo
sobrenome: Messias
salario: 1000.00
Nome da varivel: pessoa3
(tipo Professor)
nome: Antnio
sobrenome: Silva
salario: 1500.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.