Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Cadastro de produtos com validação

package br.com.encapsulamento.aplicandopoo.validacaoprodutos;

public class Produto {

    private String nome;
    private double preco;

    public Produto(String nome, double preco) {
        this.nome = nome;
        this.preco = 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 double validarPreco() {
        if (preco >= 0) {
            System.out.println("Valor valido");
            System.out.println("Produto: " + nome);
        } else {
            System.out.println("Valor invalido.");
            System.out.println("Produto: " + nome);
            preco = 0.00;
        }
        System.out.printf("Preço: ");
        return preco;
    }
}
package br.com.encapsulamento.aplicandopoo.validacaoprodutos;

public class Principal {
    public static void main(String[] args) {
        Produto produto = new Produto("Mouse", 59.90);

        System.out.println(produto.validarPreco());
    }
}
1 resposta

Oi, Antonio. Tudo bem com você?

Seu exercício já utiliza corretamente o encapsulamento ao manter nome e preco como atributos private e disponibilizar os métodos de acesso. A validação do preço também considera corretamente o cenário em que o valor é negativo e atribui 0.00 nesse caso. Um ponto importante é que, atualmente, a validação está concentrada no método validarPreco(), enquanto o setPreco() ainda permite que qualquer valor seja atribuído diretamente, inclusive um preço negativo. Como a proposta é impedir a atribuição de preços negativos, faz mais sentido colocar essa regra no próprio setPreco(), já que ele é o método responsável por atualizar o atributo.

Parabéns por compartilhar sua solução. Você já está praticando um conceito importante do encapsulamento ao controlar o acesso aos atributos da classe. Continue testando também os casos de entrada inválida, porque eles ajudam bastante a perceber se a regra realmente está protegendo o objeto. O fórum está à disposição para continuar acompanhando seus estudos.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!