Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Resposta - Exibindo Mídias

Classe Media:

namespace exercise92.Models;

internal class Media
{
    public string Name { get; }

    public Media(string name)
    {
        Name = name;
    }

    public virtual void ShowDetails()
    {
        return;
    }
}

Classe Image:

namespace exercise92.Models;

internal class Image : Media
{
    public string Resolution { get; }

    public Image(string name, string resolution)
        : base(name)
    {
        Resolution = resolution;
    }

    public override void ShowDetails()
    {
        Console.WriteLine($"Image: {Name} - Resolution: {Resolution}");
    }
}

Classe Video:

namespace exercise92.Models;

internal class Video : Media
{
    public int Duration { get; }

    public Video(string name, int duration)
        : base(name)
    {
        Duration = duration;
    }

    public override void ShowDetails()
    {
        Console.WriteLine($"Video: {Name} - Duration: {Duration} minutes");
    }
}

Instâncias:

using exercise92.Models;

List<Media> digitalMedias = new List<Media>
{
    new Image("landscape.jpg", "1920x1080"),
    new Video("movie.mp4", 120)
};

foreach (Media media in digitalMedias)
{
    media.ShowDetails();
}
2 respostas
solução!

Oi, Carlos! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Gostei de como você usou polimorfismo com List<Media> e o override em ShowDetails(), deixando o foreach simples e permitindo que cada mídia se apresente do seu jeito.

Uma dica interessante para o futuro é usar abstract para garantir que toda classe filha implemente o método. Veja este exemplo:


abstract class Media
{
    public string Name { get; }

    protected Media(string name)
    {
        Name = name;
    }

    public abstract void ShowDetails();
}

Esse código faz com que ShowDetails() seja obrigatório nas classes filhas, evitando que uma classe herde e fique sem exibir detalhes.

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

Obrigado pelo suporte, Rafaela. Gostei da dica, eu apenas não usei métodos abstratos pois a proposta do exercício era usar métodos virtuais para sobrescrição com override.