Olá mestres!
Eu optei por implementar o método banda.ExibirDiscografia() dentro da classe banda e lá apresento todos os álbuns com foreach e logo após chamo a função ExibirMedia() também implementada na classe. Com isso minha classe de execução do menu fica responsável apenas pelo Menu e as funções específicas da classe ficam na classe. Isso não seria mais de acordo com os princípios da orientação a objetos?
public void ExibirDiscografia() { Console.WriteLine($"Discografia da banda {Nome}:\n"); foreach (Album album in albuns) { Console.WriteLine( $"Álbum: {album.Nome}\n" + $"Duração Total: {album.DuracaoTotal}\n"+ $"Ano: {album.Ano}\n"+ $"Nota do Album: {album.Media}\n"); } }
public void ExibirMedia() { Console.WriteLine($"Nota Média da Banda {Nome} é {Media}"); }
internal class MenuExibirDetalhes : Menu {
public override void Executar(Dictionary<string, Banda> bandasRegistradas)
{
base.Executar(bandasRegistradas);
ExibirTituloDaOpcao("Exibir detalhes da banda");
Console.Write("Digite o nome da banda que deseja conhecer melhor: ");
string nomeDaBanda = Console.ReadLine()!;
if (bandasRegistradas.ContainsKey(nomeDaBanda))
{
Banda banda = bandasRegistradas[nomeDaBanda];
banda.ExibirMedia();
banda.ExibirDiscografia();
Console.WriteLine("Digite uma tecla para votar ao menu principal");
Console.ReadKey();
}
else
{
Console.WriteLine($"\nA banda {nomeDaBanda} não foi encontrada!");
Console.WriteLine("Digite uma tecla para voltar ao menu principal");
Console.ReadKey();
}
}
}