0
respostas

[Projeto] Desafio Podcast

Segue minha solução para o desafio, ficou um pouco diferente da resolução dos instrutores, mas creio que ficou tão funcional quanto.

classe Episodio

class Episodio
{
    public Episodio(int numero, string titulo, int duracao)
    {
        Numero = numero;
        Titulo = titulo;
        Duracao = duracao;
    }

    private List<string> convidados = new();
    public int Numero { get; }
    public string Titulo { get; }
    public int Duracao { get; }
    public string Resumo => $"{Numero} - {Titulo} ({Duracao}min)\n\t{string.Join(", ",convidados)}\n";

    public void AddConvidado(string convidado)
    {
        convidados.Add(convidado);
    }
}

Classe Podcast

class Podcast
{
    public Podcast(string nome, string host)
    {
        Nome = nome;
        Host = host;
        Episodios = [];
    }

    public string Nome { get; } 
    public string Host { get; }
    public List<Episodio> Episodios { get; }

    public void AddEpisodio(int num, string nome, int duracao)
    {
        Episodio novoEpisodio = new Episodio(num, nome, duracao);
        Episodios.Add(novoEpisodio);

        Console.WriteLine($"Episódio {num} - {nome} adicionado ao podcast");
        //Console.WriteLine("\n");
    }

    public void AddConvidados(int numEpisodio, string convidadosStr)
    {
        Episodio episodio = Episodios.Find(e => e.Numero == numEpisodio);

        if (episodio == null)
        {
            Console.WriteLine($"{numEpisodio} indisponível no podcast {Nome}");
        }
        else
        {
            List<string> convidados = convidadosStr.Split(',').Select(x => x.Trim()).ToList();
            
            foreach (string convidado in convidados)
            {
                episodio.AddConvidado(convidado);
            }
        }
    }

    public void ExibirDetalhes()
    {
        Console.WriteLine($"\n\nPodcast {Nome}, apresentado por {Host}\n");
        Episodios.ForEach(episodio => Console.WriteLine(episodio.Resumo));
        Console.WriteLine("\n");
    }
}

Programa

Podcast nerdcast = new Podcast("Nerdcast","Jovem Nerd & Azaghal");

nerdcast.AddEpisodio(991, "Quarteto Fantástico: família, o universo e tudo mais", 127);
nerdcast.AddConvidados(991,"Carlos Voltor, Katiucha Barcelos, Thiago Tomariz");

nerdcast.AddEpisodio(990, "Ozzy Osbourne: o histórico príncipe das trevas", 107);
nerdcast.AddConvidados(990, "Filipe Figueiredo, Govis, Icles Rodrigues");

nerdcast.AddEpisodio(989, "Superman: James Gunn salvando fãs, esquilos e o DCU", 120);
nerdcast.AddConvidados(989, "Carlos Voltor, Katiucha Barcelos, Leonel Caldela, Marcelo Bassoli");

nerdcast.AddEpisodio(988, "Filmes de Terror Bizarros para Apreciadores Peculiares", 108);
nerdcast.AddConvidados(988, "Carlos Voltor, Ian SBF, Mau Faccio");

nerdcast.AddEpisodio(987, "Profissão: Editor de Gibis e a treta JN x Pipoca e Nanquim", 123);
nerdcast.AddConvidados(987, "Guilherme Briggs, Guga Mafra");

nerdcast.AddEpisodio(986, "Remake do reboot, remake ou continuação de novo?", 97);
nerdcast.AddConvidados(986, "Tucano, Marcelo Bassoli, Katiucha Barcelos");

nerdcast.AddEpisodio(985, "The Studio: The Office para amantes do cinema", 108);
nerdcast.AddConvidados(985, "Portuguesa, Ian SBF, Max Valarezo, Fabiula Nascimento");

nerdcast.AddEpisodio(984, "Especial Dia dos Namorados 2025", 145);
nerdcast.AddConvidados(984, "Sra. Jovem Nerd, Portuguesa, Marcelinho, Sr. K");

nerdcast.AddEpisodio(983, "O pensamento crítico e a força do Pirulla", 101);
nerdcast.AddConvidados(983, "Pirulla");

nerdcast.AddEpisodio(982, "The Last of Us 2: Queremos tentar perdoar?", 152);
nerdcast.AddConvidados(982, "Carlos Voltor, Katiucha Barcelos, Eduardo Spohr");

nerdcast.ExibirDetalhes();