Li Rui Pcj 2ed Cap03

43
Capítulo 3 Capítulo 3 Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra A Construção de A Construção de Aplicativos Aplicativos

description

Java 3

Transcript of Li Rui Pcj 2ed Cap03

  • Captulo 3Captulo 3

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    A Construo de A Construo de AplicativosAplicativos

  • Introduo Linguagem Java

    Palavras reservadas

    abstract default goto null synchronizedboolean do if package this

    break double implements private throwbyte else import protected throwscase extends instanceof public transientcatch false int return true

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    catch false int return truechar final interface short tryclass finally long static voidconst float native super volatile

    continue for new switch while

  • Introduo Linguagem Java

    Identificadores

    Finalidade: nomear classes, objetos, atributos, mtodos,

    parmetros, variveis e constantes.

    Distino entre maisculo e minsculo

    Total != total != TOTAL

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    Total != total != TOTAL

  • Introduo Linguagem Java

    Identificadores

    Convenes: regras para a padronizao

    Classe:

    o 1 caractere de cada palavra maisculo

    o Ex.: Validador, GravadorDeArquivo.

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    Atributos, mtodos e parmetros:

    o 1 caractere da primeira palavra minsculo

    o 1 caractere de palavras subseqentes maisculo

    o Ex.: codigoDeBarras, imprimirNomeCompleto.

  • Introduo Linguagem Java

    Identificadores

    Convenes: regras para a padronizao

    Objetos e variveis:

    o Apenas caracteres minsculos

    o Palavras separadas por sublinhados

    o Ex.: nome_completo, valor_original e desconto.

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    o Ex.: nome_completo, valor_original e desconto.

    Constantes:

    o Apenas caracteres maisculos

    o Palavras separadas por sublinhados

    o Ex.: COFINS, VALOR_PI, RGB_AMARELO.

  • Introduo Linguagem Java

    Separadores

    Smbolo Nome . Ponto , Vrgula

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    , Vrgula ; Ponto-e-vrgula ( ) Parnteses {} Chaves [] Colchetes

  • Introduo Linguagem Java

    Separadores

    O ponto separa:

    Classes de seus mtodos e atributos

    System.out.println(Bem-vindo ao Java);

    Objetos de seus mtodos e atributos

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    Objetos de seus mtodos e atributos

    Casas decimais em nmero de ponto flutuante

    55.67

    Pacotes de subpacotes e classes em instrues import

    import javax.swing.JOptionPane;

  • Introduo Linguagem Java

    Separadores

    A vrgula separa:

    Declarao de mltiplas variveis

    double valor_principal, desconto, valor_total;

    Parmetros na assinatura de mtodos

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    Parmetros na assinatura de mtodos

    public double somar(double v1, double v2)

    Argumentos na invocao de mtodos

    somar(546.38, 329.11);

  • Introduo Linguagem Java

    Separadores

    O ponto-e-vrgula usado para:

    Separar as trs declaraes do lao for

    for(int contador = 0; contador

  • Introduo Linguagem Java

    Separadores

    Os parnteses so usados para:

    Delimitar os parmetros na assinatura de mtodos

    public double somar(double v1, double v2)

    Delimitar os argumentos na invocao de mtodos

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    Delimitar os argumentos na invocao de mtodos

    somar(546.38, 329.11);

    Alterar a precedncia de operaes em expresses

    int it = 2 * (3 + 5);

  • Introduo Linguagem Java

    Separadores

    As chaves delimitam:

    O corpo de uma classe

    O corpo de um mtodo

    Instrues de estruturas de deciso

    Instrues de estruturas de repetio

    Um escopo local

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    Um escopo local

    Um conjunto de valores a ser atribudo a um vetor

    Um conjunto de valores a ser atribudo a uma matriz

  • Introduo Linguagem Java

    Separadores

    Exemplo com chaves:

    public class ContagemRegressiva {

    public static void main(String[] args) {

    int it = Integer.parseInt(args[0]);

    while (it > 0) {

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    while (it > 0) {

    System.out.println(it);

    it--;

    }//Fim do lao while

    }//Fim do mtodo main

    }//Fim da classe

  • Introduo Linguagem Java

    Separadores

    Os colchetes so utilizados para:

    Declarao de vetores e matrizes

    int[] vetor;

    int vetor[];

    Inicializao de vetores e matrizes

    vetor = new int[2];

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    vetor = new int[2];

    Atribuir valor a uma posio de um vetor ou matriz

    vetor[0] = 3;

    vetor[1] = 6;

    Recuperar valor de uma posio de um vetor ou matriz

    int soma = vetor[0] + vetor[1]

  • Introduo Linguagem Java

    Comentrios

    Observaes e anotaes

    Ignorados pelo compilador

    Tipos

    De uma nica linha

    System.out.println(st);//Imprime o contedo de st

    De mltiplas linhas

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    De mltiplas linhas

    /*

    Esse mtodo realiza duas operaes:

    - Calcula a mdia aritmtica simples dos valores.

    - Arredonda e retorna o resultado.

    */

    De documentao

    /** */

  • Aplicativos

    Conceito: programas executveis

    Modos de interao com o usurio:

    Textual

    Grfico

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

  • Aplicativos

    Cdigo 3.1 BemVindo.java.1 import javax.swing.JOptionPane;23 public class BemVindo4 {5 public static void main(String[] args) 6 {7 JoptionPane.showMessageDialog(null,"Bem-vindo ao Java!");8 System.exit(0);9 }10 }

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    10 }

  • Aplicativos

    A declarao import

    Corresponde declarao include co C/C++

    Corresponde clusula uses do Pascal

    Condicionada necessidade

    Uma declarao import para cada componente ou pacote

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    import javax.swing.JOptionPane;

    import javax.swing.*;

  • Aplicativos

    Cdigo 3.2 BemVindo.java.1 public class BemVindo2 {3 public static void main(String[] args) 4 {5 JoptionPane.showMessageDialog(null,"Bem-vindo ao Java!");6 System.exit(0);//Importao implcita de java.lang

    o Erro comum: esquecer a importao de recurso utilizado

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    6 System.exit(0);//Importao implcita de java.lang7 }8 }

  • Aplicativos

    Aplicativo = componentes que se comunicam entre si

    Classes

    Interfaces

    A declarao de uma classe

    Encapsulamento: public (opcional)

    Termo class (obrigatrio)

    Identificador (obrigatrio)

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    Identificador (obrigatrio)

    Delimitao do corpo com chaves (obrigatrio)

    public class BemVindo {

    }

  • Aplicativos

    Cdigo 3.2 BemVindo.java.1 import javax.swing.JOptionPane;2 3 public class bemvindo4 {5 public static void main(String[] args) 6 {

    o Erro comum: nomes diferentes para o arquivo e classe pblica

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    6 {7 JoptionPane.showMessageDialog(null,"Bem-vindo ao Java!");8 System.exit(0);//Importao implcita de java.lang9 }10 }

  • Aplicativos

    Composio das classes

    Atributos

    Mtodos

    Composio de um aplicativo

    Uma de suas classes deve conter o mtodo main( )

    Pode conter um nmero adicional ilimitado de classes

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    O mtodo main( )

    Torna a classe executvel

    Contm as instrues que sero executadas

    public static void main(String[] args) {

    }

  • Aplicativos

    Erro comum: executar classe que no possui o mtodo main

    Resultado: uma mensagem de erro exibida

    Exception in Thread 'main'

    java.lang.NoSuchMethodError: main

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

  • Sada de Dados no Modo Textual

    A classe System

    Mtodos teis:

    System.exit(0);

    System.gc( );

    Tipo DescrioLocalizao java.lang.System

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    Localizao java.lang.SystemSuperclasse java.lang.ObjectDescrio Contm atributos e mtodos teis para a realizao de operaes de

    sistema.

  • Sada de Dados no Modo Textual

    A classe System

    Atributos:

    System.err

    System.in

    System.out

    System.out.print( );//Imprime e permanece na linha

    System.out.println( );//Imprime e avana uma linha

    System.out.printf( );//Imprime e permanece na linha

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    System.out.printf( );//Imprime e permanece na linha

    Atributo Descrioerr

    in

    out

    Atributo esttico do tipo PrintStream que representa o fluxo padro de sada de errosAtributo esttico do tipo InputStream que representa o fluxo padro de entrada de dadosAtributo esttico do tipo PrintStream que representa o fluxo padro de sada de dados

  • Sada de Dados no Modo Textual

    Sequncias de escape

    Seqncia Descrio\\ Imprime uma nica barra invertida\ Imprime uma aspa dupla\n Avana o cursor para a prxima linha\r Retorna o cursor ao incio da linha atual

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    \b Retorna o cursor um espao na linha atual\t Avana o cursor na linha atual at a prxima parada de tabulao

  • Sada de Dados no Modo Textual

    Cdigo 3.5 Saida.java.1 public class Saida {2 public static void main(String[] args) {3 System.out.println( );45 System.out.print("Um caractere:\t\t");6 System.out.print('A');7 System.out.print("\n");89 System.out.print("Um numero inteiro:\t");10 System.out.print(123);

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    10 System.out.print(123);11 System.out.print("\n");1213 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\"");1718 System.out.println( );19 }20 }

  • Sada de Dados no Modo Textual

    Cdigo 3.5 Saida.java.

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

  • Sada de Dados no Modo Textual

    Valores literais

    Tipo de dado Representao ExemploNmeros inteiros na base decimal v 11Nmeros inteiros na base hexadecimal 0xv 0xBNmeros inteiros na base octal 0v 13Nmeros inteiros longos vL 11L

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    Nmeros inteiros longos vL 11LNmeros reais de preciso simples v.vf 24.2fNmeros reais de preciso dupla v.v 55.6Valores lgicos v trueCaracteres v HTexto v Ana Carolina

  • Sada de Dados no Modo TextualCdigo 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 - preciso simples:\t" + 24.2f);9 System.out.println("Real - preciso dupla:\t\t" + 24.2);10 System.out.println("Tipo lgico:\t\t\t" + true);11 System.out.println("Caractere:\t\t\t" + 'H');

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    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 }

  • Sada de Dados no Modo TextualCdigo 3.6 Literais.java.

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

  • Sada de Dados no Modo Textual

    Sada formatada

    Recurso adicionado ao JSE 5.0

    Implica no uso de especificadores de formato

    Cada especificador marca uma posio

    System.out.printf(%s um %s,Plato, Filsofo);

    Sada: Plato um Filsofo

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    Sada: Plato um Filsofo

    Especificador Tipo de dado%s Texto

    %c Caractere%d Nmero inteiro%f Nmero de ponto flutuante%b Valor booleano

  • Sada de Dados no Modo TextualCdigo 3.7 SaidaFormatada.java.1 public class SaidaFormatada {2 public static void main(String[] args) {3 System.out.println( );45 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 nmero inteiro: %d",123);10 System.out.println( );11 System.out.printf("Um nmero decimal: %f",4.55);

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    11 System.out.printf("Um nmero decimal: %f",4.55);12 System.out.println( );13 System.out.printf("Um valor booleano: %b",true);14 System.out.println( );1516 System.out.println( );17 }18 }

  • Sada de Dados no Modo TextualCdigo 3.8 SaidaFormatadaEscape.java.1 public class SaidaFormatadaEscape {2 public static void main(String[] args) {3 System.out.println( );45 System.out.printf("Dois nmeros:\t\t%d e %d \n",2, 22);6 System.out.printf("O nmero %d equivale letra %c \n",65, 'A');78 System.out.println( );9 }10 }

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

  • 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)

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    Scanner scan = new Scanner(System.in);

    String nome = scan.nextLine();

  • Entrada de Dados no Modo TextualCdigo 3.9 Entrada.java.1 import java.io.IOException;23 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 }

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    11 }

  • Entrada de Dados no Modo TextualCdigo 3.10 EntradaScanner.java.1 import java.util.Scanner;23 public class EntradaScanner {4 public static void main(String[] args) {5 Scanner scan = new Scanner(System.in);67 System.out.print("\nInforme seu nome:\t");8 String nome = scan.nextLine();910 System.out.print("Informe seu e-mail:\t");11 String email = scan.nextLine();

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    11 String email = scan.nextLine();1213 System.out.println("\nDados recebidos:");14 System.out.printf("Nome:\t %s \nE-mail:\t %s\n\n",nome,email);15 }16 }

  • Entrada e Sada de Dados com Dilogos Grficos

    Classe: javax.swing.JOptionPane

    Entrada de dados

    String nm = JOptionPane.showInputDialog(null,"Informe seu nome");

    Sada de dados

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    Sada de dados

    JOptionPane.showMessageDialog(null,"Bem-vindo!");

  • Entrada e Sada de Dados com Dilogos GrficosCdigo 3.11 DialogoGrafico.java.1 import javax.swing.JOptionPane;23 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 }

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

  • Exerccio 1

    Crie um novo aplicativo, chamado Exercicio0301, que apresente a

    tabuada do nmero 9 utilizando uma disposio idntica da figura

    abaixo para organizar todos os dados. Note que estes dados esto

    divididos em dois grandes blocos e que algumas colunas de

    nmeros esto alinhadas direita.

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

  • Exerccio 2

    Crie um novo aplicativo, chamado Exercicio0302, que solicite o

    nome e o e-mail ao seu usurio e que, ao final, apresente estes dois

    dados tal como se fosse uma confirmao de cadastro. As sadas

    produzidas por este aplicativo devem ser idnticas quelas

    apresentadas na figura abaixo. Alm disso, voc deve implementar

    este aplicativo sem utilizar a classe java.util.Scanner. Ao invs

    desta classe, o aplicativo deve captar a entrada de dados atravs

    do outro procedimento apresentado neste captulo.

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

  • Exerccio 3

    Crie um novo aplicativo, chamado Exercicio0303, que solicite o

    nome, a nacionalidade e o telefone de seu usurio e que, ao final,

    apresente estes trs dados tal como se fosse uma confirmao de

    cadastro. As sadas produzidas por este aplicativo devem ser

    idnticas quelas apresentadas na figura abaixo. Alm disso, voc

    deve implementar este aplicativo utilizando a classe

    java.util.Scanner para captar as entradas de dados.

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

  • Exerccio 4

    Crie um novo aplicativo, chamado Exercicio0304, que solicite o

    nome dos dois jogos prediletos de seu usurio e que, ao final,

    apresente estes dois dados atravs de uma nica mensagem

    grfica. Este aplicativo tambm deve captar os dois dados atravs

    de dilogos grficos, como encontra-se ilustrado nas figuras abaixo.

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

  • Contato

    Com o autor:

    Rui Rossi dos Santos

    E-mail: [email protected]

    Web Site: http://www.ruirossi.pro.br

    Com a editora:

    Rui Rossi dos Santos Programao de Computadores em Java Editora NovaTerra

    Com a editora:

    Editora NovaTerra

    E-mail Geral: [email protected]

    E-mail Comercial: [email protected]

    Web Site: http://www.editoranovaterra.com.br