1
resposta

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

Program.cs

using Cursos.Modelos;

List<Conteudo> conteudos = new List<Conteudo> {
    new Conteudo ("Generico"),
    new AulaGravada("POO na prática", 45),
    new AulaGravada("Herança e Polimorfismo Aplicado", 100),
    new MaterialComplementar("Resumo do módulo 2", 12),
    new MaterialComplementar("Resumo do módulo 3", 14)
};

Console.Clear();
conteudos.ForEach(c => c.ExibirInfo());

Conteudo.cs

namespace Cursos.Modelos;
class Conteudo {

    public string? Titulo { get; }

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

    public virtual void ExibirInfo() {
        Console.WriteLine("Exibição genérica\n");
    }
}

AulaGravada.cs

namespace Cursos.Modelos;
class AulaGravada : Conteudo {

    public int DuracaoMinutos {get;}

    public AulaGravada(string? titulo, int duracaoMinutos) : base(titulo) {
        DuracaoMinutos = duracaoMinutos;
    }

    public override void ExibirInfo() {
        Console.WriteLine($"Título: {Titulo}");
        Console.WriteLine($"Duração: {DuracaoMinutos} minutos.\n");
    }

}

MaterialComplementar.cs

namespace Cursos.Modelos;
class MaterialComplementar : Conteudo {

    public int Paginas {get;}

    public MaterialComplementar(string? titulo, int paginas) : base(titulo) {
        Paginas = paginas;
    }

    public override void ExibirInfo() {
        Console.WriteLine($"Título: {Titulo}");
        Console.WriteLine($"Páginas: {Paginas}\n");
    }

}
1 resposta

Oii Diego, tudo certo por aí?

Que show ver seu código aplicando os conceitos de herança e polimorfismo! Mandou muito bem na implementação.

A forma como você usou o virtual na classe Conteudo e o override nas classes AulaGravada e MaterialComplementar para personalizar o método ExibirInfo() ficou perfeita. É exatamente assim que a gente explora o poder do polimorfismo no C#!

Parabéns pela iniciativa e por colocar a mão na massa. Continue explorando e construindo coisas incríveis!

Abraço!

Bons estudos!

Sucesso

Imagem da comunidade