1
resposta

[Projeto] Faça como eu fiz: contador de objetos

namespace ScreenSound.Modelos;

internal class Album
{
    internal static int contador = 0;
    public Album(string nome)
    {
        Nome = nome;
        contador++;
    }
    private List<Musica> musicas = new List<Musica>();
    public string Nome { get; }


    public int DuracaoTotal => musicas.Sum(x => x.Duracao);


    public void AdicionarMusica(Musica musica)
    {
        musicas.Add(musica);
    }

    public void ExibirMusicasDoAlbum()
    {
        Console.WriteLine($"Lista de músicas do álbum {Nome}:\n");
        foreach (var musica in musicas)
        {
            Console.WriteLine($"Música: {musica.Nome}");
        }
        Console.WriteLine($"Para ouvir este álbum inteiro você precisa de {DuracaoTotal}");
    }
}
1 resposta

Oi, Eduardo! Como vai?

Agradeço por compartilhar.

Sua implementação ficou bem organizada, e o uso do atributo static no contador faz sentido para contar quantos objetos da classe Album foram criados. Isso mostra bem a diferença entre um dado que pertence ao objeto, como Nome, e um dado que pertence à classe, como o contador.

Dica: para deixar o contador mais protegido, você pode evitar que ele seja alterado diretamente fora da classe, usando uma propriedade com private set, assim: public static int Contador { get; private set; }. Depois, no construtor, basta fazer Contador++;. C

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