Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida com a resolução dada pelo instrutor e com o exercício 5

Estou utilizando o java 21 e na resolução dada pelo instrutor dos exercícios 3 e 4, na classe principal, tem uma parte que retorna erro, especificamente são:

Exercício 3

 Produto produto = new Produto("Celular", 2000.0);

Exercício 4

Aluno aluno1 = new Aluno("Lulu", 7.5, 8.0, 9.2);
Aluno aluno2 = new Aluno("Karina", 6.8, 7.3, 8.5);

O Java retorna exatamente esse erro 'Produto()' cannot be applied to '(java.lang.String, double)' e 'Aluno()' cannot be applied to '(java.lang.String, double, double, double)'.

Só funcionou com a declaração do setter de cada atributo nos dois exercícios.

Já no exercício 5 é pedido para utilizar o método getter, porem ele não é utilizado para a impressão, até na resolução do instrutor, então porque a solicitação de escrever algo no código que não será utilizado?

3 respostas

Olá, Rodrigo! Tudo bem?

Primeiramente, sobre os erros que você está encontrando nos exercícios 3 e 4. A mensagem de erro 'Produto()' cannot be applied to '(java.lang.String, double)' e 'Aluno()' cannot be applied to '(java.lang.String, double, double, double)' indica que você está tentando criar um objeto Produto e um objeto Aluno com construtores que não existem.

No Java, quando você cria uma classe, um construtor padrão (sem parâmetros) é criado automaticamente. No entanto, se você criar um construtor com parâmetros, o construtor padrão não é mais criado automaticamente. Parece que nas classes Produto e Aluno, você não criou construtores que aceitam os parâmetros que você está tentando passar.

Para resolver isso, você precisa criar os construtores na classe Produto e Aluno. Veja um exemplo para a classe Produto:

public class Produto {
    private String nome;
    private double preco;

    public Produto(String nome, double preco) {
        this.nome = nome;
        this.preco = preco;
    }

    // getters e setters aqui
}

E para a classe Aluno:

public class Aluno {
    private String nome;
    private double nota1;
    private double nota2;
    private double nota3;

    public Aluno(String nome, double nota1, double nota2, double nota3) {
        this.nome = nome;
        this.nota1 = nota1;
        this.nota2 = nota2;
        this.nota3 = nota3;
    }

    // getters e setters aqui
}

Sobre sua dúvida no exercício 5, o método getter é geralmente usado para obter o valor de um atributo privado fora da classe. Mesmo que o método getter não seja usado para imprimir os detalhes do livro, ele ainda é útil para outros propósitos, como acessar o valor do atributo em outra parte do código. Além disso, é uma boa prática de programação orientada a objetos fornecer métodos getter e setter para atributos privados.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Ola Armano, ajudou muito sim, obrigado pela atenção.

Com relação ao exercício 5 imaginei que fosse o que você afirmou, é que prefiro perguntar e ter certeza.

No caso dos exercícios 3 e 4, a minha dúvida ocorreu por conta da resolução dada pelo instrutor conter esse erro de código que você apontou, eu vi ao longo do curso outro código escrito como a sua explicação. Vou copiar e colar eles aqui ipsis litteris como está na página para você conferir e se possível ser passado para a Alura fazer essa correção.

Exercício 3

//Classe Produto
public class Produto {
    private String nome;
    private double preco;

    public String getNome() {
        return nome;
    }

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

    public double getPreco() {
        return preco;
    }

    public void setPreco(double preco) {
        this.preco = preco;
    }

    public void aplicarDesconto(double percentual) {
        double desconto = preco * (percentual / 100);
        preco -= desconto;
    }
}

//Classe Principal
public class Principal {
    public static void main(String[] args) {
        Produto produto = new Produto("Celular", 2000.0);

        System.out.println("Nome do Produto: " + produto.getNome());
        System.out.println("Preço: " + produto.getPreco());

        produto.aplicarDesconto(10);
        System.out.println("Novo Preço após Desconto: " + produto.getPreco());
    }
}

Exercício 4

//Classe Aluno
public class Aluno {
    private String nome;
    private double nota1;
    private double nota2;
    private double nota3;

    public String getNome() {
        return nome;
    }

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

    public double getNota1() {
        return nota1;
    }

    public void setNota1(double nota1) {
        this.nota1 = nota1;
    }

    public double getNota2() {
        return nota2;
    }

    public void setNota2(double nota2) {
        this.nota2 = nota2;
    }

    public double getNota3() {
        return nota3;
    }

    public void setNota3(double nota3) {
        this.nota3 = nota3;
    }

    public double calcularMedia() {
        return (nota1 + nota2 + nota3) / 3;
    }
}


//Classe Principal
public class Principal {
    public static void main(String[] args) {
        Aluno aluno1 = new Aluno("Lulu", 7.5, 8.0, 9.2);
        Aluno aluno2 = new Aluno("Karina", 6.8, 7.3, 8.5);

        System.out.println("Aluno 1:");
        System.out.println("Nome: " + aluno1.getNome());
        System.out.println("Nota 1: " + aluno1.getNota1());
        System.out.println("Nota 2: " + aluno1.getNota2());
        System.out.println("Nota 3: " + aluno1.getNota3());
        System.out.println("Média: " + aluno1.calcularMedia());
        System.out.println();

        System.out.println("Aluno 2:");
        System.out.println("Nome: " + aluno2.getNome());
        System.out.println("Nota 1: " + aluno2.getNota1());
        System.out.println("Nota 2: " + aluno2.getNota2());
        System.out.println("Nota 3: " + aluno2.getNota3());
        System.out.println("Média: " + aluno2.calcularMedia());
    }
}

Da para perceber na minha pergunta principal eu apenas tinha copiado e colado a parte específica.

Novamente, obrigado pela atenção e resolução.

solução!

Bom dia, Rodrigo!

Agora entendo perfeitamente o seu ponto, entrarei em contato com o pessoal responsável pelo material do curso, para ser aplicado os ajustes necessários.

Agradeço o seu feedback, ele é de grande importância para sempre entregarmos conteúdos com qualidade.

Abraço e boa sorte nos estudos!