1
resposta

[Projeto] Classe Produto com exception e conversão de moeda

Na minha proposta da classe Produto, trabalhei com exceptions caso valor ou estoque sejam menor que zero, e adicionei a função DoubleToCurrency para converter o valor de double para uma leitura mais amigável de moeda.

Produto.cs

using System.Globalization;

public class Produto
{
    private double _preco;
    private int _estoque;
    private string Nome { get; }
    private string Marca { get; }

    private double Preco
    {
        get => _preco;
        set
        {
            if (value < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(Preco), $"O preço não pode ser menor do que zero.");
            }
            
            _preco = value;
        }
    }
    private int Estoque {
        get => _estoque;
        set
        {
            if (value < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(Estoque), $"O estoque não pode ser menor do que zero.");
            }
            
            _estoque = value;
        }
    }
    public string Detalhes => $"\nProduto: {Nome}" +
                              $"\nMarca: {Marca}" +
                              $"\nPreço: {DoubleToCurrency(Preco)}" +
                              $"\nEstoque: {Estoque}";
    
    public Produto(string nome, string marca, double preco, int estoque)
    {
        Nome = nome;
        Marca = marca;
        Preco = preco;
        Estoque = estoque;
    }

    private static string DoubleToCurrency(double value, string culture = "pt-BR")
    {
        return value.ToString("C", new CultureInfo(culture));
    }
}

Program.cs

var produto = new Produto(
    "Robô Aspirador Kabum! Smart 900 - 127v, Branco- KBSF011",
    "KaBuM!",
    1999.90,
    42
);

Console.WriteLine(produto.Detalhes);
1 resposta

Olá Rafael, tudo bom?

Você fez um ótimo trabalho ao implementar a classe Produto com validações para garantir que o preço e o estoque sejam valores positivos. Além disso, a função DoubleToCurrency é uma adição muito útil para apresentar o preço de forma amigável.

  1. Validação de Dados: Você já está validando o preço e o estoque para garantir que sejam valores positivos, o que é excelente. Isso evita erros futuros ao manipular esses dados.

  2. Conversão de Moeda: Sua função DoubleToCurrency está bem implementada. Ela utiliza a cultura "pt-BR" por padrão, o que é ótimo para formatação de moeda em real. Você pode testar com diferentes valores para garantir que a formatação está correta.

  3. Propriedade Detalhes: A propriedade Detalhes está bem estruturada e fornece uma visão clara das informações do produto. Isso é muito útil para a equipe de vendas.

  4. Encapsulamento: Você usou propriedades privadas para Preco e Estoque, o que é uma boa prática para proteger os dados de alterações externas indesejadas.

  5. Exemplo Prático: No seu Program.cs, você criou uma instância da classe Produto e exibiu os detalhes. Isso é uma ótima maneira de testar e verificar se tudo está funcionando conforme esperado.

Seu código está bem organizado e atende aos requisitos do desafio. Continue praticando e experimentando com diferentes cenários para fortalecer ainda mais seu entendimento de orientação a objetos em C#.

Espero ter ajudado e bons estudos!