1
resposta

Faça como eu fiz: crie as opções restantes

MenuRegistrarBandas.cs

using ScreenSound.Modelos;
namespace ScreenSound.Menus;

internal class MenuRegistrarBanda : Menu {
    public void Executar(Dictionary<string, Banda> bandasRegistradas){
        Console.Clear();
        ExibirTituloDaOpcao("Registro das bandas");
        Console.Write("Digite o nome da banda que deseja registrar: ");
        string nomeDaBanda = Console.ReadLine()!;
        var banda = new Banda(nomeDaBanda);
        bandasRegistradas.Add(nomeDaBanda, banda);
        Console.WriteLine($"A banda {nomeDaBanda} foi registrada com sucesso!");
        Console.ReadKey();
        Console.Clear();
    }
}

MenuRegistrarAlbum.cs

using ScreenSound.Modelos;
namespace ScreenSound.Menus;

internal class MenuRegistrarAlbum : Menu {
    public void Executar(Dictionary<string, Banda> bandasRegistradas) {
        Console.Clear();
        ExibirTituloDaOpcao("Registro de álbuns");
        Console.Write("Digite a banda cujo álbum deseja registrar: ");
        string nomeDaBanda = Console.ReadLine()!;
        if ((bandasRegistradas.ContainsKey(nomeDaBanda))) {
            Console.Write("Agora digite o título do álbum: ");
            string tituloAlbum = Console.ReadLine()!;
            var banda = bandasRegistradas[nomeDaBanda];
            banda.AdicionarAlbum(new Album(tituloAlbum));
            Console.WriteLine($"O álbum {tituloAlbum} de {nomeDaBanda} foi registrado com sucesso!");
            Console.ReadKey();
            Console.Clear();
        }
        else {
            Console.WriteLine($"A banda {nomeDaBanda} não existe.");
            Console.ReadKey();
            Console.Clear();
        }
    }
}

MenuMostrarBandas.cs

using ScreenSound.Modelos;
namespace ScreenSound.Menus;

internal class MenuMostrarBandas : Menu {
    public void Executar(Dictionary<string, Banda> bandasRegistradas) {
        Console.Clear();
        ExibirTituloDaOpcao("Exibindo todas as bandas registradas na nossa aplicação");

        foreach (string banda in bandasRegistradas.Keys) {
            Console.WriteLine($"Banda: {banda}");
        }

        Console.WriteLine("\nDigite uma tecla para voltar ao menu principal");
        Console.ReadKey();
        Console.Clear();
    }
}

MenuSair.cs

using ScreenSound.Modelos;
namespace ScreenSound.Menus;

internal class MenuSair : Menu {
    public void Executar() {
        Console.WriteLine("Sistema encerrado.");
    }
}
1 resposta

Olá, Diego, como vai?

O exercício demonstra um bom domínio sobre herança e a organização de classes dentro do namespace específico dos menus. A aplicação da herança entre as classes descendentes e a classe ancestral Menu permite que o código compartilhe comportamentos de forma eficiente, mantendo a responsabilidade de cada opção bem isolada. É excelente notar como você utilizou corretamente a estrutura das classes para organizar a lógica de registro e exibição de dados.

Notei apenas uma pequena inconsistência na classe MenuSair. Para que o polimorfismo funcione corretamente e o método possa ser chamado de forma padronizada no arquivo principal, o método Executar deve receber o dicionário de bandas como parâmetro, mesmo que ele não seja utilizado no corpo do método.

Parabéns pela dedicação em completar todas as classes e continue compartilhando seu progresso.

O fórum está a disposição.

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