AFF Education Construa seu Futuro

☕ Java para Iniciantes

Aula 61  |  Entendendo Classes e Objetos

O que é uma Classe?

No mundo real, podemos descrever qualquer coisa — uma pessoa, um carro, um produto — usando duas ideias simples: características (o que ela tem) e comportamentos (o que ela faz). Em Java, uma classe é o modelo que reúne essas duas ideias em um único lugar.

Uma classe é um molde (ou planta baixa) que define quais atributos (dados/variáveis) e quais métodos (ações/funções) um objeto terá quando for criado a partir dela.

O principal objetivo de uma classe é a organização do código. Vamos entender isso com um exemplo concreto.

Imagine que você vai criar um aplicativo para uma escola com 100 alunos e precisa cadastrar cada aluno com as seguintes informações: nome, idade, ano e turma. Todos os alunos têm esses mesmos dados, mas com valores diferentes.

Sem classes, você seria forçado a criar 100 variáveis de nome, 100 de idade, 100 de ano e 100 de turma — 400 variáveis no total só para 100 alunos. Depois, a escola cresceu e passou para 200 alunos: mais 400 variáveis. O código rapidamente se tornaria impossível de ler e manter.

Com uma classe, você cria um único molde com esses 4 atributos e, a partir daí, basta associar cada objeto (aluno) a essa classe e inserir os valores de cada atributo para cada aluno. O código fica mais limpo e organizado. Esse é o principal motivo de se usar classes.

Pense em uma classe como a receita de um bolo: a receita em si não é o bolo, mas descreve todos os ingredientes e os passos para fazê-lo. Cada vez que você seguir a receita, você criará um bolo diferente — um objeto.

📐 Classe = Molde

Define a estrutura: quais dados existem e quais ações são possíveis. Existe apenas uma vez no código.

📦 Objeto = Instância

É criado a partir da classe com a palavra new. Pode existir muitos objetos de uma mesma classe.

Atributos de uma Classe

Os atributos são as variáveis declaradas dentro de uma classe, mas fora de qualquer método. Eles representam as características que todo objeto daquela classe possuirá.

No exemplo abaixo, a classe Cliente possui quatro atributos: nome (nome do cliente), peso (peso em quilogramas), altura (altura em metros) e idade (idade em anos). Cada objeto criado a partir dessa classe terá seus próprios valores de forma independente.

public class Cliente {
    String nome;   // nome do cliente
    double peso;   // peso em quilogramas
    double altura; // altura em metros
    int    idade;  // idade em anos
}
Os atributos de uma classe funcionam como as variáveis que você já conhece, mas pertencem ao objeto. Cada objeto guarda seus próprios valores de forma independente na memória do computador.
Cliente

String nome  atributo

double peso  atributo

double altura  atributo

int idade  atributo

Criando um Objeto com new

Para usar uma classe, precisamos instanciá-la, ou seja, criar um objeto a partir dela. Em Java, isso é feito com a palavra-chave new.

Cliente cliente1 = new Cliente();

Lendo essa linha da esquerda para a direita:

Depois de criar o objeto com new, usamos o ponto (.) para acessar os atributos desse objeto. Por exemplo: cliente1.peso = 75.0; atribui o valor 75.0 ao atributo peso do objeto cliente1.

Exemplo Completo – Classe EstruturaSimples

Agora veja um programa completo que usa a classe Cliente. Observe como três objetos são criados a partir do mesmo molde — cada um com seus próprios valores — e como os atributos são usados em uma condição if-else.

public class Cliente {
    String nome;   // nome do cliente
    double peso;   // peso em quilogramas
    double altura; // altura em metros
    int    idade;  // idade em anos
}

public class EstruturaSimples {
    public static final double alturaMaxima = 1.90; // constante: altura máxima em metros

    public static void main(String[] args) {

        // cliente1
        Cliente cliente1 = new Cliente();
        cliente1.nome   = "Ana Silva";
        cliente1.peso   = 62.5;
        cliente1.altura = 1.65;
        cliente1.idade  = 28;

        // cliente2
        Cliente cliente2 = new Cliente();
        cliente2.nome   = "Bruno Costa";
        cliente2.peso   = 88.0;
        cliente2.altura = 1.82;
        cliente2.idade  = 35;

        // cliente3
        Cliente cliente3 = new Cliente();
        cliente3.nome   = "Carla Souza";
        cliente3.peso   = 55.0;
        cliente3.altura = 1.93;
        cliente3.idade  = 22;

        // Exibindo dados de cada cliente com verificação de altura
        Cliente[] clientes = {cliente1, cliente2, cliente3};
        for (Cliente c : clientes) {
            System.out.print(c.nome + " | Peso: " + c.peso
                           + " kg | Altura: " + c.altura
                           + " m | Idade: " + c.idade + ". ");
            if (c.altura > alturaMaxima)
                System.out.println("Altura acima da máxima.");
            else
                System.out.println("Altura dentro do padrão.");
        }
    }
}

Saída no terminal:

Ana Silva | Peso: 62.5 kg | Altura: 1.65 m | Idade: 28. Altura dentro do padrão.

Bruno Costa | Peso: 88.0 kg | Altura: 1.82 m | Idade: 35. Altura dentro do padrão.

Carla Souza | Peso: 55.0 kg | Altura: 1.93 m | Idade: 22. Altura acima da máxima.

Entendendo cada parte do código

Trecho do código O que significa
public class Cliente Declaração da classe molde com quatro atributos.
public static final double alturaMaxima = 1.90 Constante: valor fixo que não pode ser alterado após a atribuição.
new Cliente() Cria um objeto do tipo Cliente na memória.
cliente1.peso = 62.5 Acessa o atributo peso do objeto cliente1 e atribui 62.5.
System.out.print(...) Imprime na tela sem pular linha ao final.
System.out.println(...) Imprime na tela pulando uma linha ao final.
if / else Estrutura de controle que executa blocos diferentes dependendo da condição.

Vários Objetos de uma Mesma Classe

Uma das grandes vantagens de usar classes é poder criar múltiplos objetos independentes a partir do mesmo molde. Cada objeto tem seus próprios valores de atributos, sem interferir nos outros.

Cliente cliente1 = new Cliente();
cliente1.nome   = "Ana Silva";
cliente1.peso   = 62.5;
cliente1.altura = 1.65;
cliente1.idade  = 28;

Cliente cliente2 = new Cliente();
cliente2.nome   = "Bruno Costa";
cliente2.peso   = 88.0;
cliente2.altura = 1.82;
cliente2.idade  = 35;

System.out.println(cliente1.nome + " – Peso: " + cliente1.peso + ", Altura: " + cliente1.altura);
System.out.println(cliente2.nome + " – Peso: " + cliente2.peso + ", Altura: " + cliente2.altura);

Saída no terminal:

Ana Silva – Peso: 62.5, Altura: 1.65

Bruno Costa – Peso: 88.0, Altura: 1.82

cliente1 e cliente2 são dois objetos distintos que existem ao mesmo tempo na memória. Alterar cliente1.peso não afeta cliente2.peso.

A Grande Vantagem de Usar Classes

Pense em uma classe como um gaveteiro. O gaveteiro em si é a classe — no nosso caso, Cliente. Cada gaveta é um atributo: uma gaveta chamada nome, outra peso, outra altura e outra idade.

Agora, imagine que você precisa guardar os dados de três clientes diferentes. Com o gaveteiro, você simplesmente cria três instâncias (objetos) e cada uma tem suas próprias gavetas:

Cliente cliente1 = new Cliente();
cliente1.nome = "Ana Silva";   cliente1.peso = 62.5;
cliente1.altura = 1.65;        cliente1.idade = 28;

Cliente cliente2 = new Cliente();
cliente2.nome = "Bruno Costa"; cliente2.peso = 88.0;
cliente2.altura = 1.82;        cliente2.idade = 35;

Cliente cliente3 = new Cliente();
cliente3.nome = "Carla Souza"; cliente3.peso = 55.0;
cliente3.altura = 1.93;        cliente3.idade = 22;

Sem classes, você seria obrigado a criar uma variável separada para cada combinação de cliente e dado, resultando em um código confuso e difícil de manter:

// Sem classes — código desorganizado e trabalhoso:
String cliente1_nome = "Ana Silva";   double cliente1_peso = 62.5;
double cliente1_altura = 1.65;        int    cliente1_idade = 28;

String cliente2_nome = "Bruno Costa"; double cliente2_peso = 88.0;
double cliente2_altura = 1.82;        int    cliente2_idade = 35;

String cliente3_nome = "Carla Souza"; double cliente3_peso = 55.0;
double cliente3_altura = 1.93;        int    cliente3_idade = 22;
Com a classe Cliente, as gavetas nome, peso, altura e idade servem para todos os clientes: cliente1.peso, cliente2.peso, cliente3.peso… Você não precisa inventar novos nomes de variáveis. Basta criar um novo objeto com new e todas as gavetas já vêm prontas.

Isso torna o código muito mais organizado, legível e escalável: se amanhã você precisar guardar dados de 100 clientes, basta criar 100 objetos — não 400 variáveis avulsas.

Essa é uma das principais vantagens da Programação Orientada a Objetos (POO): agrupar dados relacionados dentro de uma classe e reutilizar essa estrutura quantas vezes forem necessárias, de forma limpa e organizada.

Resumo da Aula

✅ Uma classe é um molde que define atributos e comportamentos.

✅ Um objeto é criado a partir de uma classe usando a palavra new.

✅ Os atributos são acessados com o operador ponto: objeto.atributo.

✅ Podem existir vários objetos de uma mesma classe, cada um com seus próprios valores.

✅ Uma constante (final) tem seu valor fixo e não pode ser alterado depois da primeira atribuição.

🧪 Lista de Exercícios

1. O que é uma classe em Java?

2. Como se cria um objeto chamado carro1 a partir da classe Carro em Java?

3. No código abaixo, o que a linha cliente1.altura = 1.75; faz?

Cliente cliente1 = new Cliente();
cliente1.altura = 1.75;

4. No exemplo da aula, qual será a saída do programa se cliente3.altura = 2.05 e alturaMaxima = 1.90?

5. Qual é a diferença entre System.out.print() e System.out.println()?

6. Por que usamos final na declaração public static final double alturaMaxima = 1.90;?

🏆 Desafio

Crie uma classe chamada Produto com os atributos String nome, double preco e int quantidade. Em seguida, na classe principal, crie dois objetos dessa classe com dados de produtos diferentes e imprima no terminal o nome, o preço e a quantidade de cada produto. Use printf com duas casas decimais para o preço.

public class Produto {
    String nome;
    double preco;
    int quantidade;
}

public class DesafioProduto {
    public static void main(String[] args) {
        Produto p1 = new Produto();
        p1.nome       = "Café";
        p1.preco      = 12.90;
        p1.quantidade = 3;

        Produto p2 = new Produto();
        p2.nome       = "Açúcar";
        p2.preco      = 5.49;
        p2.quantidade = 2;

        System.out.printf("Produto: %s | Preço: R$ %.2f | Qtd: %d%n", p1.nome, p1.preco, p1.quantidade);
        System.out.printf("Produto: %s | Preço: R$ %.2f | Qtd: %d%n", p2.nome, p2.preco, p2.quantidade);
    }
}

Saída esperada:

Produto: Café | Preço: R$ 12,90 | Qtd: 3

Produto: Açúcar | Preço: R$ 5,49 | Qtd: 2

Exercícios de Aplicação AFF Education

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

1. Em Java, o que é uma classe?

2. Como se cria um objeto a partir da classe Carro?