Capítulo 3 A Construção de Aplicativos Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
Palavras reservadas Introdução à Linguagem Java abstract default goto null synchronized boolean do if package this break double implements private throw byte else import protected throws case extends instanceof public transient catch false int return true char final interface short try class finally long static void const float native super volatile continue for new switch while
Introdução à Linguagem Java Identificadores Finalidade: nomear classes, objetos, atributos, métodos, parâmetros, variáveis e constantes. Distinção entre maiúsculo e minúsculo Total!= total!= TOTAL
Introdução à Linguagem Java Identificadores Convenções: regras para a padronização Classe: o 1º caractere de cada palavra maiúsculo o Ex.: Validador, GravadorDeArquivo. Atributos, métodos e parâmetros: o 1º caractere da primeira palavra minúsculo o 1º caractere de palavras subseqüentes maiúsculo o Ex.: codigodebarras, imprimirnomecompleto.
Introdução à Linguagem Java Identificadores Convenções: regras para a padronização Objetos e variáveis: o Apenas caracteres minúsculos o Palavras separadas por sublinhados o Ex.: nome_completo, valor_original e desconto. Constantes: o Apenas caracteres maiúsculos o Palavras separadas por sublinhados o Ex.: COFINS, VALOR_PI, RGB_AMARELO.
Introdução à Linguagem Java Separadores Símbolo Nome. Ponto, Vírgula ; Ponto-e-vírgula ( ) Parênteses {} Chaves [] Colchetes
Introdução à Linguagem Java Separadores O ponto separa: Classes de seus métodos e atributos System.out.println( Bem-vindo ao Java ); Objetos de seus métodos e atributos Casas decimais em número de ponto flutuante 55.67 Pacotes de subpacotes e classes em instruções import import javax.swing.joptionpane;
Introdução à Linguagem Java Separadores A vírgula separa: Declaração de múltiplas variáveis double valor_principal, desconto, valor_total; Parâmetros na assinatura de métodos public double somar(double v1, double v2) Argumentos na invocação de métodos somar(546.38, 329.11);
Introdução à Linguagem Java Separadores O ponto-e-vírgula é usado para: Separar as três declarações do laço for for(int contador = 0; contador <= 10; contador++) Indicar o final de uma instrução System.out.println(contador);
Introdução à Linguagem Java Separadores Os parênteses são usados para: Delimitar os parâmetros na assinatura de métodos public double somar(double v1, double v2) Delimitar os argumentos na invocação de métodos somar(546.38, 329.11); Alterar a precedência de operações em expressões int it = 2 * (3 + 5);
Introdução à Linguagem Java Separadores As chaves delimitam: O corpo de uma classe O corpo de um método Instruções de estruturas de decisão Instruções de estruturas de repetição Um escopo local Um conjunto de valores a ser atribuído a um vetor Um conjunto de valores a ser atribuído a uma matriz
Introdução à Linguagem Java Separadores Exemplo com chaves: public class ContagemRegressiva { public static void main(string[] args) { int it = Integer.parseInt(args[0]); while (it > 0) { System.out.println(it); it--; }//Fim do laço while }//Fim do método main }//Fim da classe
Introdução à Linguagem Java Separadores Os colchetes são utilizados para: Declaração de vetores e matrizes int[] vetor; int vetor[]; Inicialização de vetores e matrizes vetor = new int[2]; Atribuir valor a uma posição de um vetor ou matriz vetor[0] = 3; vetor[1] = 6; Recuperar valor de uma posição de um vetor ou matriz int soma = vetor[0] + vetor[1]
Introdução à Linguagem Java Comentários Observações e anotações Ignorados pelo compilador Tipos De uma única linha System.out.println(st);//Imprime o conteúdo de st De múltiplas linhas /* Esse método realiza duas operações: - Calcula a média aritmética simples dos valores. - Arredonda e retorna o resultado. */ De documentação /** */
Aplicativos Conceito: programas executáveis Modos de interação com o usuário: Textual Gráfico
Aplicativos Código 3.1 BemVindo.java. 1 import javax.swing.joptionpane; 2 3 public class BemVindo 4 { 5 public static void main(string[] args) 6 { 7 JoptionPane.showMessageDialog(null,"Bem-vindo ao Java!"); 8 System.exit(0); 9 } 10 }
Aplicativos A declaração import Corresponde à declaração include co C/C++ Corresponde à cláusula uses do Pascal Condicionada à necessidade Uma declaração import para cada componente ou pacote import javax.swing.joptionpane; import javax.swing.*;
Aplicativos o Erro comum: esquecer a importação de recurso utilizado Código 3.2 BemVindo.java. 1 public class BemVindo 2 { 3 public static void main(string[] args) 4 { 5 JoptionPane.showMessageDialog(null,"Bem-vindo ao Java!"); 6 System.exit(0);//Importação implícita de java.lang 7 } 8 }
Aplicativos Aplicativo = componentes que se comunicam entre si Classes Interfaces A declaração de uma classe Encapsulamento: public (opcional) Termo class (obrigatório) Identificador (obrigatório) Delimitação do corpo com chaves (obrigatório) public class BemVindo { }
Aplicativos o Erro comum: nomes diferentes para o arquivo e classe pública Código 3.2 BemVindo.java. 1 import javax.swing.joptionpane; 2 3 public class bemvindo 4 { 5 public static void main(string[] args) 6 { 7 JoptionPane.showMessageDialog(null,"Bem-vindo ao Java!"); 8 System.exit(0);//Importação implícita de java.lang 9 } 10 }
Aplicativos Composição das classes Atributos Métodos Composição de um aplicativo Uma de suas classes deve conter o método main( ) Pode conter um número adicional ilimitado de classes O método main( ) Torna a classe executável Contém as instruções que serão executadas public static void main(string[] args) { }
Aplicativos Erro comum: executar classe que não possui o método main Resultado: uma mensagem de erro é exibida Exception in Thread 'main' java.lang.nosuchmethoderror: main
Saída de Dados no Modo Textual A classe System Métodos úteis: System.exit(0); System.gc( ); Tipo Descrição Localização java.lang.system Superclasse java.lang.object Descrição Contém atributos e métodos úteis para a realização de operações de sistema.
A classe System Atributos: System.err System.in System.out Saída de Dados no Modo Textual System.out.print( );//Imprime e permanece na linha System.out.println( );//Imprime e avança uma linha System.out.printf( );//Imprime e permanece na linha Atributo err in out Descrição Atributo estático do tipo PrintStream que representa o fluxo padrão de saída de erros Atributo estático do tipo InputStream que representa o fluxo padrão de entrada de dados Atributo estático do tipo PrintStream que representa o fluxo padrão de saída de dados
Saída de Dados no Modo Textual Sequências de escape Seqüência Descrição \\ Imprime uma única barra invertida \ Imprime uma aspa dupla \n Avança o cursor para a próxima linha \r Retorna o cursor ao início da linha atual \b Retorna o cursor um espaço na linha atual \t Avança o cursor na linha atual até a próxima parada de tabulação
Saída de Dados no Modo Textual Código 3.5 Saida.java. 1 public class Saida { 2 public static void main(string[] args) { 3 System.out.println( ); 4 5 System.out.print("Um caractere:\t\t"); 6 System.out.print('A'); 7 System.out.print("\n"); 8 9 System.out.print("Um numero inteiro:\t"); 10 System.out.print(123); 11 System.out.print("\n"); 12 13 System.out.println("Um numero decimal:\t" + 4.3); 14 System.out.println("Um valor booleano:\t" + true); 15 System.out.println("Uma barra invertida:\t\\"); 16 System.out.println("Um texto entre aspas:\t" + "\"Rui\""); 17 18 System.out.println( ); 19 } 20 }
Código 3.5 Saida.java. Saída de Dados no Modo Textual
Valores literais Saída de Dados no Modo Textual Tipo de dado Representação Exemplo Números inteiros na base decimal v 11 Números inteiros na base hexadecimal 0xv 0xB Números inteiros na base octal 0v 13 Números inteiros longos vl 11L Números reais de precisão simples v.vf 24.2f Números reais de precisão dupla v.v 55.6 Valores lógicos v true Caracteres v H Texto v Ana Carolina
Saída de Dados no Modo Textual Código 3.6 Literais.java. 1 public class Literais { 2 public static void main(string[] args) { 3 System.out.println(); 4 System.out.println("Inteiro - decimal:\t\t" + 11); 5 System.out.println("Inteiro - hexadecimal:\t\t" + 0xB); 6 System.out.println("Inteiro - octal:\t\t" + 013); 7 System.out.println("Inteiro - longo:\t\t" + 11L); 8 System.out.println("Real - precisão simples:\t" + 24.2f); 9 System.out.println("Real - precisão dupla:\t\t" + 24.2); 10 System.out.println("Tipo lógico:\t\t\t" + true); 11 System.out.println("Caractere:\t\t\t" + 'H'); 12 System.out.println("Texto:\t\t\t\t" + "Ana"); 13 System.out.println(); 14 } 15 }
Código 3.6 Literais.java. Saída de Dados no Modo Textual
Saída de Dados no Modo Textual Saída formatada Recurso adicionado ao JSE 5.0 Implica no uso de especificadores de formato Cada especificador marca uma posição System.out.printf( %s é um %s, Platão, Filósofo ); Saída: Platão é um Filósofo Especificador Tipo de dado %s Texto %c Caractere %d Número inteiro %f Número de ponto flutuante %b Valor booleano
Saída de Dados no Modo Textual Código 3.7 SaidaFormatada.java. 1 public class SaidaFormatada { 2 public static void main(string[] args) { 3 System.out.println( ); 4 5 System.out.printf("Um caractere: %c",'a'); 6 System.out.println( ); 7 System.out.printf("Um texto: %s","java em todos os lugares"); 8 System.out.println( ); 9 System.out.printf("Um número inteiro: %d",123); 10 System.out.println( ); 11 System.out.printf("Um número decimal: %f",4.55); 12 System.out.println( ); 13 System.out.printf("Um valor booleano: %b",true); 14 System.out.println( ); 15 16 System.out.println( ); 17 } 18 }
Saída de Dados no Modo Textual Código 3.8 SaidaFormatadaEscape.java. 1 public class SaidaFormatadaEscape { 2 public static void main(string[] args) { 3 System.out.println( ); 4 5 System.out.printf("Dois números:\t\t%d e %d \n",2, 22); 6 System.out.printf("O número %d equivale à letra %c \n",65, 'A'); 7 8 System.out.println( ); 9 } 10 }
Entrada de Dados no Modo Textual Utilizando a classe java.lang.system byte[] bt = new byte[50]; System.in.read(bt); String nome = new String(bt).trim(); Utilizando a classe java.util.scanner (JSE 5.0) Scanner scan = new Scanner(System.in); String nome = scan.nextline();
Entrada de Dados no Modo Textual Código 3.9 Entrada.java. 1 import java.io.ioexception; 2 3 public class Entrada { 4 public static void main(string[] args) throws IOException { 5 System.out.print("\nInforme seu nome: "); 6 byte[] bt = new byte[50]; 7 System.in.read(bt); 8 String nome = new String(bt).trim(); 9 System.out.printf("%s: seja bem-vindo!\n\n", nome); 10 } 11 }
Entrada de Dados no Modo Textual Código 3.10 EntradaScanner.java. 1 import java.util.scanner; 2 3 public class EntradaScanner { 4 public static void main(string[] args) { 5 Scanner scan = new Scanner(System.in); 6 7 System.out.print("\nInforme seu nome:\t"); 8 String nome = scan.nextline(); 9 10 System.out.print("Informe seu e-mail:\t"); 11 String email = scan.nextline(); 12 13 System.out.println("\nDados recebidos:"); 14 System.out.printf("Nome:\t %s \ne-mail:\t %s\n\n",nome,email); 15 } 16 }
Entrada e Saída de Dados com Diálogos Gráficos Classe: javax.swing.joptionpane Entrada de dados String nm = JOptionPane.showInputDialog(null,"Informe seu nome"); Saída de dados JOptionPane.showMessageDialog(null,"Bem-vindo!");
Entrada e Saída de Dados com Diálogos Gráficos Código 3.11 DialogoGrafico.java. 1 import javax.swing.joptionpane; 2 3 public class DialogoGrafico { 4 public static void main(string[] args) { 5 String nm = JOptionPane.showInputDialog(null,"Informe seu nome"); 6 JOptionPane.showMessageDialog(null,nm + ": seja bem-vindo!"); 7 System.exit(0); 8 } 9 }
Exercício 1 Crie um novo aplicativo, chamado Exercicio0301, que apresente a tabuada do número 9 utilizando uma disposição idêntica à da figura abaixo para organizar todos os dados. Note que estes dados estão divididos em dois grandes blocos e que algumas colunas de números estão alinhadas à direita.
Exercício 2 Crie um novo aplicativo, chamado Exercicio0302, que solicite o nome e o e-mail ao seu usuário e que, ao final, apresente estes dois dados tal como se fosse uma confirmação de cadastro. As saídas produzidas por este aplicativo devem ser idênticas àquelas apresentadas na figura abaixo. Além disso, você deve implementar este aplicativo sem utilizar a classe java.util.scanner. Ao invés desta classe, o aplicativo deve captar a entrada de dados através do outro procedimento apresentado neste capítulo.
Exercício 3 Crie um novo aplicativo, chamado Exercicio0303, que solicite o nome, a nacionalidade e o telefone de seu usuário e que, ao final, apresente estes três dados tal como se fosse uma confirmação de cadastro. As saídas produzidas por este aplicativo devem ser idênticas àquelas apresentadas na figura abaixo. Além disso, você deve implementar este aplicativo utilizando a classe java.util.scanner para captar as entradas de dados.
Exercício 4 Crie um novo aplicativo, chamado Exercicio0304, que solicite o nome dos dois jogos prediletos de seu usuário e que, ao final, apresente estes dois dados através de uma única mensagem gráfica. Este aplicativo também deve captar os dois dados através de diálogos gráficos, como encontra-se ilustrado nas figuras abaixo.
Contato Com o autor: Rui Rossi dos Santos E-mail: livros@ruirossi.pro.br Web Site: http://www.ruirossi.pro.br Com a editora: Editora NovaTerra E-mail Geral: contato@editoranovaterra.com.br E-mail Comercial: comercial@editoranovaterra.com.br Web Site: http://www.editoranovaterra.com.br