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

Resposta - Exercício 3

Exercício 3:

public class Stock
{
    private List<Product> _products = new List<Product>();

    public void AddProduct(Product product)
    {
        _products.Add(product);
    }

    public void DisplayProducts()
    {
        Console.WriteLine("Products in stock:");
        foreach (Product product in _products)
        {
            Console.WriteLine(product.DetailedDescription);
        }
    }
}
public class Product
{
    private double _price;
    private int _stock;
    public string Name { get; set; }
    public string Brand { get; set; }
    public double Price
    {
        get => _price;
        set
        {
            if (value < 0)
                throw new ArgumentOutOfRangeException(nameof(Price), "Price cannot be negative.");
            _price = value;
        }
    }
    public int Stock
    {
        get => _stock;
        set
        {
            if (value < 0)
                throw new ArgumentOutOfRangeException(nameof(Stock), "Stock cannot be negative.");
            _stock = value;
        }
    }
    public string DetailedDescription => $"Product: {this.Name} - Brand: {this.Brand} - Stock: {this.Stock} - Price: {this.Price:F2}";

    public Product(string name, string brand, double price, int stock)
    {
        Name = name;
        Brand = brand;
        Price = price;
        Stock = stock;
    }
}
Product candy = new Product("Candy", "Halls", 4.99, 40);
Product cookie = new Product("Cookie", "Oreo", 10, 60);
Product rice = new Product("Rice", "Camil", 30, 20);

Stock stock = new Stock();
stock.AddProduct(candy);
stock.AddProduct(cookie);
stock.AddProduct(rice);
stock.DisplayProducts();
2 respostas
solução!

Oi, Carlos! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Seu código ficou organizado e a propriedade DetailedDescription foi uma forma clara de exibir os dados do produto. Também foi interessante ver o tratamento para valores negativos em Price e Stock, mostrando cuidado com validações.

Uma dica interessante para o futuro é usar StringBuilder quando for montar textos maiores, pois ele reduz o custo de processamento em concatenações. Veja este exemplo:


using System.Text;

StringBuilder sb = new StringBuilder();
sb.Append("Produto: ");
sb.Append("Arroz");
Console.WriteLine(sb.ToString());

StringBuilder acumula texto sem criar varias instancias na memória, diferente de concatenações simples.

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

Obrigado pelo suporte, Rafaela. Vou considerar usar o método StringBuilder quando for formatar textos grandes.