1
resposta

Cadastrando veículos

public class Carro {
    public String modelo;
    public String placa;
    public int ano;

    public Carro(String modelo, String placa, int ano) {
        this.modelo = modelo;
        this.placa = placa;
        this.ano = ano;
    }

    public String getModelo() {
        return modelo;
    }

    public String getPlaca() {
        return placa;
    }

    public int getAno() {
        return ano;
    }
}
public class Exercicios {
    public static void main(String[] args) {
        Carro gol = new Carro("Gol", "ABC-1234", 2020);

        System.out.println("Veículo cadastrado:");
        System.out.println("Modelo: " + gol.getModelo());
        System.out.println("Placa: " + gol.getPlaca());
        System.out.println("Ano: " + gol.getAno());
    }
}
1 resposta

Olá, Bernardo. Como vai?

O seu código está funcionando muito bem e a estrutura do construtor e dos métodos de leitura (getters) está correta. No entanto, analisando o tema do capítulo atual, que é Encapsulamento, há um detalhe muito importante na sua classe Carro que vai contra esse conceito fundamental da Orientação a Objetos.

O problema no código atual

Na declaração dos seus atributos, você utilizou o modificador de acesso public:

public String modelo;
public String placa;
public int ano;

Quando definimos os atributos como public, qualquer outra classe do sistema pode acessar e modificar esses valores diretamente, sem passar por nenhuma validação ou controle da classe Carro.

Por exemplo, no seu método main, mesmo que você tenha criado os métodos get, qualquer pessoa poderia escrever a linha abaixo e alterar o ano do veículo para um valor inválido de forma direta:

gol.ano = -500; // Isso é permitido se o atributo for public!

Com isso, a existência dos métodos getModelo(), getPlaca() e getAno() perde o propósito, já que os dados não estão protegidos.

Como aplicar o Encapsulamento corretamente

O pilar do encapsulamento diz que os atributos de uma classe devem ser escondidos do mundo exterior (utilizando o modificador private) e o acesso a eles deve ser controlado por métodos públicos.

Veja como o seu código fica aplicando a boa prática de mercado:

public class Carro {
    // Atributos privados: ninguém de fora pode alterá-los diretamente
    private String modelo;
    private String placa;
    private int ano;

    public Carro(String modelo, String placa, int ano) {
        this.modelo = modelo;
        this.placa = placa;
        this.ano = ano;
    }

    // Métodos públicos (getters) que permitem a leitura segura dos dados
    public String getModelo() {
        return modelo;
    }

    public String getPlaca() {
        return placa;
    }

    public int getAno() {
        return ano;
    }
}

Dessa forma, a sua classe Exercicios continuará funcionando perfeitamente chamando o gol.getModelo(), mas os dados internos do objeto Carro estarão blindados e protegidos contra modificações acidentais ou maliciosas vindas de fora.

Fazer essa mudança simples de public para private nos atributos é o primeiro passo para escrever códigos Java muito mais seguros e robustos.

Espero que possa ter lhe ajudado!