Atributos e Métodos em Classes

No paradigma de Programação Orientada a Objetos (POO), as classes são os blocos de construção fundamentais. Elas descrevem o comportamento (métodos) e as características (atributos) dos objetos que serão instanciados a partir delas. Neste artigo/tutorial, vamos explorar o conceito de atributos e métodos em classes Java, entender sua importância e ver exemplos práticos de como utilizá-los.

O que são Atributos?

Os atributos (também conhecidos como variáveis de instância) são as características que cada objeto da classe terá. Em termos simples, eles são as variáveis declaradas dentro de uma classe e são utilizados para armazenar dados que descrevem o estado dos objetos.

Exemplo de uma classe com atributos:

class Pessoa {
    // Atributos da classe Pessoa
    String nome;
    int idade;
}

No exemplo acima, a classe Pessoa tem dois atributos: nome (do tipo String) e idade (do tipo int). Esses atributos serão preenchidos com valores específicos quando um objeto da classe Pessoa for criado.

Instanciando a classe e acessando atributos:

public class Main {
    public static void main(String[] args) {
        // Criando um objeto da classe Pessoa
        Pessoa pessoa1 = new Pessoa();

        // Atribuindo valores aos atributos
        pessoa1.nome = "Maria";
        pessoa1.idade = 25;

        // Exibindo os valores dos atributos
        System.out.println("Nome: " + pessoa1.nome);
        System.out.println("Idade: " + pessoa1.idade);
    }
}

Saída:

Nome: Maria
Idade: 25

No exemplo acima, criamos um objeto da classe Pessoa, atribuímos valores aos seus atributos e os exibimos no console.

O que são Métodos?

Os métodos em Java são ações ou comportamentos que um objeto pode realizar. Eles são definidos dentro de uma classe e geralmente manipulam ou utilizam os atributos da classe para realizar uma tarefa. Um método pode receber parâmetros e retornar valores.

Exemplo de uma classe com métodos:

class Pessoa {
    // Atributos
    String nome;
    int idade;

    // Método para exibir as informações da pessoa
    void exibirInformacoes() {
        System.out.println("Nome: " + nome);
        System.out.println("Idade: " + idade);
    }

    // Método para alterar a idade
    void alterarIdade(int novaIdade) {
        idade = novaIdade;
    }
}

Chamando métodos em um objeto:

public class Main {
    public static void main(String[] args) {
        // Criando um objeto da classe Pessoa
        Pessoa pessoa1 = new Pessoa();

        // Atribuindo valores aos atributos
        pessoa1.nome = "João";
        pessoa1.idade = 30;

        // Chamando o método para exibir as informações
        pessoa1.exibirInformacoes();

        // Alterando a idade usando o método
        pessoa1.alterarIdade(35);

        // Exibindo as informações novamente após a alteração
        pessoa1.exibirInformacoes();
    }
}

Saída:

Nome: João
Idade: 30
Nome: João
Idade: 35

Neste exemplo, a classe Pessoa contém dois métodos: exibirInformacoes para exibir os atributos e alterarIdade para modificar o valor do atributo idade. Esses métodos ajudam a interagir com os atributos de maneira controlada.

Modificadores de Acesso: Controlando o Acesso a Atributos e Métodos

Para proteger os dados de um objeto, utilizamos os modificadores de acesso. O mais comum é o modificador private, que limita o acesso aos atributos da classe, permitindo que eles sejam manipulados apenas dentro da própria classe.

Para permitir o acesso externo de forma controlada, usamos os métodos getters e setters.

Exemplo com encapsulamento:

class Pessoa {
    // Atributos privados
    private String nome;
    private int idade;

    // Método setter para alterar o valor do nome
    public void setNome(String nome) {
        this.nome = nome;
    }

    // Método getter para obter o valor do nome
    public String getNome() {
        return nome;
    }

    // Método setter para alterar a idade
    public void setIdade(int idade) {
        this.idade = idade;
    }

    // Método getter para obter a idade
    public int getIdade() {
        return idade;
    }
}

Agora, os atributos nome e idade são privados, o que significa que só podem ser acessados diretamente dentro da classe. Para acessar esses atributos fora da classe, precisamos utilizar os métodos set (para alterar) e get (para obter).

Exemplo de uso dos getters e setters:

public class Main {
    public static void main(String[] args) {
        Pessoa pessoa1 = new Pessoa();

        // Usando setters para atribuir valores
        pessoa1.setNome("Ana");
        pessoa1.setIdade(28);

        // Usando getters para obter os valores
        System.out.println("Nome: " + pessoa1.getNome());
        System.out.println("Idade: " + pessoa1.getIdade());
    }
}

Saída:

Nome: Ana
Idade: 28

Métodos com Retorno

Um método pode retornar um valor. Nesse caso, você deve especificar o tipo de dado que será retornado (como int, String, etc.). Caso o método não retorne nenhum valor, utilizamos a palavra-chave void.

Exemplo de método com retorno:

class Calculadora {
    // Método que retorna a soma de dois números
    int somar(int a, int b) {
        return a + b;
    }
}

Utilizando o método com retorno:

public class Main {
    public static void main(String[] args) {
        Calculadora calc = new Calculadora();

        int resultado = calc.somar(5, 3);
        System.out.println("Resultado da soma: " + resultado);
    }
}

Saída:

Resultado da soma: 8

Neste exemplo, o método somar retorna a soma de dois números inteiros. O resultado é capturado em uma variável e exibido no console.

Conclusão

Neste tutorial, exploramos os atributos e métodos em classes Java, que são essenciais para a criação de objetos funcionais e robustos. Vimos como usar atributos para definir o estado dos objetos e como métodos permitem realizar ações sobre esses atributos. Também vimos como usar modificadores de acesso, encapsulamento, getters e setters, e métodos com retorno.

Com esses conceitos, você está pronto para começar a criar programas mais estruturados e eficientes em Java.