Quando eu executo o ExibirFichaTecnica() da musica, aparece "Artista: Banda" mas eu inseri o nome de banda como "Resgate". E ao executar o ExibirDiscografia() da Banda está aparecendo duração de 0 segundos sendo que eu ja havia inserido duas músicas no Album. O que eu fiz me errado? Alguém me ajuda por favor.
BANDA.CS
class Banda
{
private List<Album> albums = new List<Album>();
public string Nome { get; set; }
public void AdicionarAlbum(Album album)
{
albums.Add(album);
}
public void ExibirDiscografia()
{
Console.WriteLine($"Discografia da banda {Nome}");
foreach (Album album in albums)
{
Console.WriteLine($"Album: {album.Nome} ({album.DuracaoTotal}s)");
}
}
}
MUSICA.CS
class Musica
{
public Musica(Banda artista)
{
Artista = artista;
}
public string Nome { get; set; }
public Banda Artista { get; }
public int Duracao { get; set; }
public bool Disponivel { get; set; }
public string DescricaoResumida =>
$" A música {Nome} pertence a banda {Artista}";
public Genero Genero { get; set; }
public void ExibirFichaTecnica()
{
Console.WriteLine($"Nome: {Nome}");
Console.WriteLine($"Artista: {Artista}");
Console.WriteLine($"Duracao: {Duracao}");
Console.WriteLine($"Gênero: {Genero.Nome}");
if (Disponivel)
{
Console.WriteLine("Música disponível no plano");
} else
{
Console.WriteLine("Adquira o plano Plus+ para ouvir esta música");
}
}
public void ExibirNomeArtista()
{
Console.WriteLine($"Nome do artista da musica {Nome} é {Artista}");
}
}
ALBUM.CS
class Album
{
//atributo (CamelCase)
private List<Musica> musicas = new List<Musica>();
//propriedade (PascalCase)
public string Nome { get; set; }
//---------------------------------Somar(para cada musica(m) pegar a duracao.)
public int DuracaoTotal => musicas.Sum(m => m.Duracao);
//método - comportamento
public void AdicionarMusica(Musica musica)
{
musicas.Add(musica);
}
public void ExibirMusicasDoAlbum()
{
Console.WriteLine($"Lista de músicas do album {Nome}\n");
foreach (var musica in musicas)
{
Console.WriteLine($"Música: { musica.Nome}");
}
Console.WriteLine($"\nPara ouvir este album inteiro você precisa de {DuracaoTotal} segundos");
}
}
PROGRAM.CS
//cria album novo (instancia album)
Album albumResgate = new Album();
albumResgate.Nome = "Ainda não é o ultimo";
//cria banda
Banda banda1 = new Banda();
banda1.Nome = "Resgate";
banda1.AdicionarAlbum(albumResgate);
banda1.ExibirDiscografia();
//cria musicas
Musica musica1 = new Musica(banda1);
musica1.Nome = "Transformers";
musica1.Duracao = 237;
musica1.Genero = new Genero();
musica1.Genero.Nome = "Rock";
musica1.ExibirFichaTecnica();
Musica musica2 = new Musica(banda1);
musica2.Nome = "O Vesúvio";
musica2.Duracao = 355;
//musica2.Genero.Nome = "Rock";
//musica2.Disponivel = true;
//adiciona musicas ao album
albumResgate.AdicionarMusica(musica1);
albumResgate.AdicionarMusica(musica2);
albumResgate.ExibirMusicasDoAlbum();