AFF Education Construa seu Futuro

Aula 48 - Métodos Personalizados

Métodos personalizados (continuação)

Além de usar métodos existentes (aulas 33 e 34), você pode criar seus próprios métodos para organizar e reutilizar seu código:

Um método personalizado (ou uma função em JavaScript) é executado quando é chamado; ao ser executado, ele pode retornar um valor e/ou causar efeitos no programa.


public class Util {
    // Sem retorno (void)
    public static void saudar(String nome) {
        System.out.println("Olá, " + nome + "!");
    }

    // Com retorno (int)
    public static int somar(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        saudar("Maria");                 
        int r = somar(4, 6);            
        System.out.println("Soma: " + r);
    }
}
            

Olá, Maria!

Soma: 10

em Java, métodos void não retornam um valor; sua importância está em executar ações com efeitos colaterais úteis — atualizar estado, salvar no banco, enviar eventos, escrever logs, interagir com rede/arquivo/UI.

Métodos personalizados: mais exemplos

Métodos personalizados podem ter retorno (uso de return) ou sem retorno (uso de void)

public class MetodosPersonalizados {
    public static void main(String[] args) {
        // Chamando método sem parâmetros e sem retorno
        exibirMensagemBoasVindas();
        
        // Chamando método com parâmetros e sem retorno
        exibirMensagemPersonalizada("Maria", 25);
        exibirMensagemPersonalizada("João", 30);
        
        // Chamando método com parâmetros e com retorno
        int resultado = somar(10, 15);
        System.out.println("\nResultado da soma: " + resultado);
        
        // Usando diretamente o retorno do método em uma expressão
        double media = calcularMedia(7.5, 8.0, 6.5) / 3;
        System.out.println("Média: " + media);
        
        // Usando método booleano para tomar decisões
        int idade = 17;
        if (ehMaiorDeIdade(idade)) {
            System.out.println("\nA pessoa com " + idade + " anos é maior de idade.");
        } else {
            System.out.println("\nA pessoa com " + idade + " anos é menor de idade.");
        }
    }
    
    // Método sem parâmetros e sem retorno
    public static void exibirMensagemBoasVindas() {
        System.out.println("Bem-vindo ao sistema!");
        System.out.println("Aprenda a criar métodos em Java.");
    }
    
    // Método com parâmetros e sem retorno
    public static void exibirMensagemPersonalizada(String nome, int idade) {
        System.out.println("\nOlá, " + nome + "!");
        System.out.println("Você tem " + idade + " anos.");
    }
    
    // Método com parâmetros e com retorno
    public static int somar(int a, int b) {
        return a + b;
    }
    
    // Método que recebe vários parâmetros e retorna um valor
    public static double calcularMedia(double nota1, double nota2, double nota3) {
        return nota1 + nota2 + nota3;
    }
    
    // Método que retorna um valor booleano
    public static boolean ehMaiorDeIdade(int idade) {
        return idade >= 18;
    }
}

Bem-vindo ao sistema!

Aprenda a criar métodos em Java.

Olá, Maria!

Você tem 25 anos.

Olá, João!

Você tem 30 anos.

Resultado da soma: 25

Média: 7.333333333333333

A pessoa com 17 anos é menor de idade.

Métodos personalizados em Java são “funções” que você define dentro de uma classe; isso é bem próximo do conceito de função em JavaScript (que pode existir de forma solta, sem classe). A diferença principal é que, em Java, tudo vive dentro de classes e você especifica tipos estáticos (parâmetros e retorno), enquanto no JavaScript os tipos são dinâmicos.

Mais exemplos de métodos personalizados

public class mediaNotasAlunosComMetodos {
    public static void main(String[] args) {
        double nota1 = 7.5;
        double nota2 = 8.0;
        double nota3 = 6.5;

        String nomeAluno = "Mariete";

        String saudacao = saudarAluno(nomeAluno);
        System.out.println(saudacao);

        double media = calcularMedia(nota1, nota2, nota3);

        System.out.println("O aluno " + nomeAluno + " tem média: " + media);
    }

    public static String saudarAluno(String nome) {
        return "Olá, " + nome + "! Bem-vindo à nossa turma.";
    }

    public static double calcularMedia(double n1, double n2, double n3) {
        return (n1 + n2 + n3) / 3;
    }
}

Olá, Mariete! Bem-vindo à nossa turma.

O aluno Mariete tem média: 7.333333333333333

Outro exemplo de método

public class calculadoraComMetodos {
    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 5;

        int resultadoSoma = somar(num1, num2);
        int resultadoSubtracao = subtrair(num1, num2);
        int resultadoMultiplicacao = multiplicar(num1, num2);
        double resultadoDivisao = dividir(num1, num2);

        System.out.println("Soma: " + resultadoSoma);
        System.out.println("Subtração: " + resultadoSubtracao);
        System.out.println("Multiplicação: " + resultadoMultiplicacao);
        System.out.println("Divisão: " + resultadoDivisao);
    }

    public static int somar(int a, int b) {
        return a + b;
    }
    public static int subtrair(int a, int b) {
        return a - b;
    }
    public static int multiplicar(int a, int b) {
        return a * b;
    }
    public static double dividir(double a, double b) {
        return a / b;
    }
}
        

Soma: 15

Subtração: 5

Multiplicação: 50

Divisão: 2.0

Exercícios

Teste seus conhecimentos sobre métodos personalizados em Java:

1. O que são métodos personalizados em Java?

2. Qual é a diferença entre parâmetro e argumento em métodos Java?

3. Por que é vantajoso dividir um programa em métodos personalizados?

4. Qual é a saída do programa abaixo?

public static int dobrar(int n) {
    return n * 2;
}
public static void main(String[] args) {
    int x = dobrar(3);
    System.out.println(dobrar(x));
}

5. O que o método retorna quando chamado com verificar(10, 10)?

public static String verificar(int a, int b) {
    if (a > b) return "maior";
    if (a < b) return "menor";
    return "igual";
}

6. Qual será a saída do programa?

public static void cumprimentar(String nome) {
    System.out.println("Oi, " + nome + "!");
}
public static void main(String[] args) {
    String[] nomes = {"Ana", "Bob"};
    for (String n : nomes) {
        cumprimentar(n);
    }
}

Exercícios de Aplicação AFF Education

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

1. Dado public static int quad(int n){ return n * n; }, quanto vale quad(5)?

2. Um método void que apenas imprime uma mensagem é útil porque: