1
resposta

Métodos Implementados na Classe

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

}

1 resposta

Oii Isaac, tudo bem?

Sua abordagem de implementar os métodos ExibirDiscografia() e ExibirMedia() na classe Banda segue bons princípios de design orientado a objetos, como encapsulamento e coesão. Ao organizar métodos que lidam com operações específicas da classe dentro da própria classe, você promove a coesão e evita vazamento de responsabilidades para outras classes.

A classe MenuExibirDetalhes então se concentra na lógica de interação do usuário e na chamada dos métodos específicos da classe Banda. Essa separação de responsabilidades torna o código mais modular e fácil de entender.

Muito obrigada por compartilhar com a gente.

Um abraço e bons estudos.