1
resposta

[Projeto] Exibindo mídias

Midia.cs

public class Midia
{
    public string Nome { get; set; }

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

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

Imagem.cs

public class Imagem : Midia
{
    public string Resolucao { get; set; }

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

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

Video.cs

public class Video : Midia
{
    public int Duracao { get; set; }

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

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

Program.cs

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

Olá, Matheus, como vai?

Seu código implementa corretamente o conceito de polimorfismo de subtipos em C#. Você utilizou de forma adequada a palavra-chave virtual na classe base e o modificador override nas classes derivadas, o que permite que o método ExibirDetalhes se comporte de maneira específica para cada tipo de mídia dentro da lista. A estrutura das classes e o uso do construtor base demonstram uma boa compreensão da organização de objetos.

Parabéns pelo exercício e por compartilhar sua solução com a comunidade. Continue praticando e compartilhando seus projetos no fórum. Qualquer dúvida, o fórum está a disposição.

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