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}");
}
}