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

[Projeto] Desafio resolvido

package com.github.aldenyjr.exercicios.cadastro_produtos_validacao;

public class Produto {

    private String nome;
    private double preco;

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

    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public double getPreco() {
        return preco;
    }

    public void setPreco(double preco) {
        if (preco < 0) {
            System.out.println("Preço inválido! Valor negativo não permitido. Definindo preço como R$ 0.00");
            this.preco = 0.00;
        } else {
            this.preco = preco;
        }
    }

    public void exibirProduto() {
        System.out.printf("Produto: %s | Preço: R$ %.2f%n", nome, preco);
    }
}
package com.github.aldenyjr.exercicios.cadastro_produtos_validacao;

public class CadastroValidacao {
    public static void main(String[] args) {
        Produto camisa = new Produto("Camisa", 159.90);
        camisa.exibirProduto();

        Produto mouse = new Produto("Mouse", -59.90);
        mouse.exibirProduto();

        camisa.setPreco(-50);
        camisa.exibirProduto();
    }
}

Resultado:

Produto: Camisa | Preço: R$ 159,90
Preço inválido! Valor negativo não permitido. Definindo preço como R$ 0.00
Produto: Mouse | Preço: R$ 0,00
Preço inválido! Valor negativo não permitido. Definindo preço como R$ 0.00
Produto: Camisa | Preço: R$ 0,00
2 respostas

Oi, Aldeny! Como vai?

Agradeço por compartilhar.

O seu uso de encapsulamento ficou muito bem aplicado, principalmente ao validar o preço dentro do método setPreco. Isso garante que o objeto sempre esteja em um estado válido, o que é um ponto importante em orientação a objetos. Também foi interessante ver que você reaproveitou essa validação tanto no construtor quanto ao atualizar o preço depois.

Você pode usar o método Math.max para simplificar validações como essa.


double preco = -10;
preco = Math.max(preco, 0);
System.out.println(preco);

Esse código garante que o valor nunca será menor que zero, evitando condicionais e deixando o código mais enxuto.

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!
solução!

Obrigado!