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!

0
respostas

[Projeto] Desafio: hora da prática

Desenvolver uma classe que representa um catálogo de jogos, com uma lista de Jogos e métodos para manipular essa lista, bem como um construtor que faça sua inicialização.

class Catalogo
{
    List<Categoria> categorias = new List<Categoria>();

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

    public string Nome { get; }

    public void AdicionarCategoria(Categoria categoria)
    {
        categorias.Add(categoria);
    }

    public void ExibirCategorias ()
    {
        foreach (var categoria in categorias)
        {
            categoria.ExibirLista();
            Console.WriteLine(" ");
        }
    }
}
class Categoria
{
    List<Jogo> jogos = new List<Jogo>();

    public Categoria(string nome, string descricao)
    {
        Nome = nome;
        Descricao = descricao;
    }

    public string Nome { get; }
    public string Descricao { get; }

    public void AdicionarJogo(Jogo jogo)
    {
        jogos.Add(jogo);
    }

    public void ExibirLista()
    {
        Console.WriteLine(Nome + ":");
        Console.WriteLine(Descricao + "\n");
        foreach (Jogo jogo in jogos)
        {
            jogo.ExibirInformacoes();
            Console.WriteLine(" ");
        }
    }
}
class Genero
{
    List<Jogo> jogos = new List<Jogo>();

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

    public string Nome { get; }

    public void AdicionarJogo (Jogo jogo)
    {
        jogos.Add(jogo);
    }

    public void ExibirLista()
    {
        if (jogos.Count == 0)
        {
            Console.WriteLine("A lista está vazia.");
        }
        else
        {
            Console.WriteLine($"Gênero: {jogos[0].Genero.Nome}\n");
            foreach (Jogo jogo in jogos)
            {
                jogo.ExibirInformacoes(false);
                Console.WriteLine(" ");
            }
        }
    }
}
class Jogo
{
    public Jogo(string titulo, Genero genero, string plataforma, decimal preco)
    {
        Titulo = titulo;
        Genero = genero;
        Plataforma = plataforma;
        Preco = preco;
    }

    public string Titulo { get; }
    public Genero Genero { get; }
    public string Plataforma { get; }
    public decimal Preco { get; }

    public void ExibirInformacoes(bool exibir = true)
    {
        Console.WriteLine($"Título: {Titulo}");

        if (exibir)
        {
            Console.WriteLine($"Gênero: {Genero.Nome}");
        }
        
        Console.WriteLine($"Plataforma: {Plataforma}");
        Console.WriteLine($"Preço: R${Preco}");
    }
}