AFF Education Construa seu Futuro

Aula 34 - Métodos personalizados

Revisão sobre Métodos

Há dois tipos de métodos: métodos incorporados (vistos anteriormente) e métodos personalizados (essa aula)

Os métodos são blocos de código que executam uma tarefa específica e podem ser reutilizados em diferentes partes do programa. Um método pode receber parâmetros, processar informações e retornar um resultado.

Métodos personalizados em Java são equivalentes às funções de outras linguagens como JavaScript ou Python.

Métodos existentes (ou incorporados), também conhecidos como métodos integrados ou de biblioteca, são funções predefinidas que já vêm como parte da biblioteca padrão do Java (Java Development Kit - JDK). Eles são projetados para realizar tarefas comuns e otimizadas, o que economiza tempo e esforço do desenvolvedo

Características dos métodos personalizados em Java:

Anatomia de um Método

public static int multiplicar(int a, int b) {
int resultado = a * b;
return resultado; }

Componentes de um método:

Métodos personalizados

Diagrama do for-each iterando sobre o array primeiros5Pares
Figura 2 — Visualização do for-each percorrendo o array primeiros5Pares. A cada iteração, a variável numero recebe automaticamente o próximo valor do array, sem precisar de índice.
public class TiposDeMetodos {
    public static void main(String[] args) {
        // Método sem parâmetros e sem retorno
        imprimirMensagem();
        
        // Método com parâmetros e sem retorno
        imprimirSaudacao("João");
        
        // Método sem parâmetros e com retorno
        int numeroDaSorte = gerarNumeroDaSorte();
        System.out.println("Número da sorte: " + numeroDaSorte);
        
        // Método com parâmetros e com retorno
        int soma = somarNumeros(5, 7);
        System.out.println("Soma: " + soma);
        
        // Método que recebe um array como parâmetro
        int[] numeros = {1, 2, 3, 4, 5};// criação de vetor será visto adiante
        double media = calcularMedia(numeros);
        System.out.println("Média: " + media);
        
        // Método que retorna um array
        int[] primeiros5Pares = obterNumerosPares(5);// criação de vetor será visto adiante
        System.out.print("Primeiros 5 números pares: ");// loop for usado para gerar os número do vetor.
        for (int numero : primeiros5Pares) {
            System.out.print(numero + " ");
        }
        System.out.println();
    }
    
    // Método sem parâmetros e sem retorno (void)
    public static void imprimirMensagem() {
        System.out.println("Bem-vindo ao sistema!");
    }
    
    // Método com parâmetros e sem retorno(void)
    public static void imprimirSaudacao(String nome) {
        System.out.println("Olá, " + nome + "!");
    }
    
    // Método sem parâmetros e com retorno
    public static int gerarNumeroDaSorte() {
        // Gera um número aleatório entre 1 e 100
        return (int)(Math.random() * 100) + 1;
    }
    
    // Método com parâmetros e com retorno
    public static int somarNumeros(int a, int b) {
        return a + b;
    }
    
    // Método que recebe um array como parâmetro
    public static double calcularMedia(int[] numeros) {
        int soma = 0;
        for (int numero : numeros) {
            soma += numero;
        }
        return (double) soma / numeros.length;
    }
    
    // Método que retorna um array
    public static int[] obterNumerosPares(int quantidade) {
        int[] pares = new int[quantidade];
        for (int i = 0; i < quantidade; i++) {
            pares[i] = i * 2 + 2;  // 2, 4, 6, 8, ...
        }
        return pares;
    }
}

Bem-vindo ao sistema!

Olá, João!

Número da sorte: 73

Soma: 12

Média: 3.0

Primeiros 5 números pares: 2 4 6 8 10

Atividade prática

Abra o One Compiler para Java: clique aqui!

Execute o código abaixo no One Compiler e observe os resultados. Compare as diferenças de resultados com aqueles do código acima.

            public class TiposDeMetodos {
                public static void main(String[] args) {
                    // Método sem parâmetros e sem retorno
                    imprimirMensagem();
                    
                    // Método com parâmetros e sem retorno
                    imprimirSaudacao("Ananda e Caio");
                    
                    // Método sem parâmetros e com retorno
                    int numeroDaSorte = gerarNumeroDaSorte();
                    System.out.println("Numero da sorte: " + numeroDaSorte);
                    
                    // Método com parâmetros e com retorno
                    int soma = somarNumeros(3, 4);
                    System.out.println("Soma: " + soma);
                    
                    // Método com parâmetros e com retorno
                    int produto = multiplicarNumeros(3, 4);
                    System.out.println("produto: " + produto);
                    
                    
                    // Método que recebe um array como parâmetro
                    int[] numeros = {3, 4, 7, 6, 7, 8};// criação de vetor será visto adiante
                    double media = calcularMedia(numeros);
                    System.out.println("Media: " + media);
                    
                    // Método que retorna um array
                    int[] primeiros10Pares = obterNumerosPares(10);// criação de vetor será visto adiante
                    System.out.print("Primeiros 10 números pares: ");// loop for usado para gerar os número do vetor.
                    for (int numero : primeiros10Pares) {
                        System.out.print(numero + " ");
                    }
                    System.out.println();
                }
                
                // Método sem parâmetros e sem retorno (void)
                public static void imprimirMensagem() {
                    System.out.println("Bem-vindo ao sistema!");
                }
                
                // Método com parâmetros e sem retorno(void)
                public static void imprimirSaudacao(String nome) {
                    System.out.println("Ola, " + nome + "!");
                }
                
                // Método sem parâmetros e com retorno
                public static int gerarNumeroDaSorte() {
                    // Gera um número aleatório entre 1 e 100
                    return (int)(Math.random() * 100) + 1;
                }
                
                // Método com parâmetros e com retorno
                public static int somarNumeros(int a, int b) {
                    return a + b;
                }
                
                // Método que recebe um array como parâmetro
                public static double calcularMedia(int[] numeros) {
                    int soma = 0;
                    for (int numero : numeros) {
                        soma += numero;
                    }
                    return (double) soma / numeros.length;
                }
                
                // Método que retorna um array
                public static int[] obterNumerosPares(int quantidade) {
                    int[] pares = new int[quantidade];
                    for (int i = 0; i < quantidade; i++) {
                        pares[i] = i * 2 + 2;  // 2, 4, 6, 8, ...
                    }
                    return pares;
                }
                
                public static int multiplicarNumeros(int c, int d) {
                    return c * d;
                }
            }
        

Parâmetros e argumentos de métodos personalizados

No main do código abaixo, você define:

Chama o método:

int contador = contarCaractere(texto, caractere);

Dentro de contarCaractere(String texto, char c):

  1. texto.length() dá o tamanho.
  2. texto.charAt(i) pega cada caractere.
  3. Compara == c; se igual, incrementa contador.
  4. Retorna o total.

O return volta para o main, e você imprime:

System.out.println("O caractere '" + caractere + "' aparece " + contador + " vezes no texto.");

            public class ContagemCaracteres {
                public static void main(String[] args) {
                    String texto = "Ananda";
                    texto = texto.toLowerCase();
                    char caractere = 'a';

                    int contador = contarCaractere(texto, caractere);
                    System.out.println("O caractere '" + caractere + "' aparece " + contador + " vezes na palavra (ou no texto):" + texto);
                }

                public static int contarCaractere(String texto, char c) {
                    int contador = 0;
                    for (int i = 0; i < texto.length(); i++) {
                        if (texto.charAt(i) == c) {
                            contador++;
                        }
                    }
                    return contador;
                }
            }
        

O caractere 'a' aparece 3 vezes na palavra (ou no texto): Ananda

O que são parâmetros e argumentos?

Em outras palavras: quando você chama contarCaractere(texto, caractere);, o valor da variável texto vai para o parâmetro String texto (dentro do método) e o valor de caractere vai para o parâmetro char c.

Atividade prática

Abra o One Compiler para Java: clique aqui!

Execute o código abaixo no One Compiler e observe os resultados. Compare as diferenças de resultados com aqueles do código acima.

            public class ContagemCaracteres {
                public static void main(String[] args) {
                    String texto = "Ludmila estava mal de saude.";
                    texto = texto.toLowerCase();
                    char caractere = 'l';

                    int contador = contarCaractere(texto, caractere);
                    System.out.println("O caractere '" + caractere + "' aparece " + contador + " vezes na palavra (ou no texto):" + texto);
                }

                public static int contarCaractere(String texto, char c) {
                    int contador = 0;
                    for (int i = 0; i < texto.length(); i++) {
                        if (texto.charAt(i) == c) {
                            contador++;
                        }
                    }
                    return contador;
                }
            }
        

Exercícios de Aplicação AFF Education

Reforce o conteúdo desta aula com mais dois exercícios práticos:

1. Um método public static int triplo(int n) { return n * 3; } chamado com triplo(4) retorna:

2. Para que um método retorne um valor double, sua assinatura deve: