Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] Desafio: hora da prática

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

    private List<Episodio> listaDeEpisodios = [];

    public string Host { get; }
    public string Nome { get; }
    public int TotalEpisodios => listaDeEpisodios.Count;

    public void AdicionarEpisodios(Episodio novoEpisodio)
    {
        listaDeEpisodios.Add(novoEpisodio);
    }

    public void ExibirDetalhes()
    {
        Console.WriteLine($"Nome do Podcast: {Nome} - Host: {Host}");

        foreach (Episodio episodio in listaDeEpisodios)
        {
            Console.WriteLine($"Episodio número {episodio.Ordem}");
            Console.WriteLine($"Título: {episodio.Titulo}");
            Console.WriteLine($"Nome: {episodio.Nome}");
            Console.WriteLine($"Duração: {episodio.Duracao}\n");
        }
        Console.WriteLine($"Total de episódios: {TotalEpisodios}");
    }
}
using System.Threading.Channels;

class Episodio
{
    public Episodio(string nome, string titulo, int ordem)
    {
        Nome = nome;
        Titulo = titulo;
        Ordem = ordem;
    }

    private List<string> listaDeConvidados = [];
    public string Nome {  get; }
    public string Titulo { get; }
    public int Ordem {  get; }
    public int Duracao { get; set; }
    public string Resumo => OrganizarResumo();
    
    public void AdicionarConvidados (string convidado)
    {
        listaDeConvidados.Add(convidado);
    }

    public string OrganizarResumo ()
    {
        string resumo = $"Episódio: {Ordem}\n Título: {Titulo}\n Duração: {Duracao}\n Convidados: " + string.Join(", ", listaDeConvidados);
        return resumo;
    }
}
1 resposta

Olá, José! Como vai?

Parabéns pela entrega do projeto neste desafio de prática!

A forma como você organizou as classes Podcast e Episodio demonstra uma boa compreensão de orientação a objetos em C#. Percebe-se que você separou bem as responsabilidades: a classe Podcast cuida do Host, do Nome e da listaDeEpisodios, enquanto a classe Episodio gerencia o Titulo, a Ordem, a Duracao e a listaDeConvidados. Esse cuidado na separação é um sinal muito positivo no seu aprendizado.

Também ficou interessante o uso da propriedade calculada TotalEpisodios e do método OrganizarResumo(), que retorna um resumo formatado com os dados do episódio. O Console.WriteLine sendo utilizado dentro de ExibirDetalhes() deixa a saída bem legível, o que facilita muito a leitura do código.

Uma dica valiosa para evoluir ainda mais é considerar o uso do método ToString() para definir como um objeto void de exibição pode ser substituído por uma representação mais automática. Veja este exemplo:


public override string ToString()
{
    return $"Titulo: {Titulo}";
}

Com esse string retornado pelo ToString(), ao exibir o objeto em um Console.WriteLine, o título aparece de forma automática, tornando o código mais limpo e reutilizável em diferentes situações, sem precisar chamar métodos específicos de exibição.

Continue explorando os recursos das classes public em C# e praticando com novos desafios. Cada projeto concluído é um passo importante na sua jornada como desenvolvedor.

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

Você chegou a testar o método OrganizarResumo() com múltiplos convidados na listaDeConvidados para verificar como o string.Join formata a saída? Qual foi o resultado que apareceu no console?

Conteúdos relacionados