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();