1
resposta

[Projeto] Faça como eu fiz: exibindo mídias

class Midia
{
    public Midia(string nome)
    {
        Nome = nome;
    }

    public string Nome { get; private set; }

    public virtual void ExibirDetalhes()
    {
        Console.Write($"Nome: {Nome}");
    }
}

class Imagem : Midia
{
    public Imagem(string nome, string resolucao) : base(nome)
    {
        Resolucao = resolucao;
    }

    public string Resolucao { get; private set; }

    public override void ExibirDetalhes()
    {
        Console.WriteLine($"Imagem: {Nome} - Resolucao: {Resolucao}");
    }
}

class Video : Midia
{
    public Video(string nome, int duracao) : base(nome)
    {
        Duracao = duracao;
    }

    public int Duracao { get; private set; }

    public override void ExibirDetalhes()
    {
        Console.WriteLine($"Video: {Nome} - Duração: {Duracao} minutos");
    }
}

List<Midia> midias = new List<Midia>
{
    new Imagem("paisagem.jpg", "1920x1080"),
    new Video("filme.mp4", 120)
};

foreach (var midia in midias)
{
    midia.ExibirDetalhes();
}
1 resposta

Oi, Eduardo! Como vai?

Agradeço por compartilhar.

Seu código ficou bem organizado e mostra corretamente o uso de polimorfismo, já que a lista é do tipo Midia, mas cada objeto executa sua própria versão do método ExibirDetalhes() por meio do override. Isso mostra bem como Imagem e Video reaproveitam a classe base e adaptam o comportamento conforme o tipo de mídia.

Dica: para deixar a saída ainda mais padronizada, você pode usar Console.WriteLine() também na classe Midia, caso ela venha a ser instanciada ou usada diretamente em algum teste. Continue praticando essa estrutura de herança e sobrescrita de métodos, pois ela ajuda bastante na organização de projetos orientados a objetos.

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