Material de Aulas Java-3 MÉTODOS E PACOTES Vimos métodos como main(), parseInt(), parseFloat(), parseDouble(), readLine() e outros, que tornam nosso trabalho bastante versátil. 1 – Métodos Definidos pelo Programador O programa a seguir mostra o funcionamento de métodos definidos pelo programador: import java.io.*; class C08EX01 { public static void main(String args[]) { System.out.println("Execucao do programa principal - 1"); SubRotina(); System.out.println("Execucao do programa principal - 2"); } public static void SubRotina() { System.out.println("Execucao da sub-rotina"); } } Sintaxe: [qualificador] [retorno] [nome(<parâmetros>)] { <corpo do código do método> <return (<valor>)> } Qualificador Prof. Walcyr Retorno Nome Parâmetro 1 Material de Aulas Java-3 O programa a seguir que simula uma calculadora, foi desenvolvido utilizando métodos desenvolvidos pelo programador: // C08EX02.java // Programa Calculadora import java.io.*; import java.text.*; class C08EX02 { public static void main(String args[]) { byte OPCAO = 0; // Programa principal while (OPCAO != 5) { System.out.println(); System.out.println(); System.out.println("------------------------"); System.out.println(" Programa Calculadora "); System.out.println(" Menu Principal "); System.out.println("------------------------"); System.out.println(); System.out.println("[1] ............. Adicao"); System.out.println("[2] .......... Subtracao"); System.out.println("[3] ...... Multiplicacao"); System.out.println("[4] ............ Divisao"); System.out.println("[5] .... Fim de Programa"); System.out.println(); System.out.print("Escolha uma opcao: "); try { BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); OPCAO = Byte.parseByte(br.readLine()); } catch (Exception e) { OPCAO = 0; } if (OPCAO != 5 || OPCAO != 0) { switch (OPCAO) { case 1: rotadicao(); break; case 2: rotsubtracao(); break; case 3: rotmultiplicacao(); break; case 4: rotdivisao(); break; } } Prof. Walcyr 2 Material de Aulas Java-3 } } // Modulo de Adicao public static void rotadicao() { double R, A, B; DecimalFormat df = new DecimalFormat(); System.out.println(); System.out.println(); System.out.println("Rotina de Adicao"); System.out.println("----------------"); System.out.println(); System.out.print("Entre um valor para a variavel [A]: "); try { BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); A = Double.parseDouble(br.readLine()); } catch (Exception e) { A = 0; } System.out.print("Entre um valor para a variavel [B]: "); try { BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); B = Double.parseDouble(br.readLine()); } catch (Exception e) { B = 0; } R = A + B; System.out.println(); df.applyPattern("0.00"); System.out.println("O resultado entre A e B = " + df.format(R)); pausa(); } // Modulo de Subtracao public static void rotsubtracao() { double R, A, B; DecimalFormat df = new DecimalFormat(); System.out.println(); System.out.println(); Prof. Walcyr 3 Material de Aulas Java-3 System.out.println("Rotina de Subtracao"); System.out.println("-------------------"); System.out.println(); System.out.print("Entre um valor para a variavel [A]: "); try { BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); A = Double.parseDouble(br.readLine()); } catch (Exception e) { A = 0; } System.out.print("Entre um valor para a variavel [B]: "); try { BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); B = Double.parseDouble(br.readLine()); } catch (Exception e) { B = 0; } R = A - B; System.out.println(); df.applyPattern("0.00"); System.out.println("O resultado entre A e B = " + df.format(R)); pausa(); } // Modulo de Multiplicacao public static void rotmultiplicacao() { double R, A, B; DecimalFormat df = new DecimalFormat(); System.out.println(); System.out.println(); System.out.println("Rotina de Multiplicacao"); System.out.println("-----------------------"); System.out.println(); System.out.print("Entre um valor para a variavel [A]: "); try { BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); A = Double.parseDouble(br.readLine()); } catch (Exception e) { A = 0; } System.out.print("Entre um valor para a variavel [B]: "); Prof. Walcyr 4 Material de Aulas Java-3 try { BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); B = Double.parseDouble(br.readLine()); } catch (Exception e) { B = 0; } R = A * B; System.out.println(); df.applyPattern("0.00"); System.out.println("O resultado entre A e B = " + df.format(R)); pausa(); } // Modulo de Divisao public static void rotdivisao() { double R, A, B; DecimalFormat df = new DecimalFormat(); System.out.println(); System.out.println(); System.out.println("Rotina de Divisao"); System.out.println("-----------------"); System.out.println(); System.out.print("Entre um valor para a variavel [A]: "); try { BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); A = Double.parseDouble(br.readLine()); } catch (Exception e) { A = 0; } System.out.print("Entre um valor para a variavel [B]: "); try { BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); B = Double.parseDouble(br.readLine()); } catch (Exception e) { B = 0; } if (B == 0) { System.out.println(); System.out.println("Erro de divisao"); } else { R = A / B; Prof. Walcyr 5 Material de Aulas Java-3 System.out.println(); df.applyPattern("0.00"); System.out.println("O resultado entre A e B = " + df.format(R)); pausa(); } } // Modulo de Pausa public static void pausa() { byte ENTER; System.out.println(); System.out.print("Tecle <ENTER> para voltar ao menu: "); try { BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); ENTER = Byte.parseByte(br.readLine()); } catch (Exception e) { ENTER = 0; } } } Prof. Walcyr 6 Material de Aulas Java-3 Prof. Walcyr 7 Material de Aulas Java-3 2 - Passagem de Parâmetro O programa de cálculo da fatorial foi elaborado agora com o uso de passagem de parâmetro. import java.io.*; class C08EX03 { public static void main(String args[]) { byte X; System.out.println(); System.out.println("-------------------------"); System.out.println(" Programa Fatorial "); System.out.println("-------------------------"); System.out.println(); System.out.print("Entre um valor inteiro (de 0 ate 25): "); try { BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); X = Byte.parseByte(br.readLine()); } catch (Exception e) { X = 0; } System.out.println(); Prof. Walcyr 8 Material de Aulas Java-3 fatorial(X); System.out.println(); } public static void fatorial(byte N) { long FAT = 1; if (N == 0) FAT = 0; else for (int I = 1; I <= N; I++) FAT *= I; System.out.println("Fatorial de " + N + " = " + FAT); } } O mesmo programa poderia ser escrito com a passagem de parâmetro para fora do método chamado. import java.io.*; class C08EX04 { public static void main(String args[]) { Prof. Walcyr 9 Material de Aulas Java-3 byte X; long R; System.out.println(); System.out.println("-------------------------"); System.out.println(" Programa Fatorial "); System.out.println("-------------------------"); System.out.println(); System.out.print("Entre um valor inteiro (de 0 ate 25): "); try { BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); X = Byte.parseByte(br.readLine()); } catch (Exception e) { X = 0; } System.out.println(); R = fatorial(X); System.out.println(); System.out.println("Fatorial de " + X + " = " + R); } public static long fatorial(byte N) { long FAT = 1; if (N == 0) FAT = 0; else for (int I = 1; I <= N; I++) FAT *= I; return(FAT); } } Prof. Walcyr 10 Material de Aulas Java-3 3 – Métodos de Classes Externas O programa abaixo usa o programa que foi desenvolvido anteriormente C08EX04 para obter o resultado. import java.io.*; class C08EX05 { public static void main(String args[]) { byte X; long R; System.out.println(); System.out.println("-------------------------"); System.out.println(" Programa Fatorial "); System.out.println("-------------------------"); System.out.println(); System.out.print("Entre um valor inteiro (de 0 ate 25): "); try { BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); X = Byte.parseByte(br.readLine()); } catch (Exception e) { Prof. Walcyr 11 Material de Aulas Java-3 X = 0; } System.out.println(); R = C08EX04.fatorial(X); System.out.println(); System.out.println("Fatorial de " + X + " = " + R); } } Prof. Walcyr 12