ProgramaçãoOrientada aObjetos IUma abordagem comJavaROSICLEIA FRASSON DE SOUZA
INTRODUÇÃO A LINGUAGEM DE PROGRAMAÇÃOOBJETIVOS    compreender o que são programas de computador;    diferenciar hardware...
Já o software é o que não é palpável, ou seja, a imensa cadeia deinstruções que faz com que o computador seja uma ferramen...
máquina, apenas contendo números binários.           Os primeiros computadores criados eram programados apenasutilizando l...
condicionada ao tipo de problema que se quer resolver. Segundo LUZ (2009), aescolha de uma linguagem de programação deve s...
que vai depender se o brasileiro está nos Estados Unidos ou se o                     americano está no Brasil.            ...
diversos trabalhos (tais comorelatórios, gráficos, sistemas de busca,geração de código de barra,manipulação de XML, tocado...
JAVAOBJETIVOS    conhecer a história do Java;    conhecer as diversas distribuições de Java e a utilidade de cada uma   ...
2. Distribuições do Java          Java pode ser encontrada em três distribuições principais, cadauma com sua finalidade es...
O processo de tradução da linguagem Java para a linguagem demáquina é um pouco diferente das outras linguagens de programa...
4. JSE                A JSE é o segmento base da plataforma Java. O JSE possui duasdivisões:          JRE: ambiente de exe...
Acesse o endereço:<http://www.oracle.com/technetwork/java/javase/downloads/index.html> eclique no link correspondente ao J...
Figura 6: Instalação do jdkFonte: Elaboração da autoraPasso 3: A página será redirecionada.Abrirá uma janela semelhante a ...
Figura 8: Instalação do jdkFonte: Elaboração da autoraPasso 5: O download será iniciado.Aguarde a conclusão do download.Fi...
Figura 10: Instalação do jdkFonte: Elaboração da autoraDeve aparecer a próxima janela do instalador.Figura 11: Instalação ...
Figura 12: Instalação do jdkFonte: Elaboração da autoraO instalador pede a confirmação do destino da instalação.Clique em ...
Figura 14: Instalação do jdkFonte: Elaboração da autoraApós concluir o processo de instalação, a janela abaixo será exibid...
princípios e sintaxe da linguagem para desenvolver classes e o segundo conheceras APIs Java e aprender como usá-las.7. Pri...
Figura 17: Acessando o prompt de comandoFonte: Elaboração da autora           Digite o comando javacPrimeiroPrograma.java ...
Na linha 3 está o método main, que é o ponto de partida de qualquer       programa java, é onde o programa é de fato inici...
IDEOBJETIVOS         entender a funcionalidade das IDEs;         conhecer as principais IDEs para desenvolvimento Java; ...
for produzido usando toda a arquitetura com produtos Oracle.         Eclipse: Poderosíssima IDE de desenvolvimento, leve, ...
Figura 20: Download do NetbeansFonte: Elaboração da autora            Após a escolha do local onde ficará salvo o instalad...
Figura 22: Instalação do NetbeansFonte: Elaboração da autora          Na janela seguinte, é necessário aceitar o contrato ...
Figura 24: Instalação do NetbeansFonte: Elaboração da autora          Na próxima tela serão solicitados o local para a ins...
Na próxima tela é mostrado um resumo das configurações dainstalação. Clique em instalar.Figura 26: Instalação do NetbeansF...
Quando a instalação for concluída, a tela abaixo será mostrada. Clique emfinalizar.Figura 28: Instalação do NetbeansFonte:...
Gerar códigos: Pressionando as teclas ALT + INSERT é possível gerarconstrutores e métodos de acesso.Code templates: São pe...
SINTAXE DA LINGUAGEM JAVAOBJETIVOS    entender a utilização do ponto-e-vírgula, espaços em branco e o padrão     case-sen...
de minúsculas. Portanto, escrever letra e LETRA é diferente para o Java.2. Palavras reservadas            O Java possui um...
Existem somente oito tipos primitivos de dados em Java, todo o restoé objeto. Tipos primitivos fazem parte da linguagem e ...
3.3 Tipos numéricosClassificação               Tipo           DescriçãoInteiro                     byte           Variávei...
Figura 30: Casts implícitos e explícitosFonte: Elaboração da autora          Valores de tipos numéricos podem ser transfor...
linguagem Java.      Para     byte        short           char        int            long          float          doubleby...
Os nomes de variáveis em Java devem ser inicializados por uma letra, um       cifrão ou por undescore;       Após o primei...
Uma vez que a variável for definida como constante, é obrigatório, a inicializaçãoda mesma.Convenções de Código      Méto...
<        Menor<=       Menor ou igual==       Igual!=       Diferente&&       E||       OuTabela 6: Operadores lógicosFont...
imediatamente antes ou imediatamente após o nome da variável. Vale ressaltarque esses operadores funcionam de forma difere...
determinada condição for satisfeita.                                A estrutura if ... else permite expressar duasif (exp...
incremento.                                          inicialização: comando de                                           ...
bloco de comandos;                           da condição de controle é feito no fim do           }while (condição);       ...
/* Usodaestruturacondicionalif. * Nesteexemplo, a condição a sersatisfeita é que a idadesejamaior * ouigual a 6. */if ( id...
break;                                  }                                  System.out.println("O valor de j é: " + j);    ...
receba como entrada dois números reais.6. Imprima a soma de 1 até 1000.7. Imprima todos os múltiplos de 3, entre 1 e 100.8...
}Qual será a saída do programa Java mostrado acima?a) 8b) 24c) 25d) 42e)4311. (Cesgranrio - 2012 CHESF - Analista de siste...
++count;}c) for (int x=5; x>12; x-=2){         ++count;}d) x = 1;while (x < 13){        ++x;}e) x = 5;while (x < 12){     ...
PROGRAMAÇÃO ORIENTADA A OBJETOSOBJETIVOS     diferenciar programação estruturada de programação orientada a      objetos;...
2. Princípios da programação orientada a objetos           A programação orientada a objetos foi criada com o intuito deap...
3. Objetos         Objeto é qualquer entidade do mundo real que possui atributos ecomportamentos, como por exemplo, casa, ...
4. Classes                       Uma classe em Java é a especificação para a criação de um objeto.             Uma classe ...
Após a declaração da classe aparecem os atributos e os métodos que            serão detalhados a seguir.            5. Atr...
manipular atributos de objetos para os quais os métodos foram definidos. Os métodos também podem definir e manipular variá...
execução a partir da máquina virtual Java. Não tem valor de retorno,                       mas recebe como argumentoum arr...
de retorno. Ele pode conter parâmetros.                   Toda classe deve ter um construtor definido. Se o construtor não...
public class Principal {    public static void main(String[] args) {                                                      ...
package br.com.senai.exemplo.pacote;public class Pac {                        Definição do pacote em que a                ...
CalculaDescontoHorário: esse método deve dar um desconto de 10% sobre ovalor aferido após todas as outras opções de descon...
ENCAPSULAMENTOOBJETIVOS    entender o conceito de encapsulamento;    conhecer os modificadores de acesso;    utilizar o...
public class Carro {       String placa;       String corLataria;       String corParachoque;     String aro; //modificado...
public class Carro {                                                     Método que atribui um                            ...
4. Sobrecarga de métodos           Métodos sobrecarregados são métodos com o mesmo nome, porémcom assinaturas diferentes. ...
2. Escreva uma classe que represente um pais. Um pais tem como atributos o seunome e a sua dimensão em Km2 e uma lista de ...
Obs: A quantidade máxima de aeronaves que um aeroporto pode ter em       terra é igual a 100 e a quantidade máxima de outr...
public double getVelocidadeMaxima() {           return velocidadeMaxima;     }     public void setVelocidadeMaxima(double ...
HERANÇA E POLIMORFISMOOBJETIVOS    compreender o uso da herança;    usar a sobrescrita de métodos;    entender o concei...
import java.awt.Image;public class Animal {     private Image foto;     private double peso;     private String comida;   ...
public void botar(){       }}2. Sobrescrita de métodos          A sobrescrita de métodos é o mecanismo que permite a alter...
Animalcachorro                   cavalo                     preguiçapossui nome                possui nome                ...
3. (FCC - TRT 20ª REGIÃO/2010 - Tecnologia da Informação) Considere o códigoJAVA abaixo:public class Carro extends Veiculo...
E) protected e public.6. class Prova{       public int a;       Prova(int _a){            a = _a;       }       public voi...
Introdução a linguagem java
Introdução a linguagem java
Introdução a linguagem java
Introdução a linguagem java
Introdução a linguagem java
Introdução a linguagem java
Introdução a linguagem java
Upcoming SlideShare
Loading in …5
×

Introdução a linguagem java

9,895 views

Published on

Introdução a linguagem java

  1. 1. ProgramaçãoOrientada aObjetos IUma abordagem comJavaROSICLEIA FRASSON DE SOUZA
  2. 2. INTRODUÇÃO A LINGUAGEM DE PROGRAMAÇÃOOBJETIVOS  compreender o que são 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 programação;1. O que são programas de computadores Computadores são máquinas capazes de realizar uma infinidade detarefas em uma velocidade e precisão muito melhor do que nós humanos. Atualmente, eles estão presentes nos mais diversos segmentos: indústria; negócios; telecomunicações; medicina; e na vida pessoal de bilhões de pessoas. Na era em que estamos, seria incogitável viver sem essas poderosasmáquinas. Porém, os computadores não conseguem fazer nada sozinhos, elesprecisam ser orientados para executar qualquer tarefa. O conjunto de orientações dadas ao computador, para que o mesmoexecute uma tarefa específica, é chamado de programa de computador ousoftware. 2. Hardware X Software O hardware é a parte física do computador. É composta peloscomponentes elétricos, eletrônicos, chips, enfim tudo o que é físico nocomputador.
  3. 3. Já o software é o que não é palpável, ou seja, a imensa cadeia deinstruções que faz com que o computador seja uma ferramenta útil.3. Componentes de um computadorFigura 1: Componentes de um computadorFonte: TI na net. Disponível 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 vários componentese cada um tem uma responsabilidade. Os componentes de entrada/saída tem a função de comunicar ocomputador com o usuário e o usuário com o computador. A memória secundária serve para armazenar grandes quantidades dedados e evitar que estes se percam com o desligamento do computador. A CPU (Unidade Central de Processamento) é o cérebro docomputador. Ela é a responsável por organizar todas as funções executadas pelomesmo. Cabe a CPU executar as instruções dadas pelos programas decomputador. Para executar os programas, o processador utiliza a memória RAMpara armazenar as informações necessárias a execução dos programas.4. Linguagem do processador O processador é um circuito eletrônico digital. Deste modo, eleconsegue processar informações apenas compostas por bits, ou seja apenas 0 e1. Isto se aplica também as instruções dadas nos softwares. Para que oprocessador possa entender, as instruções devem ser passadas em linguagem de
  4. 4. máquina, apenas contendo números binários. Os primeiros computadores criados eram programados apenasutilizando linguagem de máquina. Para inserir as instruções nestes, eranecessário uma grande quantidade de pessoas que percorriam a gigantescamáquina acionando ou desligando interruptores. Era um processo muito demorado e sujeito a muitos erros. Por essemotivo, surgiram as linguagens de programação, que são mais próximas aslinguagens humanas.5. Interpretadores e Compiladores Para que os processadores possam executar as instruções escritas emlinguagens de programação, é necessário traduzir as instruções para a linguagemde máquina.A tarefa de conversão é feita por um programa de computador querecebe as instruções de alto nível e as converte para instruções binárias. Existemalguns métodos para efetuar o processo de tradução. Os mais conhecidos sãocitados abaixo: Interpretador: Quando um interpretador é utilizado para efetuar a conversão, o mesmo vai percorrendo as instruções e à medida em que vai interpretando cada instrução, vai traduzindo para o processador, que então executa cada ação correspondente. Em cada execução do programa é necessário o uso do interpretador. O uso de um interpretador torna a execução do programa mais lenta. Compilador: Utilizando um compilador, as instruções das linguagens de programação geram um outro código em linguagem de máquina. A execução do programa é feita com o arquivo compilado, não sendo mais necessário o uso do compilador. A execução de programas compilados é mais rápida, porém, o programa deve ser compilado para cada tipo de processador e de sistema operacional.6. Linguagens de programação Uma linguagem de programação é um meio padronizado de escreverinstruções para um processador. Existem uma infinidade de linguagens deprogramação e cada uma delas, foi construída com um propósito diferente. A escolha de uma linguagem de programação deve estar
  5. 5. condicionada ao tipo de problema que se quer resolver. Segundo LUZ (2009), aescolha de uma linguagem de programação deve ser guiada por algunsprincípios: Partindo do princípio de que uma linguagem deve facilitar a comunicação com outras pessoas e ajudar você a expressar seu conhecimento, vamos entrar no contexto do desenvolvimento de software e colocar em discussão um tema que gera muita confusão, acaba com longas amizades e até destrói casamentos. Qual a melhor linguagem de programação? 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 programação é permitir que um programador possa resolver problemas computacionais criando um conjunto de instruções que seguem um determinado padrão, por meio do qual se representam ações executáveis 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 razoável, já sofreu com problemas durante a reutilização do código – comentários que não comentam nada, códigos macarrônicos e outros fatores que atrasam qualquer projeto de criação de software. Não existe nada mais estressante para um desenvolvedor do que perder horas, dias, semanas ou meses tentando entender um código que outro programador criou. Com isso você perde muito tempo de desenvolvimento, tentando ler códigos e corrigir bugs e perdendo produtividade. Pensando dessa forma, uma linguagem de programação deve melhorar a comunicação entre desenvolvedores, facilitando a criação de códigos mais limpos, claros e que podem ser lidos facilmente por outro programador a qualquer momento. Portanto ser o mais próximo de uma linguagem humana e intuitiva é uma grande qualidade e deve ser considerada na escolha de uma linguagem para começar a programar. Então para de enrolar e diz logo qual devo escolher! Sinto desapontá-lo, mas essa pergunta não tem uma resposta predefinida, pois depende de alguns fatores que estão totalmente incorporados à relação do programador com a linguagem. Você deve escolher a linguagem que faça 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 trás dela. Mas cuidado para nunca ficar limitado a não conhecer as novas tecnologias que surgirem. É um erro grave que frequentemente acontece no mundo do desenvolvimento de software. Antes de concluir o raciocínio, um exemplo interessante de que a linguagem melhor é a que fornece a possibilidade de se expressar melhor, acontece quando imaginamos um possível bate papo entre um brasileiro e um americano, por exemplo. Muitas pessoas podem achar que o correto é o brasileiro falar inglês, outras acham que o americano é quem deve falar português e alguns
  6. 6. 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 confortável, seja ela falar inglês, português ou tentar uma comunicação por mímica. Portanto, procurem conhecer bem a linguagem que você programa ou está interessado em começar a programar e a comunidade por trás dela. Procure uma linguagem que te possibilite desenvolver seu conhecimento da melhor e menos dolorosa forma possível. Caso você consiga isso, ela é ideal. Na verdade, a linguagem pouco importa. Você, o programador, é quem faz toda a diferença no final das contas.7. Por que Java? Em um curso de desenvolvimento, a escolha de uma linguagem deprogramação é um processo bem delicado. Java foi escolhida por atenderalguns requisitos. Dentre eles, pode-se citar: Facilidade de aprendizado; Versatilidade; Popularidade; Amplo mercado de trabalho; Segurança; Inúmeros frameworks; Grande aceitação nas companhias; Gratuidade e Abundância de informações; Além disso, os conceitos utilizados em Java ajudam a entendermelhor outras linguagens e tecnologias. O que deve ficar claro é que oobjetivo do Java não é o de construir sistemas pequenos, com um ou doisdesenvolvedores, para estes existem linguagens de programação maisprodutivas como cita CAELUM (2012): O foco da plataforma é outro: aplicações demédio a grande porte, onde o time de desenvolvedores tem váriaspessoas e sempre pode vir amudar e crescer. Não tenha dúvidas que criar a primeira versão de uma aplicaçãousando Java, mesmo utilizando IDEs e ferramentas poderosas, será mais trabalhoso que muitas linguagensscript ou de alta produtividade. Porém, com uma linguagem orientada a objetos e madura como o Java,será extremamente mais fácil e rápido fazer alterações no sistema, desde que você siga as boas práticas erecomendações sobre design orientado a objetos.Além disso, a quantidade enorme de bibliotecas gratuitas para realizar os mais
  7. 7. diversos trabalhos (tais comorelatórios, gráficos, sistemas de busca,geração de código de barra,manipulação de XML, tocadores devídeo,manipuladores de texto, persistência transparente, impressão,etc) é um ponto fortíssimo para adoção doJava: você pode criar umaaplicação sofisticada, usando diversos recursos, sem precisarcomprar um componenteespecífico, que costuma ser caro. Oecossistema do Java é enorme.Cada linguagem tem seu espaço e seu melhor uso. O uso do Java éinteressante em aplicações que virãoa crescer, em que a legibilidadedo código é importante, onde temos muita conectividade e se hámuitasplataformas (ambientes e sistemas operacionais)heterogêneas (Linux, Unix, OSX eWindows misturados).
  8. 8. JAVAOBJETIVOS  conhecer a história do Java;  conhecer as diversas distribuições de Java e a utilidade de cada uma delas;  entender o processo de compilação e execução dos programas em Java;  compreender a diferença entre jdk e jre;  aprender a instalar o jdk;  entender o que são APIs Java;  desenvolver o primeiro programa em Java.1. Um pouco de história... Java foi construída para ser utilizada em pequenos dispositivoseletrônicos, o que não deu muito certo, pois o projeto era muito avançadopara a época. Com a explosão 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, cartões de crédito,blue-rays e até em anéis. A parte mais interessante é que a tecnologia Java nasceu com ointuito de programar pequenos dispositivos, percorreu um longo caminho e acada dia está mais presente em dispositivos eletrônicos, o que era o objetivoinicial. PARA SABER MAIS  Para conhecer detalhes da história do Java acesse:<http://www.devmedia.com.br/websys.4/webread er.asp?cat=61&revista=easyjavamag_1#a-2982>
  9. 9. 2. Distribuições do Java Java pode ser encontrada em três distribuições principais, cadauma com sua finalidade específica: Java StandartEdition (JSE): Usada em computadores pessoais e ambientes de trabalho. Várias APIs acompanham esta versão e tantas outras podem ser baixadas do site da Oracle. Java Enterprise Edition (JEE): É a tecnologia Java para aplicativos distribuídos em rede em larga escala e aplicativos baseados na web . Possui um grande número de APIs voltadas para a segurança da aplicação. 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 móveis. Possui APIs bem simples e leves para economizar memória e processamento.Figura 2: Edições da linguagem Java e seus respectivos alvos de aplicação.Fonte: FIORESI, Cristiano. Conceitos básicos da plataforma Java e J2ME. Disponível em:<http://www.devmedia.com.br/conceitos-basicos-das-plataformas-java-e-j2me/6484> Acesso em: 12 jan 2013. Além das três principais distribuições, também existe o Java Card,que é uma edição específica para cartões inteligentes, extremamente reduzida.Nesta tecnologia até a máquina virtual é dividida entre o sistema do cartão e osistema operacional do terminal.3. Compilador e interpretador Java
  10. 10. O processo de tradução da linguagem Java para a linguagem demáquina é um pouco diferente das outras linguagens de programação. Osprogramas Java são compilados e interpretados. Após a criação de um programa Java, um compilador transforma oprograma em uma linguagem intermediária, como pode ser visto na figura 3,chamada de bytecodes. O bytecode é independente de plataforma.Todas asvezes que o programa é executado, a JVM (Java Virtual Machine) lê o arquivocom a extensão .class que está em bytecode e o interpreta para o processador.Figura 3: Processo de criação e execução de um programa JavaFonte: MELO, Mario. Minicurso Java Básico Com o uso da máquina virtual, o programa fica independente desistema operacional e de plataforma. Uma máquina virtual é muito mais amplado que um interpretador. Uma máquina virtual é uma espécie de computador dementira, tem tudo o que um computador tem: gerenciamento de memória,thread, pilha de execução. Nas primeiras versões do Java, o processo de interpretação feito pelaJVM era lento, o que tornava um problema para a linguagem. Na versão 1.2surgiu o Compilador Just In Time ou Compilador JIT. O compilador JIT trabalhaem conjunto com o interpretador Java. O interpretador verifica quais trechos decódigo são executados mais vezes e pede que o compilador JIT os compile,convertendo o bytecode na linguagem de máquina do processador que estáexecutando o programa. O JIT também possui informações relativas ao ambienteem que está executando, como quantidade de usuários simultâneos e memóriadisponível. Com essas informações a JVM muda a estratégia de compilação embusca de um melhor desempenho.
  11. 11. 4. JSE A JSE é o segmento base da plataforma Java. O JSE possui duasdivisões: JRE: ambiente de execução Java para quem quer apenas executar programas em Java. É composta pela JVM e as APIs Java, que é uma coleção de softwares prontos, que incluem desde estruturas para a manipulação de arquivos até a construção de aplicativos gráficos. JDK: é o conjunto de ferramentas necessárias para o desenvolvimento de programas Java. É composto pela JRE, javac (compilador), jar (empacotador) e o javadoc (documentação) Na figura 4 é possível observar as APIs que compõem a plataformaJava e as ferramentas que acompanham o kit de desenvolvimento (jdk).Figura 4: Arquitetura JSEFonte: PAMPLONA, Vitor Fernando. O que é Java. Disponível 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 é necessário ter o jdkinstalado. Abaixo segue um passo-a-passo para a instalação no sistemaoperacional windows.Passo 1: Acessar o site da Oracle
  12. 12. Acesse o endereço:<http://www.oracle.com/technetwork/java/javase/downloads/index.html> eclique no link correspondente ao JDK 7.Figura 5: Instalação jdkFonte: Elaboração da autoraPasso 2: A página será redirecionada.Clique em aceitar os termos da licença e escolha a versão compatível com osistema operacional. Neste caso, o Windows 64 bits.
  13. 13. Figura 6: Instalação do jdkFonte: Elaboração da autoraPasso 3: A página será redirecionada.Abrirá uma janela semelhante a figura abaixo, para a confirmação do download.Clique em Download.Figura 7: Instalação do jdkFonte: Elaboração da autoraPasso 4: Escolha o local onde o arquivo será salvo.Escolha o local e clique em Salvar.
  14. 14. Figura 8: Instalação do jdkFonte: Elaboração da autoraPasso 5: O download será iniciado.Aguarde a conclusão do download.Figura 9: Instalação do jdkFonte: Elaboração da autoraPasso 6: InstalaçãoDê um duplo clique no instalador e a janela abaixo deverá ser exibida.Clique em Next.
  15. 15. Figura 10: Instalação do jdkFonte: Elaboração da autoraDeve aparecer a próxima janela do instalador.Figura 11: Instalação do jdkFonte: Elaboração da autoraO botão Change permite alterar o local de instalação.Clique em Next.Deve iniciar o processo de instalação
  16. 16. Figura 12: Instalação do jdkFonte: Elaboração da autoraO instalador pede a confirmação do destino da instalação.Clique em Next.Figura 13: Instalação do jdkFonte: Elaboração da autoraDeve aparecer a janela abaixo.
  17. 17. Figura 14: Instalação do jdkFonte: Elaboração da autoraApós concluir o processo de instalação, a janela abaixo será exibida.Clique em Close.Figura 15: Instalação do jdkFonte: Elaboração da autora6. Bibliotecas de classes do Java Os programas Java são formados por classes. As classes contémmétodos que executam tarefas e retornam informações quando as mesmas sãoconcluídas. É possível criar tudo que é necessário para construir um programaJava, porém Java traz consigo inúmeras classes prontas, que realizam as maisvariadas tarefas. Essas classes são chamadas de APIs. Deste modo, existem doisaspectos para aprender o mundo Java. O primeiro deles, é compreender os
  18. 18. princípios e sintaxe da linguagem para desenvolver classes e o segundo conheceras APIs Java e aprender como usá-las.7. Primeiro programa em Java Além de ter o jdk instalado, é necessário ter um editor de texto. Abraqualquer editor de texto e digite o texto mostrado na figura 16.A princípio, nãose preocupe em entender tudo o que está escrito. Logo abaixo o código seráexplicado linha a linha. Vale lembrar que o Java é case sensitive, então cuidadopara não trocar letras maiúsculas e minúsculas. Essa troca pode gerar um erro nomomento da compilação.Figura 16: Primeiro programa em JavaFonte: Elaboração da autora Salve o arquivo dentro da pasta Programas, contida no C: com onome PrimeiroPrograma.java. Vale ressaltar que os programas em Java devemser salvos com omesmo nome da classe. O programa já está salvo. Como já visto no tópico 3 deste capítulo, osprogramas Java são compilados e interpretados. Portanto, o próximo passo écompilar o código. Para compilar o programa é necessário solicitar ao compiladordo Java chamado javac, que gere o bytecode correspondente ao código Java.Para fazê-lo abra o terminal do Windows e vá até o diretório em que o programaestá salvo.
  19. 19. Figura 17: Acessando o prompt de comandoFonte: Elaboração da autora Digite o comando javacPrimeiroPrograma.java no prompt decomando. Se não ocorrer nenhum erro, deve aparecer no diretório onde estásalvo o arquivo java, um arquivo PrimeiroPrograma.class. O arquivo .class é oarquivo que contêm o bytecode do código fonte. O próximo passo é fazer com que a JVM interprete o bytecode eexecute o programa. Para executar o programa no prompt de comando digitejavaPrimeiroPrograma. Deve aparecer na tela a seguinte mensagem: Este é meuprimeiro programa em Java!.Figura 18: Execução do programa Java pelo prompt de comandoFonte: Elaboração da autora A seguir está descrito o que faz cada linha do código: A linha 1 cria uma classe (palavra-chave class) pública (palavra-chave public) chamada PrimeiroPrograma;
  20. 20. Na linha 3 está o método main, que é o ponto de partida de qualquer programa java, é onde o programa é de fato iniciado. A função main precisa ser pública (palavra-chave public), estática (palavra-chave static), sem tipo de retorno (palavra-chave void) e precisa conter um parâmetro array do tipo String (Stringargs[]). A linha 5 indica que o que está escrito entre os parênteses deve aparecer na tela. PARA SABER MAIS  Para mais informações 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 FIXAR1. Qual a diferença entre jdk e jre?2. Crie uma classe Java que imprima o texto: "Consegui concluir meu primeiroprograma em Java".
  21. 21. IDEOBJETIVOS  entender a funcionalidade das IDEs;  conhecer as principais IDEs para desenvolvimento Java;  visualizar os passos para a instalação da IDE Netbeans;  conhecer as principais funcionalidades da ferramenta.1. IDEs Como visto no capítulo anterior, o processo de criar programas emJava usando o bloco de notas e o prompt de comando é um processo bemdispendioso. Para deixar o processo de desenvolvimento mais produtivo, existemprogramas específicos, chamados de IDEs (Ambiente de DesenvolvimentoIntegrado). Uma IDE é um software que tem como objetivo maximizar aprodutividade em uma ferramenta única. Alguns recursos que as IDEs possuem: Editor de código: Escrita rápida de código, auto completar, gerenciamento de importações, dicas para correção e geração de código. Depurador: Facilidade na busca por erros no código através da análise cuidadosa de cada passo executado pelo software. Compilador: Geração de código de máquina a partir do código fonte automaticamente. Deploy: Publicação da aplicação, geração de executáveis. Código limpo e automatizado: Facilidadeno entendimento do projeto por todos os envolvidos. JVM: Processo de interpretação de bytecodes automático.2. Principais IDEs para o desenvolvimento Java Existem uma infinidade de IDEs para o Java, abaixo segue ascaracterísticas de algumas delas. JDeveloper: O JDeveloper é uma ferramenta da Oracle que tem como principal característica a cobertura de todo o ciclo de desenvolvimento: análise, codificação, manutenção, otimização e implantação. Esta ferramenta é pouco flexível e seu uso é recomendado quando o software
  22. 22. for produzido usando toda a arquitetura com produtos Oracle. Eclipse: Poderosíssima IDE de desenvolvimento, leve, rápido configurávelcom inúmeros 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 código automático, não editável.3. Netbeans Neste curso, vamos optar pela IDE Netbeans, por ter um melhorsuporte para desenvolvimento Desktop. O Netbeans é uma ferramenta gratuita etem 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 página correspondenteserá visualizada uma tela como na figura abaixo:Figura 19: Download do NetbeansFonte: Elaboração da autora Inicialmente, os softwares desenvolvidos, terão o padrão Desktop,deste modo, baixar a versão correspondente a Java SE é suficiente. Clicando emDownload, será aberta uma janela para a escolha do local onde o instalador serásalvo como mostra a figura abaixo.
  23. 23. Figura 20: Download do NetbeansFonte: Elaboração da autora Após a escolha do local onde ficará salvo o instalador clique emsalvar. O download será iniciado. Dê um duplo clique sobre o instalador. A janelado mesmo será aberta.Figura 21: Instalação do NetbeansFonte: Elaboração da autora Na janela abaixo, clicando em personalizar é possível escolher ospacotes que serão instalados. Após ter efetuado a escolha, clique em próximo.
  24. 24. Figura 22: Instalação do NetbeansFonte: Elaboração da autora Na janela seguinte, é necessário aceitar o contrato de licença. Cliqueem próximo.Figura 23: Instalação do NetbeansFonte: Elaboração da autora A próxima janela é sobre o framework JUnit. O JUnit é umaferramenta usada para testes. Neste momento não será necessário instalar amesma. Clique em não instalar JUnit. Clique em próximo.
  25. 25. Figura 24: Instalação do NetbeansFonte: Elaboração da autora Na próxima tela serão solicitados o local para a instalação e o localonde o jdk se encontra. Depois de preencher essas afirmações, clique empróximo.Figura 25: Instalação do NetbeansFonte: Elaboração da autora
  26. 26. Na próxima tela é mostrado um resumo das configurações dainstalação. Clique em instalar.Figura 26: Instalação do NetbeansFonte: Elaboração da autora A tela do progresso da instalação será mostrada.Figura 27: Instalação do NetbeansFonte: Elaboração da autora
  27. 27. Quando a instalação for concluída, a tela abaixo será mostrada. Clique emfinalizar.Figura 28: Instalação do NetbeansFonte: Elaboração da autora4. Funcionalidades do Netbeans As principais funcionalidades do Netbeans são: Autocompletar: Pressionando as teclas CTRL + Espaço, uma caixa de seleção será aberta, com opções para preenche o código faltante. Gerenciar importações: O Netbeans varre o código do editor de texto constantemente e avisa imediatamente a ocorrência de classes não importadas ou instruções importadas não utilizadas. Nos casos de não importação de classes, uma marca de erro é exibida e para importações não utilizadas uma advertência. Dicas para corrigir código: Para os erros mais comuns de código, o Netbeans enumera possíveis maneiras de corrigir os mesmos. Formatar código: Pressionando ALT + SHIFT + F, o Netbeans formata o código da classe. Dobramento de código: No editor de código, é possível contrair e expandir blocos de código. Com este recurso, é possível deixar as partes de código que se está trabalhando mais visível.
  28. 28. Gerar códigos: Pressionando as teclas ALT + INSERT é possível gerarconstrutores e métodos de acesso.Code templates: São pedaços de código que podem ser acessados poratalhos. Existem alguns disponíveis no Netbeans e estão citados abaixo.Eles devem ser acessados juntamente com a tecla TAB. o sout: Atalho para o psvm: Atalho para o método 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 depuração do projeto principal; o SHIFT + F6: executar projeto principal; o ALT+ ENTER: exibir dica.
  29. 29. SINTAXE DA LINGUAGEM JAVAOBJETIVOS  entender a utilização do ponto-e-vírgula, espaços em branco e o padrão case-sensitive presente na linguagem Java;  conhecer as palavras reservadas;  aprender a utilizar os tipos primitivos de dados;  compreender os casts implícitos e explícitos entre tipos numéricos;  entender o uso de Strings em Java;  aprender como se declaram as variáveis e constantes em Java;  compreender a diferença de alocação na memória entre os tipos primitivos e as variáveis de referência;  conhecer o GarbageCollector;  conhecer os operadores básicos, lógicos, aritméticos, incremento e decremento e de atribuição;  aprender a sintaxe das estruturas de controle e repetição da linguagem Java;  diferenciar os tipos de comentários e a utilidade de cada um.1. Ponto-e-vírgula, blocos, espaços em branco e case-sensitive Java é uma linguagem de formato livre, ou seja, não existem regrasespeciais para o espaçamento vertical ou para a identação horizontal. Porém,para uma melhor legibilidade do código, é interessante usar espaços, tabulaçõese novas linhas. Em Java, espaços em branco podem ser usados sem restrições. Um bloco é formado por uma ou mais instruções agrupadas entrechaves indicando que formam uma só unidade. O uso de chaves em Java indica apresença de um bloco, ondea abertura da chave indica o início do bloco e ofechamento da chave, o fim do bloco. Os blocos podem ser organizados emestruturas aninhadas infinitamente. Uma instrução é composta por uma ou mais linhas terminadas comum ponto-e-vírgula. No fim de cada instrução, indispensavelmente deve serusado o sinal de pontuação ponto-e-vírgula. A quebra de linha não separainstruções. O Java é uma linguagem case-sensitive, ou seja, diferencia maiúsculas
  30. 30. de minúsculas. Portanto, escrever letra e LETRA é diferente para o Java.2. Palavras reservadas O Java possui uma lista de palavras que possuem um significadoespecial para o compilador. Essas palavras não podem ser usadas na declaraçãode classes, métodos e variáveis. A tabela 1 lista estas palavras.abstract assert boolean break byte casecatch char class const continue defaultDo double else enum extends falsefinal finally float for goto ifimplements import instanceof int interface longnative new null package private protectedpublic return short static strictpf superswitch synchronized this throw throws transientTry void volatile whileTabela 1: Palavras reservadas JavaFonte: Elaboração da autora.3. Tipos primitivos de dadosFigura 29: Declaração de tipos primitivos em JavaFonte: Elaboração da autora
  31. 31. Existem somente oito tipos primitivos de dados em Java, todo o restoé objeto. Tipos primitivos fazem parte da linguagem e não são instâncias deoutras classes. A declaração dos tipos primitivos pode ser vista na figura 29. Osseus nomes são palavras reservadas.3.1 Tipo boolean O tipo boolean é o tipo mais simples encontrado em Java. Umavariável booleana pode conter apenas dois valores: true ou false, querepresentam os valores verdadeiro e falso, respectivamente. O valor padrão dotipo boolean é false.3.2 Tipo char O tipo char representa um único caracter em Java. Caracteres emJava são representados usando o conjunto de caracteres Unicode, usando doisbytes por caracter. Esta representação de caracteres permite a representaçãoem várias línguas simultaneamente. Alguns caracteres são considerados especiais – se tentarmos imprimiresses caracteres ao invés de imprimir um caracternormal, uma ação especialocorrerá. É o caso, por exemplo do número 7 que corresponde ao som bell. Existem ainda os caracteres de controle, mostrados na tabela 2.Caracter Descrição” aspa dupla’ aspa simplesn nova linhat Tabulação Barrar EnterTabela 2: Caracteres de controleFonte: Elaboração da autora
  32. 32. 3.3 Tipos numéricosClassificação Tipo DescriçãoInteiro byte Variáveis do tipo byte podem representar valores inteiros com 8 bits de precisão, ou seja, valores entre -128 a 127. short Variáveis do tipo short podem representar valores inteiros com 16 bits de precisão, ou seja, valores entre -32768 a 32767. int Variáveis do tipo int podem representar valores inteiros com 32 bits de precisão, ou seja, valores entre -2147483648 a 2147483647. long Variáveis do tipo long podem armazenar valores inteiros com 64 bits de precisão, ou seja, valores entre -9223372036854775808 a 9223372036854775807.Ponto Flutuante float Variáveis do tipo float podem armazenar valores em ponto flutuante com 32 bits de precisão, na faixa de - 1.40239846E-45 a 3.40282347E + 38 (9 dígitos significativos de precisão). double Variáveis do tipo double podem armazenar valores em ponto flutuante com 64 bits de precisão, na faixa de - 4.94065645841246544E- 324 a 1.79769313486231570E + 308 (18 dígitos significativos de precisão).Tabela 3: Tipos primitivos numéricos em JavaFonte: Elaboração da autora Ao escolher um tipo de dado para ser usado, o programador deveestar atento a faixa de valores que o campo pode vir a ocupar. Para representar valores decimais em Java, utilizamos o ponto aoinvés da vírgula.4. Conversão entre tipos primitivos
  33. 33. Figura 30: Casts implícitos e explícitosFonte: Elaboração da autora Valores de tipos numéricos podem ser transformados em outrostipos numéricos de duas formas: Implicitamente: A JVM transforma em tempo de execução, quando acha conveniente, tipos restritos em tipos com maior amplitude, ou seja, uma variável pode receber valores de variáveis de tipos com tamanho menor do que a mesma foi declarada. . Nenhuma informação é perdida (Figura 30). Através de uma operação chamada casting ou conversão explícita. Para efetuar a conversão explícita, basta colocar o tipo de dado para o qual se deseja converter entre parênteses antes da expressão a ser convertida. Neste caso, o programador estará se responsabilizando por possíveis perdas de valores (Figura 30). Na tabela abaixo, estão relacionados todos os casts possíveis na
  34. 34. linguagem Java. Para byte short char int long float doublebyte De ----- implícito (char) implícito implícito implícito implícitoshort (byte) ----- (char) implícito implícito implícito implícitochar (byte) (short) ----- implícito implícito implícito implícitoint (byte) (short) (char) ----- implícito implícito implícitolong (byte) (short) (char) (int) ----- implícito implícitofloat (byte) (short) (char) (int) (long) ----- implícitodouble (byte) (short) (char) (int) (long) (float) -----Tabela 4 :Casts possíveis na linguagem JavaFonte: CAELUM. Java e orientação a objetos. Disponível em: < http://www.caelum.com.br/apostila-java-orientacao-objetos/> Acesso em 14 jan 2013.5. String Em Java não existe um tipo primitivo para se trabalhar com textos.Para fazer uso dos mesmos é necessário utilizar a classe String presente no Javadesde a primeira versão. Por ser uma classe amplamente usada, ela não precisaser instanciada, sua atribuição é composta por uma sequência de caracteresdelimitados por aspas duplas.6. Declaração de variáveis Variáveis são espaços na memória onde podemos guardarinformações. Cada valor é convertido para binário e então pode ser alocado namemória.Praticamente todos os programas usam variáveis. E como o próprionome diz, elas podem ter o valor modificado durante a execução do programa.As variáveis possuem tipos diferentes, dependendo da informação a serarmazenada. No Java, para declarar uma variável é necessário especificar o tipo,dar um nome a ela e preferencialmente inicializá-la. Os nomes de variáveis ou identificadores possuem algumas regraspara que o compilador identifique como válido:
  35. 35. Os nomes de variáveis em Java devem ser inicializados por uma letra, um cifrão ou por undescore; Após o primeiro caracter, vale qualquer combinação de números, letras e caracteres; Os identificadores não podem ter o nome igual ao de uma palavra reservada.7. Diferença entre tipos primitivos e variáveis de referência As variáveis primitivas guardam o real conteúdo da variável. Umavariável de tipo primitivo pode armazenar exatamente um valor de seu tipodeclarado por vez, quando outro valor for atribuído a essa variável, seu valorinicial será substituído. As variáveis de referência são as variáveis que apontam para umobjeto, ou seja,guardam um endereço de memória para um objeto criado.Destaforma, quando um outro valor é atribuído para a variável, uma nova posição dememória aloca o novo valor e a referência aponta para a nova posição dememória. O tamanho alocado para uma variável de referência é sempre fixo,pois se trata de um endereço de memória que mostra como chegar ao objeto.8. GarbageCollector Quando referências são criadas, espaço em memória é alocado aelas. Quando não as utiliza mais, este espaço precisa ser liberado. Em Java, isto é responsabilidade do GarbageCollector. Este mecanismo verifica os espaços de memória sem referência e os limpa para um melhor aproveitamento. O coletor de lixo em Java faz issoautomaticamente, ou seja, o programador não precisa se preocupar com isso.9. Constantes Uma constante em Java recebe um valor que não pode sermodificado. Para criar uma constante em Java é utilizado o modificador final.
  36. 36. Uma vez que a variável for definida como constante, é obrigatório, a inicializaçãoda mesma.Convenções de Código  Métodos, atributos e variáveis: Devem ser declarados com letras minúsculas. Caso seja nome composto, a primeira letra de cada palavra, exceto a primeira, deve ser escrita em maiúscula. Ex: nome, meuNome.  Constantes: Devem ser usadas letras maiúsculas na declaração. Em casos de palavras compostas, as palavras devem ser divididas usando o undescore.10.Operadores básicos. Referência a método, função ou atributo de um objeto., Separador de identificadores.; Finalizador de declarações e comandos.[] Declarador de vetores e delimitador de índices.{} Separador de blocos.() Lista de parâmetros.= Operador de atribuição.Tabela 5: Operadores básicos da linguagem JavaFonte: Elaboração da autora11. Operadores lógicos> Maior>= Maior ou igual
  37. 37. < Menor<= Menor ou igual== Igual!= Diferente&& E|| OuTabela 6: Operadores lógicosFonte: Elaboração da autora12. Operadores aritméticos Na tabela 1, estão apresentados os operadores aritméticosdisponíveis em Java.+ Soma- Subtração/ Divisão* Multiplicação% Módulo (resto da divisão)Tabela 7: Operadores lógicosFonte: Elaboração da autora13. Incremento e decremento Os operadores de incremento e decremento são operadores queatuam sobre uma única variável numérica, aumentando ou diminuindo ou seuvalor. 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
  38. 38. imediatamente antes ou imediatamente após o nome da variável. Vale ressaltarque esses operadores funcionam de forma diferente dependendo da posição emrelação a variável. Se o operador for colocado antes, a variável é incrementadano momento da sua avaliação. Caso contrário, a variável é incrementada após asua avaliação. Maiores detalhes podem ser vistos na tabela abaixo:Operador Exemplo Significado++ ++x Incrementa a variável e depois usa. x++ Usa a variável e depois incrementa.-- --x Decrementa a variável e depois usa. x-- Usa a variável e depois decrementa.Tabela 8: Operadores de incremento e decrementoFonte: Elaboração da autora14. Operadores de atribuição Para efetuar uma operação aritmética seguida da atribuição do valorde retorno a variável que continha o primeiro termo da operação, pode serutilizada uma notação compacta. Segue abaixo a mesma:Operador Exemplo Expressão 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%yTabela 9: Operadores de atribuiçãoFonte: Elaboração da autora15. Estruturas de controle e repetição Instrução ifComando if... else  A estrutura if permite especificar um comando ou um bloco de comandos que devem ser executados quando uma
  39. 39. determinada condição for satisfeita.  A estrutura if ... else permite expressar duasif (expressão){ alternativas de execução, uma delas executabloco de comandos caso a condição seja verdadeira e a outra}else{ quando a condição não for satisfeita.bloco de comandos  Quando houver apenas um comando dentro} do bloco if ou do bloco else, não é necessário o uso das chaves.  Quando houver comandos if aninhados, cada else está relacionado ao if que estiver dentro do mesmo bloco que ele. Instrução switchComando switch  O comando switch faz o teste daswitch (expressão){ expressão de seleção contra os valorescase constante1: das constantes indicados nas cláusulasbloco decomandos; case, até que um valor verdadeiro sejabreak; obtido.case constante2:  Se nenhum dos testes produzir umbloco decomandos; resultado verdadeiro, são executadosbreak; os comandos do bloco default.•••  O comando break é utilizado paradefault: forçar a saída do switch.bloco decomandos;} Comando forfor (inicialização; condição; incremento){  O comando for é usadobloco de comandos; quando é necessário} repetir um trecho de código diversas vezes.  o comando for permite expressar iterações combinando uma expressão de inicialização, um teste de condição e uma expressão de
  40. 40. incremento.  inicialização: comando de atribuição que define o valor inicial da variável que controla o número de repetições.  condição: expressão relacional que define até quando as iterações serão executadas.  incremento: expressão que define como a variável de controle do laço deve variar ( pode aumentar ou diminuir).  o teste da condição do controle é feito no início do laço, o que significa que se já for falsa os comandos dentro do laço não serão executados. Comando whilewhile (condição){  como dito anteriormente no comando for, obloco de comandos; comando while também é utilizado para} repetir um trecho de código diversas vezes.  pode ser qualquer expressão ou valor que resulte em um verdadeiro ou falso.  o laço while é executado enquanto a condição for verdadeira.  o teste da condição do controle é feito no início do laço, o que significa que se já for falsa os comandos dentro do laço não serão executados. Comando do ...whiledo{  Similar ao comando while, porém, o teste
  41. 41. bloco de comandos; da condição de controle é feito no fim do }while (condição); laço, o que significa que os comandos dentro do laço são executados pelo menos uma vez. Tabela: Estruturas de controle e repetição Fonte: Elaboração da autora 15. Comandos break e continue Os comandos break e continue são estruturas auxiliares dos fluxos de repetição. O comando break paralisa a execução de um loop inteiro e o comando continue para somente a interação atual. 16. Comentários Comentário é a parte do código ignorada pelo compilador. É utilizado para deixar o código mais inteligível. Java possui três tipos diferentes de comentário: Comentário de uma linha: O uso de barra dupla marca o início do comentário que se estende até o fim da linha. Comentário de várias linhas: Os delimitadores /* e */ indicam início e fim de um comentário e podem conter várias linhas. Comentário javadoc: É utilizado para gerar a documentação javadoc e é delimitado pelas sequências de símbolos /** e */. Para gerar o javadoc é necessário que o comentário esteja localizado imediatamente antes da classe, atributo ou método documentado. O código apresentado nas figuras 31 exemplifica os comandos vistos neste capítulo.public class SintaxeJava { public static void main(String[] args) { /* *Declaraçãodavariávelidade do tipointeirocom o valor inicial 5 *atribuído. */ int idade = 6;
  42. 42. /* Usodaestruturacondicionalif. * Nesteexemplo, a condição a sersatisfeita é que a idadesejamaior * ouigual a 6. */if ( idade >= 6){ /* * O comando switch recebeumavariável, no casoabaixoidade e abre * umblocodedados. Dentrodesseblocoestãoos cases. * Cada case recebeum valor único e apósosdoispontosdecada case * estáainstruçãoquedeveserexecutadacaso a condiçãosejasatis- * feita. O comando break é utilizadoparaforçar a saída do switch. * O comando default pegaqualquerresultadoquenãoestejadefinido * 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("Não deveria estar frequentando o primário"); }}/* * O comando for é utilizadoemlaçoscontados. * A primeirainstruçãodeclara e atribui o valor inicial a variávelde * controle. * A segundainstruçãocontempla a condiçãodecontrole do laço. * A terceiracondição define como a variávelde controle do laço deve * variar */for ( int i = 0; i<=6; i++){ System.out.println("O valor da variável i é: " + i);}int j = 0;/* * O laço while é executado enquanto a expressão condicional for * verdadeira. */while ( j < 6){ if ( j == 3){ /* *O comando continue para a interação atual. Desta forma quando *j for igual a 3, o valor de j não será impresso. */
  43. 43. break; } System.out.println("O valor de j é: " + j); j ++; } } }Figura 31: Código exemplificando a sintaxe Java (Parte I)Fonte: Elaboração da autora PARA FIXAR 1.Quais dos identificadores abaixo, podem ser usados como nomes de variáveis em Java? Quais não 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 número de cidades do Brasil. b) A população mundial. c) Nome do cachorro da minha colega. d) Um número sorteado na Mega Sena. e) Estado de uma lâmpada (acesa ou apagada). f) O peso do seu colega. g) O sexo de uma pessoa. 3. O que acontece se você dividir um número 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 variáveis em Java devem ser atribuídas a um tipo quando são declaradas. b) O Java considera que as variáveis nome e NOME são idênticas. c) O operador resto (%) pode ser utilizado apenas com operandos inteiros. d) Os seguintes são todos nomes de variável inválidos: _123, a23, 12a, $12. 5. Implemente uma calculadora que resolva as quatro operações (+, -, * e /), que
  44. 44. receba como entrada dois números reais.6. Imprima a soma de 1 até 1000.7. Imprima todos os múltiplos de 3, entre 1 e 100.8. Receba como entrada um número e um expoente. Calcule este númeroelevado ao expoente. Faça três versões deste programa: Use uma declaração while para resolver este problema; Use uma declaração do-while para resolver este problema; Use uma declaração for para resolver este problema.9. (IADES 2011 PG/DF - Analista Jurídico - Analista de Sistemas) Analise o códigofonte em Java a seguir e assinale a alternativa que apresenta o resultado daexecução 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 = 16b) Valores = 548c) Valores = 18d) Valores = 649e) Valores = 1910. (Cesgranrio - 2009 CBM - Negócios 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); }
  45. 45. }Qual será a saída do programa Java mostrado acima?a) 8b) 24c) 25d) 42e)4311. (Cesgranrio - 2012 CHESF - Analista de sistema)Considere o trecho de códigoque corresponde ao método 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 método quando ele é corretamenteexecutado?(A) 0(B) 1(C) 2(D) 3(E) 512. (Cesgranrio - 2011 PETROBRAS - Técnico de Informática Júnior)Qual ainstrução Java em que o valor da variável x será 13após o loop ter executado 5vezes?a)for (int x=3; x<12; x+=2){ ++count; }b)for (int x=1; x<12; x+=5){
  46. 46. ++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;}
  47. 47. PROGRAMAÇÃO ORIENTADA A OBJETOSOBJETIVOS  diferenciar programação estruturada de programação orientada a objetos;  entender os princípios da POO;  distinguir objetos de classes;  definir atributos e métodos;  compreender o que são instâncias de classes;  construir construtores;  organizar classes e pacotes.1. Programação estruturada X programação orientada à objetosDiferença entre programação estruturada e programação orientada a objetosFonte: http://www.webfinal.com.br/blog/wp-content/uploads/2010/07/sextanet2.png A programação estruturada é baseada em funções e dados. Osprocedimentos inseridos em blocos estruturados comunicam-se com outrosprocedimentos por meio da passagem de dados. A programação orientada a objetos simula o mundo real dentro docomputador. Nela, os problemas são resolvidos com a criação e interação dediferentes objetos. Os objetos comunicam-se através de mensagens.
  48. 48. 2. Princípios da programação orientada a objetos A programação orientada a objetos foi criada com o intuito deaproximar o mundo real do virtual. Para isso, um programa é visto como umconjunto de objetos que executam tarefas específicas e se comunicam através demensagens em busca de um objetivo comum. De uma maneira geral, os objetos são compostos por dados einstruções para processar estes dados. Na POO, o desenvolvedor é responsável por moldar os objetos eexplicar para os mesmos como será feita a comunicação. Esses moldes deobjetos são chamados de classes. A programação orientada a objetos está sedimentada em quatropilares: encapsulamento, herança, composição e polimorfismo.Figura 32: Pilares da orientação a objetosFonte: BEZERRA, Adriano. Programação orientada a objetos. Disponível em:<http://www.metropoledigital.ufrn.br/aulas/disciplinas/poo/aula_01.html> Acesso em 15 jan 2013. Benefícios da programação orientada a objetos: Modularidade: um objeto criado pode ser passado por todo o sistema; Encapsulamento: os detalhes da implementação ficam ocultos, quem usa determinado objeto não precisa saber como seus métodos estão implementados; Reuso: após a implementação o objeto pode ser usado em todo o programas e até mesmo em outros programas. Manutenibilidade: a manutenção é realizada somente dentro do objeto que deve ser alterado, não influenciando nas demais partes do código.
  49. 49. 3. Objetos Objeto é qualquer entidade do mundo real que possui atributos ecomportamentos, como por exemplo, casa, carro, escola, computador, cachorro. Todo objeto possui características próprias, que são comumentechamadas de atributos. Os atributos são o que diferem dois objetossemelhantes. Tomando como exemplo o cachorro, o que diferencia dois deles éaraça, o peso, a cor do pelo, o peso, ou seja, os atributos que eles possuem. Além de possuírem atributos, os objetos também possuemcomportamentos. Os comportamentos geralmente são verbos e representam asações que o objeto pode realizar. Um objeto cachorro, por exemplo, podecomer, correr e latir. A figura 34 ilustra três diferentes objetos do tipo cachorro: Bob,Scooby e Rex. Os cachorros ilustrados possuem os métodos andar, falar, comer,pegar osso e dormir.Figura 33: Exemplos de objetos.Fonte: PALMEIRA, Thiago Vinícius Varallo. Introdução a programação orientada a objetos em Java. Disponível em:<http://www.devmedia.com.br/introducao-a-programacao-orientada-a-objetos-em-java/26452>. Acesso em 15 jan.2013.
  50. 50. 4. Classes Uma classe em Java é a especificação para a criação de um objeto. Uma classe descreve as propriedades e funcionalidades que um objeto terá. Desta forma, os atributos e métodos que os objetos têm são declarados na classe. A figura 34 mostra a representação de uma classe pela UML e pelo código Java. public class Carro { String placa; String corLataria; String corParachoque; String aro;Figura 34: Representação de uma classe public void trocarMarcha(){Fonte: Elaboração da autora } public void ligar(){ } public void acelerar(){ } } A figura 34 especifica um novo tipo, Carro. Na especificação (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. Após a palavra chave class, deve seguir o nome da classe, que deve ser um identificador válido. A definição da classe pode conter também um modificador. No exemplo acima, foi utilizado o modificador public. Outros modificadores usados na definição de classes são o abstract e o final.
  51. 51. Após a declaração da classe aparecem os atributos e os métodos que serão detalhados a seguir. 5. Atributos Os atributos são as características de um objeto. A declaração 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 válido da linguagem Java. Um atributo pode conter um modificador de acesso, que será descrito mais adiante e pode ser inicializado no ato de sua construção. Palavra Nome da classe escolhido obrigatória para pelo programador. Por indicar a criação padrão, utiliza-se sempre aModificador de uma classe. primeira letra em maiúscula.de acesso public class Carro { tipo String placa; nome String corLataria; String corParachoque; String aro; Conjunto de características dos objetos da Classe Carro 6. Métodos Métodos são as ações realizadas pelos objetos. Eles podem
  52. 52. manipular atributos de objetos para os quais os métodos foram definidos. Os métodos também podem definir e manipular variáveis locais. Cada método é especificado por uma assinatura. A assinatura de um método é composta pelo modificador (não obrigatório), tipo de retorno e o nome do método que deve ser um identificador válido. Os métodos também podem receber parâmetros por valor através da lista de argumentos. Os métodos podem ter retorno ou não. Para métodos sem retorno usa-se a palavra chave void. Para os métodos com retorno, usa-se o tipo de retorno, que pode ser um valor primitivo ou uma classe Java. O fato de um método possuir retorno ou não, altera o encerramento da execução. Quando um método não tem valor de retorno, a execução é encerrada quando o bloco do corpo do método chega ao final. Já quando o método possui valor de retornoa execução é encerrada através do comando return. Os métodos podem receber argumentos representados por uma lista de parâmetros separados por vírgula, onde para cada parâmetro é indicado o tipo e o nome. Método sem retorno e sem parâmetrospublic void trocarMarcha(){} Método com retorno do tipo boolean, sempublic boolean estaLigado (){ parâmetros. O uso da palavra-chave return é returntrue; obrigatório em métodos com retorno.}public void frear (int intensidade){ Método sem retorno e com parâmetro.} Este método necessita da informação da intensidade da velocidade para ser executado. 6.1. O método main O método main é utilizado pela JVM para inicializar a execução do programa.Segundo RICARTE (2001): O método main é um método associado a classe e não a um objeto específico da classe – assim ele é definido como método estático. Adicionalmente, deve ser um método público para permitir sua
  53. 53. execução a partir da máquina virtual Java. Não tem valor de retorno, mas recebe como argumentoum arranjo de strings que corresponde aos parâmetros que podem ser passados para a aplicação a partir da linha de comando.7. Instâncias de classes Uma classe é a especificação de um objeto. Porém para ser criado,um objeto precisa ser instanciado. Quando um objeto é criado, ele adquireespaço em memória para armazenar seu estado e um conjunto de operaçõespodem ser aplicadas ao mesmo. Abaixo, segue exemplo com a criação de um objeto carro. Declaração da variável c1 do Cria um objeto na tipo Carro. memóriapublic 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 função do construtor é iniciar a construção de um objeto. O mesmoé invocado toda vez que a palavra new é utilizada. O construtor possui o mesmo nome da classe e não tem nenhum tipo
  54. 54. de retorno. Ele pode conter parâmetros. Toda classe deve ter um construtor definido. Se o construtor não estiver explicitamente declarado, o compilador cria um construtor default, ou seja, um construtor sem parâmetros e o corpo vazio. No momento em que o programador cria um construtor, o construtor default deixa de ser criado automaticamente. Portanto, é necessário declarar o construtor default, se a utilização domesmo for necessária. Podem ser declarados diversos construtores em uma mesma classe, desde que a assinatura dos mesmos forem diferentes, ou seja, vários construtores com argumentos diferentes.public class Carro { A - Construtor sem corpo e sem parâmetros.Quando um construtor não é declarado explicitamente, o String placa; compilador cria um construtor String corLataria; similar a este. String corParachoque; String aro; B - Construtor contendo os parâmetros placa e cor da lataria. Ao usar este public Carro (){ construtor, no momento da criação 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 parâmetro aro. No momento this.aro = aro; da construção deve ser corParachoque = "preto"; informado, o aro do objeto. No } corpo do método também é inicializado o atributo cor do parachoque. Os objetos A palavra this é usada para criados utilizando este referenciar métodos ou construtor, são inicializados atributos do objeto que está com a cor do parachoque sendo usado. preto.
  55. 55. 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 diretório 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 utilização do import só é necessária, 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 contém esta característica. As principais classes que fazem parte deste pacote são: Math, Object, String, System.
  56. 56. package br.com.senai.exemplo.pacote;public class Pac { Definição do pacote em que a classe se encontra.}import br.com.senai.exemplo.pacote.Pacote; Importação dopublic class TestePacote { pacote para o uso da classe Pac Pac p1 = new Pac();}PARA FIXAR1. O que é uma classe e para que serve?2. Escreva um modelo para representar um livro que está à venda em umalivraria. Que dados devem ser representados por este modelo?3. Escreva uma classe “EntradaDeCinema” com a seguinte estrutura (dados): Data dataDoFilme float horário int sala float valorE com as seguintes ações (métodos):Construtor: com a finalidade de inicializar todos os atributos.CalculaDesconto: que deve receber como parâmetro a data de nascimento docliente (do tipo Data) e caso seja menor de 12 anos, deve ser dado um descontode 50% no valor normal.CalculaDesconto: que deve receber como parâmetro a data de nascimento docliente (do tipo Data) e o número de sua carteira de estudante (do tipo int). Se oestudante tiver idade entre 12 e 15 anos, deve ser dado um desconto de 40%, de16 a 20 um desconto de 30% e mais que 20 anos um desconto de 20% no valornormal.
  57. 57. CalculaDescontoHorário: esse método deve dar um desconto de 10% sobre ovalor aferido após todas as outras opções de desconto, caso o horário do filmeseja antes das 16 horas.toString(): que deve imprimir todos os dados do ingresso.Desenvolva uma aplicação que leia os dados necessários para instanciar eimprimir o ingresso para clientes normais, menores de 12 anos e estudantes.
  58. 58. ENCAPSULAMENTOOBJETIVOS  entender o conceito de encapsulamento;  conhecer os modificadores de acesso;  utilizar os métodos getter e setter.1. Encapsulamento O encapsulamento isola as partes do programa. Apenas o mínimonecessário deve ser revelado. Deve ser suficiente conhecer a especificação dométodo, sem saber como a funcionalidade que ele executa foi implementada. O encapsulamento torna possível a idéia de abstração daprogramação orientada a objetos. A orientação a objetos recomenda que os objetos devem sermanipulados somente através dos métodos públicos do objeto, dos quais apenasa assinatura deve ser revelada. Os atributos não devem ser reveladosexternamente, exceto em caso de serem constantes.2. Modificadores de acesso Para tornar possível o encapsulamento, se faz necessário, o uso dosmodificadores de acesso. Em Java, os principais modificadores de acesso são: public: membro acessível a qualquer objeto; protected: membro acessível as subclasses e aos objetos do mesmo pacote; default: quando não for definido nenhum modificar o membro fica acessível apenas as classes do mesmo pacote; private: não pode ser acessado por nenhum outro objeto. Normalmente na constituição das classes, os métodos são públicos eos atributos são privados.
  59. 59. public class Carro { String placa; String corLataria; String corParachoque; String aro; //modificador default: acessosomente as classes do mesmo pacote public double velocidade; //modificadorpúblico: 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,não é possível acessá-lo em outra classe. Para alterar ou recuperar o valor domesmo, é necessário escrever dois métodos de acesso, um que retorna o valor eoutro que muda o valor. A convenção para estes métodos é colocar a palavra get ou set antesdo nome do produto. O método set é usado para modificar algum atributo. Os métodossets não retornam nenhum valor, portanto são métodos void. Porém, elesdevem receber obrigatoriamente um argumento, que será o valor atribuído aocampo. O método get é usado para retornar algum atributo. Os métodosgets obrigatoriamente possuem retorno de valor. Porém, eles não possuemnenhum argumento.
  60. 60. public class Carro { Método que atribui um valor para a variável private String placa; placa. Na chamada do private String corLataria; método é indicado o valor private String corParachoque; que a placa terá. private String aro; public void setPlaca (String placa){ this.placa = placa; } Método que retorna o public String getPlaca (){ valor de um atributo. returnthis.placa; Nesse caso, o método } 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 não aprender Java e orientação a objetos: getters e setters. Disponível em:<http://blog.caelum.com.br/nao- aprender-oo-getters-e-setters />
  61. 61. 4. Sobrecarga de métodos Métodos sobrecarregados são métodos com o mesmo nome, porémcom assinaturas diferentes. O compilador, a partir da análise dos tipos de argumentos dosmétodos determina qual o método deve ser executado.5. Agregação e composição A agregação é uma relação entre os objetos em que um objetocontém uma lista de outros objetos. Na agregação, os objetos contidos podemexistir fora do contexto do objeto que os contém. Por exemplo, pneu e carro.Um pneu existe sem o carro. Composição é o mecanismo que permite o uso de uma ou váriasclasses para compor uma outra classe.Na composição, os objetos contidos nãofazem sentido fora do contexto do objeto que os contém. Por exemplo, pedido eitem. Um item não existe fora do pedido.PARA FIXARO exercício 1 foi retirado do curso Java Starter e deve respeitar o uso doencapsulamento. Disponível 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 2pessoas com todos os atributos e imprima os valores;c) Implemente uma classe que represente uma sala de aula, esta sala pode ter omáximo de 10 alunos, se extrapolar este limite deve ser impressa umamensagem avisando que o número máximo de alunos foi atingido;d) Implemente uma classe de Endereço com os seguintes atributos: estado,cidade, rua, cep e telefone;e) Adicione a classe Pessoa um atributo de endereço utilizando a classedesenvolvida no ítem d;f) Implemente um método construtor para a classe Pessoa de forma que umainstância desta classe seja criada apenas se possui nome, idade e cpf;g) Implemente uma classe que simule um cadastro de pessoal. Esta classe devearmazenar até 100 pessoas (utilize a classe Pessoa) com seus respectivosendereços. Essa classe deve ter os seguintes comportamentos: permitir ocadastramento e exclusão de pessoas do cadastro;
  62. 62. 2. Escreva uma classe que represente um pais. Um pais tem como atributos o seunome e a sua dimensão em Km2 e uma lista de países com os quais ele fazfronteira. Represente a classe e forneça os seus membros a seguir:a) Construtor que inicialize o nome e a dimensão do país;b) Métodos de acesso (get) para a propriedade dimensão do país;c) Um método que permita verificar se dois países são iguais. Dois países sãoiguais se tiverem o mesmo nome e a mesma capital. A assinatura deste métododeve ser:public boolean equals(Pais outro);d) Um método que informe se um outro país é seu limítrofe (faz fronteira);e) Um método que receba um outro país como parâmetro e retorne uma lista devizinhos comuns aos dois países.Obs: Considere que um país tem no máximo 40 outros países com os quais fazfronteira.f) Escreva uma classe continente. Um continente possui um nome e um conjuntode países, que dele fazem parte. Desenvolva um método que forneça a dimensãototal do continente.3. Um avião é representado pelo seu prefixo, pelo nome do seu modelo, pelonome do seu fabricante, pela quantidade de assentos e pela quantidade deassentos ocupados.Escreva uma classe que represente um avião e desenvolva um método queinforme qual o prefixo da aeronave.Um aeroporto é representado pelo seu código e seu nome (ex.: SSA: Salvador,BSB: Brasília. etc), por um status que informa se ele é um aeroportointernacional ou não, uma lista de outros aeroportos para os quais partam vôosdiretos à partir dele e uma lista de outros aeroportos de onde venham vôos paraele. Além disto possui uma lista de aviões que estão atualmente no pátio.Escreva uma classe que contemple os atributos apresentados e mais os seguintesmembros:a) Um construtor que inicialize o código do aeroporto e seu nome.b) Métodos que verifiquem e alterem a situação relativa ao fato do aeroporto serinternacional ou não.c) Um método que verifique e informe se um aeroporto é igual a ele: public boolean equals (Aeroporto aeroporto) Dois aeroportos são iguais se o seu código for coincidente.d) Um método que receba um prefixo de avião como parâmetro e informe se aaeronave está pousada nele.e) Um método que receba um outro aeroporto como parâmetro e verifique seexiste alguma forma de se chegar nele. Para isto, o aeroporto deve verificar seele possui vôo partindo para o aeroporto desejado, e caso não saia, se existealguma forma de chegar nele à partir dos aeroportos de onde sai public boolean possuiRota(Aeroporto aeroporto)
  63. 63. Obs: A quantidade máxima de aeronaves que um aeroporto pode ter em terra é igual a 100 e a quantidade máxima de outros aeroportos com os quais o aeroporto pode ter linhas saindo e chegando é 100.4. Nas duas tabelas abaixo estão inseridos os códigos de duas classes Java: aclasse Carro e a classe Principal. Explique o que cada linha de código 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; }
  64. 64. 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; }}
  65. 65. HERANÇA E POLIMORFISMOOBJETIVOS  compreender o uso da herança;  usar a sobrescrita de métodos;  entender o conceito de polimorfismo.1. Herança A herança é um dos pilares da programação orientada a objetos quepermite a criação de novas classes a partir de outras já existentes, ou seja, umaclasse pode derivar de outra classe. As novas classes são chamadas de subclassese as classes já existentes que deram origem as subclasses são chamadas desuperclasses. O mecanismo de herança viabiliza o reuso de código. Para fazer usoda herança é usada a palavra-chave extends, seguida do nome da superclasse. Para referenciar os métodos da superclasse é utilizada a palavra-chave super. A herança em Java também pode ocorrer implicitamente, é o queocorre com a superclasse Object. Todas as classes criadas em Java estendemimplicitamente de Object.
  66. 66. 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(){ }
  67. 67. public void botar(){ }}2. Sobrescrita de métodos A sobrescrita de métodos é o mecanismo que permite a alteração docomportamento de uma superclasse pelas suas subclasses, ou seja, a sobrescritade um método é uma nova implementação para o mesmo. A sobrescrita de um método ocorre somente se a assinatura domesmo permanece intacta, isto é, o tipo de retorno e os parâmetros devem seros mesmos. O modificador final não permite que o método seja sobrescrito. Estemodificador também pode ser usado na definição da classe para impedir que amesma seja estendida.3. Polimorfismo O polimorfismo em Java é o mecanismo que garante que classesderivadas de uma mesma superclasse invoquem métodos com a mesmaidentificação, mas com comportamentos distintos.PARA FIXAROs exercícios 1 e 2 foram retirados do curso Java Starter disponível 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 comportamentosdescritos abaixo. Distribua as características de forma que tudo o que for comuma todos os animais fique na classe Animal.
  68. 68. Animalcachorro cavalo preguiçapossui nome possui nome possui nomepossui idade possui idade possui idadedeve emitir som deve emitir som deve emitir somdeve correr deve correr devesubir em árvoresb) Implemente um programa que crie os três tipos de animais definidos no itemanterior e invoque o método que emite o som de maneira polimórfica, isto é,independente do tipo de animal.c) Implemente uma classe Veterinário que contenha um método examinar( ),cujo parâmetro de entrada é um Animal, quando o animal for examinado deveemitir um som, passe os três animais como parâmetro.d) Crie uma classe Zoológico com 10 jaulas (utilize um array), coloque em cadajaula um animal diferente, percorra cada jaula e emita o som do animalcorrespondente.2. Resolva a seguinte situação utilizando os conceitos aprendidos.a) Uma empresa quer manter o registro da vida acadêmica de todos osfuncionários, o modelo deve contemplar o registro das seguintes informações,de forma incremental. Para o funcionário que não estudou, apenas o nome e o código funcional; Para o funcionário que concluiu o ensino básico, a escola; Para o funcionário que concluiu o ensino médio, a escola; Para o funcionário que concluiu a graduação, a universidade.b) Estenda o modelo de forma que todo funcionário possua uma renda básica deR$ 1000,00 e: Com a conclusão do ensino básico a renda total é a renda básica acrescida de 10%; Com a conclusão do ensino médio a renda total é a renda básica acrescida de 50%; Com a conclusão do ensino superior a renda total é a renda básica acrescida de 100%;c) Crie um programa que simule uma empresa com 10 funcionários, utilize umarray, sendo que a escolaridade dos funcionários é distribuída da seguinte forma:40% do ensino básico, 40% do ensino médio e 20% superior. Calcule os custos daempresa com salários totais e por nível de escolaridade.
  69. 69. 3. (FCC - TRT 20ª REGIÃO/2010 - Tecnologia da Informação) Considere o códigoJAVA abaixo:public class Carro extends Veiculos { private String categoria; public void setCategoria(String categoria) { this.modelo = categoria; } public String getCategoria() { return this.categoria; }}Em relação ao código 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 métodos da classe Veiculo que nãoestejam com o modificador protected.C) Todas as classes que herdarem a classe Carro terão o atributo modelo.D) A palavra reservada extends indica que Carro e Veiculo são classes de mesmonível.E) A classe Carro irá herdar atributos e métodos da classe Veiculo que nãoestejam com o modificador private.4. (ESAF - ANA/2009 - Analista Desenvolvimento de Sistemas)Em Java, para queum método de uma superclasse não 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 método é declarado protected, o(s) modificador(es) aplicável(is) nasobrescrita do método é(são):A) private.B) private e protected.C) “default”.D) protected, “default” e public.
  70. 70. 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) ; }}

×