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

Controle de Estoque

Acredito que posso otimizar mais o código mas de ínicio cumpri o próposito da atividade, e entendi a lógica do exercício...

class Produto
{
    public Produto(string nome , int quantidadeinicial)
    {
        this.nome = nome;
        this.quantidadeEstoque = quantidadeinicial;
        
    }

    private int quantidadeEstoque { get; set;}
    public int quantidadeinicial { get; set;}
    public string nome { get; set;}

    public void Retirar(int quantidade)
    {
        if(quantidade <= quantidadeEstoque)
        {
            quantidadeEstoque -= quantidade;
            Console.WriteLine($"Retirada de {quantidade} realizada com sucesso");
        }
        else
        {
            Console.WriteLine($"Estoque insuficiente para retirada de {quantidade} unidades");
        }
    }

    public void ExibirEstoque()
    {
        Console.WriteLine($"Produto: {nome}\n" +
                          $"Estoque:{quantidadeEstoque}");
    }
}

Na entrada de dados fiz uma leve melhoria para melhor exibição de dados, achei que de ínicio ficou bacana, me diverti bastante testando e pesquisando...

Produto produto = new Produto("Caneta Azul", 20);

produto.Retirar(5);
Thread.Sleep(2000);
Console.Clear();

produto.ExibirEstoque();
Thread.Sleep(2000);
Console.Clear();

produto.Retirar(30);
Thread.Sleep(2000);
Console.Clear();
Environment.Exit(0);
2 respostas
solução!

Oi, Davy! Como vai?

Agradeço por compartilhar.

Eu gostei de como você estruturou a classe Produto e aplicou bem os métodos pra controle de estoque, principalmente a validação na retirada e a organização da exibição. Sua iniciativa de melhorar a experiência com Thread.Sleep e Console.Clear mostra atenção ao fluxo do usuário. Um ponto interessante é que a propriedade quantidadeinicial não tá sendo usada, então você pode removê-la pra deixar a classe mais enxuta.

Uma dica interessante para o futuro é encapsular melhor o estoque usando apenas um campo privado e expor métodos controlados.


class Produto
{
    private int estoque;

    public Produto(string nome, int quantidadeInicial)
    {
        this.nome = nome;
        this.estoque = quantidadeInicial;
    }

    public string nome { get; set; }

    public int ObterEstoque()
    {
        return estoque;
    }
}

Nesse código, estoque fica protegido e só pode ser acessado por métodos, evitando alterações indevidas.

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

Boa tarde, Lorena!

Muito obrigado pelo feedback e pelas sugestões de refatoração. Vai me ajudar bastante a melhorar o código e deixá-lo mais seguro.

Vou aplicar essas melhorias.

Agradeço pelas orientações!