using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Animais
{
    class Programa
    {

        public class Animal
        {
            public string Nome { get; set; }
            public string Classificacao {get; set;}

            public void CriarAnimal()
            {
                Console.Write("Informe o nome do animal: ");
                this.Nome=Console.ReadLine();
                Console.Write("Informe a classificação do animal: ");
                this.Classificacao = Console.ReadLine();
            }

            public void MostrarAnimal()
            {
                Console.WriteLine("Animal {0} - Classificação {1}", this.Nome, this.Classificacao);
            }

            public virtual void EmitirSom()
            {
                Console.WriteLine("O animal {0} emitiu som.", this.Nome);
            }

        }

        public class Cachorro : Animal
        {
            public override void EmitirSom()
            {
                Console.WriteLine("O animal {0} Latiu.", this.Nome);
            }
        }
        public class Gato : Animal
        {
            public override void EmitirSom()
            {
                Console.WriteLine("O animal {0} miou.", this.Nome);
            }
        }

        public class Galinha : Animal
        {
            public override void EmitirSom()
            {
                Console.WriteLine("O animal {0} cacarejou.", this.Nome);
            }
        }
        
        static void Main()
        {
            Cachorro teste1 = new Cachorro();
            Gato teste2 = new Gato();
            Galinha teste3 = new Galinha();
            int op;
            do
            {
                Console.Clear();
                Console.WriteLine("\t\tMenu de Opções\n\n");
                Console.WriteLine("\n1 =-> Criar um cachorro");
                Console.WriteLine("\n2 =-> Criar um gato");
                Console.WriteLine("\n3 =-> Criar um galinha");
                Console.WriteLine("\n4 =-> Emitir som cachorro");
                Console.WriteLine("\n5 =-> Emitir som gato");
                Console.WriteLine("\n6 =-> Emitir som galinha");
                Console.WriteLine("\n7 =-> Mostrar todos animais");
                Console.WriteLine("\n8 =-> Sair");
                Console.Write("\n\nDigite sua opção: ");
                op = Convert.ToInt32(Console.ReadLine());
                switch (op)
                {
                    case 1:
                        
                        teste1.CriarAnimal();
                        break;
                    case 2:
                        teste2.CriarAnimal();
                        break;
                    case 3:
                        teste3.CriarAnimal();
                        break;
                    case 4:
                        teste1.EmitirSom();
                        break;
                    case 5:
                        teste2.EmitirSom();
                        break;
                    case 6:
                        teste3.EmitirSom();
                        break;
                    case 7:
                        if (teste1.Nome != null)
                           teste1.MostrarAnimal();
                        if (teste2.Nome != null)
                           teste2.MostrarAnimal();
                        if (teste3.Nome != null)
                           teste3.MostrarAnimal();
                        break;
                }
                Console.WriteLine("\nPressione algo para continuar!");
                Console.ReadKey();
            } while (op != 8);
          

            Console.ReadKey();
        }
    }
}
