1
resposta

[Projeto] Faça como eu fiz: avaliação de conteúdos em uma plataforma

class Conteudo
{
    public Conteudo(string titulo)
    {
        Titulo = titulo;
    }

    public string Titulo { get; private set; }

    public virtual void ExibirInfo()
    {
        Console.WriteLine($"Titulo: {Titulo}");
    }
}

class AulaGravada : Conteudo
{
    public AulaGravada(string titulo, int duracao) : base(titulo)
    {
        Duracao = duracao;
    }

    public int Duracao { get; private set; }

    public override void ExibirInfo()
    {
        base.ExibirInfo();
        Console.WriteLine($"Duração: {Duracao}");
    }
}

class MaterialComplementar : Conteudo
{
    public MaterialComplementar(string titulo, int numeroPaginas) : base(titulo)
    {
        NumeroPaginas = numeroPaginas;
    }

    public int NumeroPaginas { get; private set; }

    public override void ExibirInfo()
    {
        base.ExibirInfo();
        Console.WriteLine($"Páginas: {NumeroPaginas}");
    }
}

List<Conteudo> conteudos = new List<Conteudo>
{
    new AulaGravada("POO na prática", 45),
    new MaterialComplementar("Resumo do módulo 2", 12)
};

foreach (var conteudo in conteudos)
{
    conteudo.ExibirInfo();
}
1 resposta

Oi, Eduardo! Como vai?

Agradeço por compartilhar.

Gostei da forma como você aplicou polimorfismo usando a classe base Conteudo e sobrescrevendo o método ExibirInfo() nas classes AulaGravada e MaterialComplementar. A lista do tipo List<Conteudo> ficou bem usada, porque permite tratar conteúdos diferentes de forma comum, chamando o método correto de cada objeto durante o foreach.

Dica: para deixar a saída mais organizada, você pode adicionar uma linha em branco ao final de cada exibição, usando Console.WriteLine(); dentro do foreach, depois de conteudo.ExibirInfo();. Assim, cada conteúdo aparece separado no console.

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