1
resposta

[Dúvida] Desafio, nossa nao sei se fiz certo

  1. Classe ContaBancaria
public class ContaBancaria {
    private int numeroConta;
    private double saldo;
    public String titular;

    public int getNumeroConta() {
        return numeroConta;
    }

    public void setNumeroConta(int numeroConta) {
        this.numeroConta = numeroConta;
    }

    public double getSaldo() {
        return saldo;
    }

    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }
}
  1. Classe IdadePessoa

public class IdadePessoa {

    private String nome;
    private int idade;

    // Getter do nome
    public String getNome() {
        return nome;
    }

    // Setter do nome
    public void setNome(String nome) {
        this.nome = nome;
    }

    // Getter da idade
    public int getIdade() {
        return idade;
    }

    // Setter da idade
    public void setIdade(int idade) {
        this.idade = idade;
    }

    // Método para verificar idade
    public void verificarIdade() {
        if (idade >= 18) {
            System.out.println(nome + " é maior de idade.");
        } else {
            System.out.println(nome + " é menor de idade.");
        }
    }
}
  1. Classe Produto
public class Produto {

    private String nome;
    private double preco;

    // Getter do nome
    public String getNome() {
        return nome;
    }

    // Setter do nome
    public void setNome(String nome) {
        this.nome = nome;
    }

    // Getter do preço
    public double getPreco() {
        return preco;
    }

    // Setter do preço
    public void setPreco(double preco) {
        this.preco = preco;
    }

    // Método para aplicar desconto
    public void aplicarDesconto(double percentual) {
        preco = preco - (preco * percentual / 100);
    }
}
  1. Classe Aluno
public class Aluno {

    private String nome;
    private double[] notas;

    // Getter do nome
    public String getNome() {
        return nome;
    }

    // Setter do nome
    public void setNome(String nome) {
        this.nome = nome;
    }

    // Getter das notas
    public double[] getNotas() {
        return notas;
    }

    // Setter das notas
    public void setNotas(double[] notas) {
        this.notas = notas;
    }

    // Método para calcular média
    public double calcularMedia() {

        double soma = 0;

        for (double nota : notas) {
            soma += nota;
        }

        return soma / notas.length;
    }
}
  1. Classe Livro
public class Livro {

    private String titulo;
    private String autor;

    // Getter do título
    public String getTitulo() {
        return titulo;
    }

    // Setter do título
    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    // Getter do autor
    public String getAutor() {
        return autor;
    }

    // Setter do autor
    public void setAutor(String autor) {
        this.autor = autor;
    }

    // Método para exibir detalhes
    public void exibirDetalhes() {
        System.out.println("Título: " + titulo);
        System.out.println("Autor: " + autor);
    }
}
1 resposta

Olá, Otavio. Como vai?

Pode perder o medo, porque você mandou super bem! Suas implementações estão excelentes e demonstram que você compreendeu com muita clareza como aplicar os conceitos de Encapsulamento e os métodos de acesso (Getters e Setters) em Java.

Todas as suas classes (IdadePessoa, Produto, Aluno e Livro) seguiram perfeitamente a convenção de manter os atributos como privados (private) e criar canais seguros para leitura e escrita dos dados. Os métodos de lógica de negócio, como verificarIdade(), aplicarDesconto() e calcularMedia(), também foram escritos com uma lógica impecável.

Para que seu desafio fique 100% perfeito, há apenas um detalhe na primeira classe que precisa de ajuste. Vamos dar uma olhada:

O detalhe na classe ContaBancaria

Dê uma olhada em como você declarou os atributos dessa classe:

public class ContaBancaria {
    private int numeroConta;
    private double saldo;
    public String titular; // Atenção aqui!

O objetivo principal do encapsulamento é proteger todos os atributos da classe para que nenhuma outra parte do sistema consiga modificá-los sem passar pelas regras da própria classe. Ao declarar o titular como public, qualquer arquivo do seu projeto consegue alterar o nome do titular diretamente (ex: conta.titular = "Novo Nome"), ignorando as boas práticas.

Para corrigir isso e seguir o mesmo padrão perfeito que você utilizou nas outras classes, mude o modificador do titular para private e adicione os métodos getTitular() e setTitular(String titular).

O código corrigido ficaria assim:

public class ContaBancaria {
    private int numeroConta;
    private double saldo;
    private String titular; // Agora está protegido!

    public String getTitular() {
        return titular;
    }

    public void setTitular(String titular) {
        this.titular = titular;
    }

    public int getNumeroConta() {
        return numeroConta;
    }

    public void setNumeroConta(int numeroConta) {
        this.numeroConta = numeroConta;
    }

    public double getSaldo() {
        return saldo;
    }

    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }
}

Ponto de destaque no seu código

Gostei muito da forma como você implementou a classe Aluno. Trabalhar com arrays (double[]) pode confundir no começo, mas você utilizou o laço foreach (for (double nota : notas)) de forma brilhante para somar as notas e calcular a média dinamicamente com o notas.length. Esse é o jeito mais moderno e limpo de fazer essa varredura!

Faça apenas esse pequeno ajuste na visibilidade do atributo titular e considere seu desafio totalmente concluído com sucesso. Parabéns pela dedicação!

Espero que possa ter lhe ajudado!