Faculdade de Computação

Propaganda
Faculdade de Computação
Programação Orientada à Objetos
1° Laboratório de Programação Orientada à Objetos
Prof. Fabíola Gonçalves Coelho Ribeiro
1. Introdução
O objetivo desta aula prática é apresentar o ambiente de programação em linguagem Java no Sistema
Operacional Windows. As atividades de laboratório serão desenvolvidas seguindo as orientações a seguir:
Configurar o diretório de trabalho (local onde serão salvos os arquivos fontes); Abrir a aplicação de edição dos
arquivos fontes (bloco de notas); Compilar os arquivos fontes com a JVM Executar a aplicação criada.
2. Noções Básicas
Este roteiro de aula prática tem o objetivo de auxiliar o aluno a escrever, compilar e executar o seu primeiro
programa na linguagem Java.
Compilar significa traduzir o programa escrito em uma linguagem de programação de alto nível (ex: Java) em
uma linguagem de máquina, que pode ser compreendida e executada pelo processador (ex: Intel Pentium) do
computador em um determinado sistema operacional (ex: Microsoft Windows). No caso de Java, o programa
não é compilado para uma plataforma (processador e sistema operacional) específica, mas para uma
linguagem chamada bytecode de uma máquina virtual (JVM – Java Virtual Machine). A máquina virtual é
emulada em software em várias plataformas diferentes, de modo que um mesmo programa em bytecode
pode ser executado em todas elas. Essa característica se chama “portabilidade”. Repare que isso não é verdade
para outras linguagens.
O programa será digitado pelo aluno usando um editor de textos comum (ex: Bloco de Notas) e compilado
manualmente através de linha de comando (ex: o prompt de comando, do Windows). Para os próximos
programas em Java será utilizado um ambiente (aplicação) mais amigável, mas também mais complexo,
chamado de IDE (Integrated Development Environment ou ambiente integrado de desenvolvimento).
Obs.: Essa prática foi concebida para ser realizada no sistema operacional Microsoft Windows para torná-la
mais apropriada para iniciantes. Entretanto, com pequenas modificações, ela pode ser executada em outros
ambientes, como Linux. O programa Java e a forma de compilação e execução permanecem inalterados.
Preparativos iniciais:
Esta prática supõe que JDK (Java Standard Edition Development Kit) está instalado na máquina, mais
precisamente o Java 5, com o JDK jdk1.5.0_08 (isso significa que é o Java 5).
1. Verifique se o JDK está instalado e qual a versão dele. Use o Windows Explorer (clicar com o botão da
direita em “Iniciar” e então selecionar a opção “Pesquisar” no menu). Vá na pasta “Java” dentro de “Arquivos
de Programas” e veja a versão do JDK. Qualquer versão que seja “jdk1.5” (Java 5) pode ser usada.
2. Verifique se o compilador e interpretador estão configurados para serem acessados através da linha de
comando. Inicie um prompt de comando, clicando em “Iniciar”, depois em “Executar”, digitando “cmd” e
clicando em OK. A janela que aparecerá deverá ser como:
3. Digite o comando “path”, que mostra o conteúdo da variável PATH, que informa em quais caminhos
(pastas e sub-pastas) o sistema operacional deve procurar os programas a serem executados. Se o caminho
da pasta onde os programas se encontram estiver configurado, deve haver “Arquivos de
programas\Java\jdk1.5.0_08\bin” como parte do resultado desse comando.
4. Teste o compilador Java, digitando “javac”. Se uma mensagem grande, iniciada por “Usage:
javac <options> <source files>” for impressa, então o compilador foi executado. Senão, uma mensagem de
erro como a seguinte deve ser apresentada: “'javac' não é reconhecido como um comando interno ou externo,
um programa operável ou um arquivo em lotes.”
5. No caso de haver erro, uma solução é digitar o caminho completo: “c:\"Arquivos de
programas"\Java\jdk1.5.0_08\bin\javac”, que pode ser inconveniente.
6. Outra solução é alterar a configuração para aquele promt de comando, mas que terá que ser refeita todas as
vezes todas as vezes que se abrir um novo prompt. Isso é realizado através do comando “path
%PATH%;c:\Arquivos de programas\Java\jdk1.5.0_08\bin”. Teste novamente.
7. Uma solução definitiva é alterar as configurações do sistema que valerá definitivamente para todos os
programas do Windows. Na área de trabalho, clique com o botão da direita em “Meu computador” e depois
selecione a opção “Propriedades” no menu. Então, selecione a aba “Avançado” e clique no botão “Variáveis de
ambiente”. Na parte inferior da janela, selecione a variável “Path” e clique em “Editar”. Em “Valor da
variável”, vá até o final da linha e acrescente “;c:\Arquivos de programas\Java\jdk1.5.0_08\bin”. Lembre-se de
iniciar com “;” (ponto e virgula), que separa os diferentes caminhos que estão configurados nessa variável.
Abra outro prompt de comando e teste o comando “javac”.
Observação: Em algumas situações você pode não ter permissão de mudar as configurações do sistema.
Nesse caso, a solução mais adequada seria a segunda (alterar o conteúdo da variável PATH manualmente
todas as vezes).
Exercício a – Digitando o programa
8. Abra o Bloco de Notas (clicando em Iniciar/Programas/Acessórios/Bloco de Notas) ou outro editor
simples que salve o texto em formato ASCII e digite o programa abaixo (sem os números de linhas):
1 // Primeiro programa em Java
2 public class BemVindo
3{
4 public static void main(String args[])
5 {
6 System.out.println("Bem-vindo ao laboratório de POO ");
7 }
8}
9. Explicação do programa:
 A linha “1” contem um comentário, pois é iniciada com “//” . Existem outras formas de se inserir
comentários em um programa Java.
 A linha “2” contem a declaração da classe “BemVindo”. Por enquanto é suficiente entender que uma
classe precisa das palavras reservadas “public” (diz que esta classe pode ser acessada por outros
arquivos) e “class” (determina que um arquivo de classe Java) e que “BemVindo” é um nome
qualquer, mas que como será visto adiante, precisa ser igual ao nome do arquivo que vai conter a
classe.
 Na linha “3”, o caractere “{“ (abre chaves) indica que tudo o vem a seguir pertence à classe
BemVindo, até o seu encerramento com “}”.
 A linha “4” declara o método principal (main) dessa classe, que será executado quando o programa
for iniciado. A declaração “public static void main(String args[])” é necessária exatamente desta forma
(vimos em sala aula o significado de cada elemento). Nem todas as classes precisam ter um método
“main”.
 Na linha “5”, o caractere “{“ (abre chaves) indica que tudo o vem a seguir pertence ao método
“main”, até o seu encerramento com “}”.
 A linha “6” contem o comando “System.out.println(“Bem-vindo ao laboratório de POO”);” que
imprime na tela (linha de comando) a mensagem “Bem-vindo ao laboratório de POO”. “System.out” é
um objeto de saída padrão e “println” um método que imprime um string (conjunto de caracteres) e
passa para a próxima linha. Existem outros métodos para imprimir na tela como será visto a seguir,
além de métodos para imprimir em janelas gráficas. Repare que não foi usada a crase, como seria
necessário em bom português. No entanto, existem alguns problemas com relação à acentuação,
principalmente quando se lida com programas que executam em linha de comando. Todos que já
acessaram endereços na Internet, sem pontuação e cedilhas já experimentaram isso.
 As linhas “7” e “8” encerram o método “main” e a classe “BemVindo”,respectivamente.
10. Salve o programa com o nome “BemVindo.java”, sem as aspas em uma pasta de fácil acesso, como por
exemplo, “C:\Users\Fabiola\Desktop\ProgJAVA”. Se essa pasta não existir, ela deve ser criada. A extensão
“.java” é obrigatória em programas Java. O nome antes da extensão deve obrigatoriamente ser igual ao
nome da classe “public”, observando que existe diferença entre letras maiúsculas e minúsculas. Em inglês,
diz-se que Java é “case sensitive” porque o compilador é sensível a diferenças entre letras maiúsculas (upper
case) e minúsculas (lower case). Um arquivo pode conter várias classes, mas apenas uma delas deve ser
declarada como “public”. Entretanto, é desaconselhado usar essa prática de programação, ou seja,
recomenda-se usar apenas uma classe “public” em cada arquivo “.java”.
Exercício b – Compilando e executando o programa
11. Assumindo que o JDK está devidamente instalado na sua máquina e que o acesso a ele via linha de
comando está devidamente configurado, o próximo passo é compilar o programa. Abra o “prompt de
comando” do Windows, através de Iniciar/Executar, digitar “cmd” em “Abrir” e clicar em “OK”. Então, digite
o comando “cd C:\Users\Fabiola\Desktop\ProgJAVA” para mudar para o diretório (pasta) apropriado (cd =
change directory), assumindo que “C:\Users\Fabiola\Desktop\ProgJAVA” é a pasta onde o arquivo contendo o
programa digitado foi salvo (item 10).
12. Para compilar o programa, use o compilador “javac” digitando o comando:
C:\Users\Fabiola\Desktop\ ProgJAVA javac BemVindo.java
C:\Users\Fabiola\Desktop\ProgJava
Caso não haja nenhum erro, a tela voltará para o prompt de comando sem mostrar nenhuma mensagem.
Mensagens de erro serão mostradas caso contrário (o que é mais comum , ou seja, é muito difícil, mesmo
para programadores experientes, digitar um programa e não cometer nenhum tipo de erro de sintaxe).
13. Observe que, se não houver nenhum erro de compilação, um arquivo com o nome “BemVindo.class” é
criado, contendo os bytecodes referente a este programa Java.
14. Para executar o programa, use o comando “java", que carrega a JVM e interpreta os bytecodes. O comando
e o seu resultado esperado são:
C:\Users\Fabiola\Desktop\ProgJAVA java BemVindo
Bem-vindo ao laboratório de POO
C:\Users\Fabiola\Desktop\ProgJAVA
Observe que a extensão “.class” não deve ser incluída no nome do arquivo. Caso contrário, ocorrerá um erro.
Exercício c – Observando e compreendendo mensagens de erro
15. As possibilidades para a ocorrência de erros quando se compila e executa um programa são muito grandes,
e com a experiência se aprende a identificar e corrigir os mais comuns. Outros, no entanto, não são nada
óbvios e frequentemente consomem uma boa parte do tempo dos programadores. Alguns exemplos são
apresentados a seguir (caso você ainda não os tenha experimentado).
16. Erros referentes ao nome do arquivo “.java” errado.
 C:\Users\Fabiola\Desktop\ProgJAVA javac BenVindo.java (foi digitado “n” e não “m”). error: cannot
read: BenVindo.java
1 error
 C:\Users\Fabiola\Desktop\ProgJAVA Bem Vindo.java (“Bem Vindo” com um espaço em branco).
javac: invalid flag: Bem
Usage: javac <options> <source files>
17. Erros referentes ao arquivo “.class”. Exclua o arquivo “BemVindo.class” (pode usar o comando “del" ou
então o Windows Explorer) e tente executar com java BemVindo.
 C:\Users\Fabiola\Desktop\ProgJAVA java BemVindo
Exception in thread "main" java.lang.NoClassDefFoundError: BemVindo
Essa mensagem estranha (por enquanto) significa que o arquivo BemVindo.class não foi encontrado.
18.Compile novamente o programa, com “javac” e digite o comando:
 C:\Users\Fabiola\Desktop\ProgJAVA java BemVindo.class
Exception in thread "main" java.lang.NoClassDefFoundError: BemVindo/class
Dessa vez, o erro ocorreu porque foi digitada a extensão “.class” , que deve ser omitida..
19. Erros referentes ao nome do arquivo diferente do nome da classe “public”. Faça uma cópia do programa
“BemVindo.java” para algo como “MeuPrograma.java” e tente compilá-lo:
 C:\Users\Fabiola\Desktop\ProgJAVA javac MeuPrograma.java
MeuPrograma.java:3: class BemVindo is public, should be declared in a file BemVindo.java
public class BemVindo
^
1 error
C:\Users\Fabiola\Desktop\ProgJAVA
Essa mensagem identifica um erro na linha 3 (“:3:”), porque a classe BemVindo é pública e deve ser declarada
em um arquivo chamado BemVindo.java. Experimente também alterar o nome do arquivo “BemVindo.java”
para letras minúsculas, ou seja, “bemvindo.java”. O compilador irá fazer a mesma reclamação.
20. Erros de sintaxe (escrita) no programa. Retire o caractere “;” (ponto de virgula) do final da linha
“System.out.println(“Bem-vindo ao Laboratório de POO”);”.
 :\Users\Fabiola\Desktop\ProgJAVA javac BemVindo.java
BemVindo.java:8: ';' expected
}
^
1 error
Essa mensagem reclama da falta do “;”. Uma pergunta que surge facilmente é: por que ele diz que o problema
é na linha “8”, antes do “}” e não na linha “7”, depois do “)”? A reposta é que o “;” não precisa
necessariamente estar no final da linha e o compilador o procura nas próximas linhas até encontrar algo que
não devia estar lá, no caso o “}”. Experimente incluir o “;” antes do “}” na linha “8” ou abrir uma linha depois
da linha “7” e antes da linha “8” atual e incluir somente o “;”, para confirmar como isso funciona. No entanto,
não é considerada uma boa prática de programação, porque dificulta a legibilidade e compreensão do
programa.
21. Experimente introduzir outros erros de sintaxe, como por exemplo, remover o “}” final ou alterar uma
palavra “public” para “publica”.
Exercício d – Alterando o programa
22.Como já foi mencionado, existem outros métodos para imprimir uma mensagem em uma tela de linha de
comando, além do “println”, que serão explorados agora.
23. Faça uma cópia do programa BemVindo.java para BemVindo2.java. Lembre-se de alterar o nome da
classe pública também.
24. Usando o método “print”. Substitua a linha:
6 System.out.println("Bem-vindo ao Laboratório de POO ");
por
6 System.out.print ("Bem-vindo ao ");
6.1 System.out.println (" Laboratório de POO ");
Compile o programa. O resultado deve ser igual ao programa anterior, porque o método “print” imprime a
mensagem, mas não passa para a próxima linha
25. Substitua agora o método “print” por “println” e veja o resultado. As mensagens “Bem-vindo ao” e
“Laboratório de POO” devem ser impressas em linhas diferentes agora.
26. Usando o método “printf”, para obter uma saída formatada. O “printf” consegue tratar de diferentes tipos
de dados e não apenas strings (conjuntos de caracteres). Edite o arquivo chamado MeuPrograma.java criado
anteriormente e faça as modificações indicadas a seguir.
27. Pulando de linha com a sequência de escape “\n”. Use o comando “printf” da seguinte forma:
6
System.out.printf("Bem-vindo ao Laboratório de POO \n ");
O “\n” dentro do “printf” informa que a saída deve passar para a próxima linha. Insira outros “\n” em outros
pontos da mensagem para ver o efeito.
Existem outras sequências de escape, como “\t”, “\r” e “\\”. Experimente-as. Observe que essas sequências
funcionam também com “print” e “println”, mas são mais frequentemente usadas com “printf” (por conta das
origens na linguagem C).
28. Usando a saída formatada. Transforme a linha de impressão anterior em um comentário (com “//”) e digite
esta:
System.out.printf("%s\n%s\n", "Bem-vindo ", " ao Laboratório de POO ");
Agora o método “printf” está sendo invocado (usado) com 3 argumentos, separados por vírgulas. O primeiro
argumento contém o “string de argumento” composto de especificadores de formato (iniciados por “%”) e
sequências de escape. Nesse caso, “%s” significa que vai ser formatado um string. Repare que existe dois
“%s” no string de argumento e outros dois argumentos após ele. É necessário que haja um casamento entre a
quantidade de especificadores de formato e de argumentos após o string de argumentos. Existem outros
especificadores de formato, como para números inteiros (%d) e reais (%f).
29. Novamente comente a linha de impressão anterior (com “//”) e digite esta:
System.out.printf("%s \n %s %d \n %s %f \n", "Nome: Maria", "Idade: ", 19, "Altura: ", 1.69);
Repare agora que a seqüência representa a formatação da saída e ficou mais complexa
“%s\n%s%d\n%s%3.2f\n”. Existem cinco especificadores de formato e cinco argumentos após o string de
argumento. Os tipos dos especificadores devem coincidir com os tipos dos argumentos, ou seja, por
exemplo “%s” com “Idade: ”, “%d” com 19 e “%f” com 1.69.
Experimente trocar a idade (19) por um nome, para observar um erro de execução. Porém, nem sempre
ocorrem erros desse tipo para nos avisar, porque Java tenta fazer conversão de tipos em tempo de execução.
Algumas vezes o programa fica com um erro de lógica e pode imprimir resultados incorretos, inclusive em
relatórios importantes (imagine, no balanço de uma empresa, ou nome seu contra-cheque!).
Para a altura ser impressa apenas com duas casas decimais, substitua “%f” por “%.2f”.
Outra maneira de obter o mesmo efeito, mas misturando as mensagens com o string de argumento e separando
dos verdadeiros valores é:
System.out.printf(“Nome: %s \nIdade: %d \nAltura: %3.2f\n”, “Maria", 19, 1.69);
Exercício para casa
1. Uma prática comum entre programadores é que o seu primeiro programa em uma linguagem de
programação deve dizer olá para o mundo, em inglês “Hello world!”. Escreva um programa que imprima essa
mensagem, lembrando-se de coincidir o nome do arquivo com o nome da classe. Faça pelo menos três versões
desse programa, para usar os métodos “System.out.print”, “System.out.println” e “System.out.printf”.
2. Escreva um programa que imprime os números de 1 a 10 em uma linha e de 11 a 20 na linha seguinte. Os
números devem ter um espaço de alguns caracteres entre eles e os de baixo devem estar alinhados com os de
cima. Dica: use a sequência de escape “\t” para que os números se posicionem em marcas de tabulação prédefinidas.
3. No programa anterior, os números de baixo foram alinhados aos de cima pela esquerda, quando o
comum para números é o alinhamento pela direita. Escreva um programa que faça o alinhamento pela direita.
Dica: Use o especificador de formato “%d” indicando a quantidade de dígitos que o numero deve ter que você
obterá o alinhamento pela direita.
4. Faça um programa que imprima a seguinte operação matemática:
123
+8
----131
Download