Solucionado (ver solução)

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!

Solucionado
(ver solução)
1
resposta

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

Classe Program:

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

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

Classe Midia:

namespace Polimorfismo.ExibindoMidias;

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

    public virtual void ExibirDetalhes()
    {
        Console.WriteLine("Midia: " + Nome);
    }
}

Classe Imagem:

namespace Polimorfismo.ExibindoMidias;

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

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

Classe Video:

namespace Polimorfismo.ExibindoMidias;

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

    public override void ExibirDetalhes()
    {
        Console.WriteLine($"Vídeo: {Nome} - Duração: {Duracao} minutos");
    }
}
1 resposta
solução!

Olá, Fabiano! Como vai?

Seu projeto ficou muito bem estruturado e demonstra um ótimo entendimento de polimorfismo de subtipos. Gostei da forma como você utilizou a classe base Midia com o método virtual e fez a sobrescrita com override nas classes Imagem e Video. Além disso, o uso da lista List<Midia> combinado com o foreach mostra na prática uma das maiores vantagens do polimorfismo: tratar objetos diferentes de maneira uniforme.

Uma dica interessante para o futuro é utilizar o método ToString() para personalizar a exibição das informações dos objetos. Veja este exemplo:


public override string ToString()
{
    return $"Imagem: {Nome} - Resolucao: {Resolucao}";
}

Neste exemplo, o método retorna uma representação textual do objeto, facilitando sua exibição em diferentes partes da aplicação sem repetir código.

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