Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Classe Gênero

Agora é sua vez! Crie uma classe chamada Genero, que armazena o nome do gênero musical, e crie um relacionamento desta nova classe em nossa aplicação.

class Genero
{
    public string Nome { get; set; }
}

class Musica
{
    public string Nome { get; set; }
    public string Artista { get; set; }
    public int Duracao { get; set; }
    public bool Disponivel { get; set; }
    public Genero Genero { get; set; }
    
    
    public string DescricaoResumida 
    {
        get
        {
            return $"A música {Nome} pertence à banda {Artista}";
        }
    }
    public void ExibirFichaTecnica()
    {
        Console.WriteLine($"Música: {Nome}");
        Console.WriteLine($"Artista: {Artista}");
        Console.WriteLine($"Duração: {Duracao}");
        if (Disponivel)
        {
            Console.WriteLine("Disponível no plano.");
        }
        else
        {
            Console.WriteLine("Música não disponível no plano atual.\nAdquira o plano Plus+");
        }
    }

    public void ExibirMusicaEArtista()
    {
        Console.WriteLine($"Nome/Artista: {Nome}/{Artista}");
    }
    
    class Album
{
    private List<Musica> musicas = new List<Musica>();
    public string Nome { get; set; }
    public int DuracaoTotal => musicas.Sum(m => m.Duracao);

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

    public void ExibirMusicasDoAlbum()
    {
        Console.WriteLine($"Músicas do Álbum {Nome}:\n");
        foreach (var musica in musicas)
        {
            Console.WriteLine($"Música: {musica.Nome}");
            Console.WriteLine($"Gênero: {musica.Genero.Nome}");
            Console.WriteLine($"Duração: {musica.Duracao}s\n");
        }
        Console.WriteLine($"\nPara ouvir este álbum inteiro você precisa de {DuracaoTotal} segundos.");
        
    }
}

O Programa ficou assim:

Album anEveningWithSilkSonic = new Album();
anEveningWithSilkSonic.Nome = "An Evening With Silk Sonic";

Musica musica1 = new Musica();
musica1.Nome = "Silk Sonic Intro";
musica1.Duracao = 63;
musica1.Genero = new Genero();
musica1.Genero.Nome = "Pop";

Musica musica2 = new Musica();
musica2.Nome = "Leave The Door Open";
musica2.Duracao = 242;
musica2.Genero = new Genero();
musica2.Genero.Nome = "Balada";

anEveningWithSilkSonic.AdicionarMusica(musica1);
anEveningWithSilkSonic.AdicionarMusica(musica2);

anEveningWithSilkSonic.ExibirMusicasDoAlbum();
1 resposta
solução!

Olá, Fábio. Tudo bem?

Muito obrigado por compartilhar o seu código aqui com a gente. Parabéns pelo trabalho. Continue com essa dedicação.

Ótimo como você criou o relacionamento entre as classes Genero e Musica, deixando a estrutura mais organizada e próxima do mundo real. Isso enriquece bastante o projeto.

Uma dica interessante para o futuro é criar o objeto já com valores usando inicialização de propriedades, deixando o código ainda mais limpo. Veja este exemplo:


Musica musica = new Musica {
    Nome = "Nova Música",
    Duracao = 200,
    Genero = new Genero { Nome = "Rock" }
};

Esse código cria o objeto Musica já atribuindo valores, de forma mais direta.

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