static void Main(string[] args)
        {
            ControladorCaixa controladorCaixa = new ControladorCaixa(capacidadeRegistos);
            TelaCaixa        telaCaixa        = new TelaCaixa(controladorCaixa);

            ControladorRevista controladorRevista = new ControladorRevista(capacidadeRegistos, controladorCaixa);
            TelaRevista        telaRevista        = new TelaRevista(controladorRevista, telaCaixa);

            ControladorAmigo controladorAmigo = new ControladorAmigo(capacidadeRegistos);
            TelaAmigo        telaAmigo        = new TelaAmigo(controladorAmigo);

            ControladorEmprestimo controladorEmprestimo = new ControladorEmprestimo(capacidadeRegistos, controladorAmigo, controladorRevista);

            ICadastravel telaEmprestimos = null;
            IEditavel    tela            = null;
            TelaBase     telaBase        = new TelaBase();

            while (true)
            {
                string opcao = ApresentarMenu();

                if (opcao.Equals("S"))
                {
                    break;
                }

                else if (opcao == "1")
                {
                    tela = new TelaCaixa(controladorCaixa);
                }

                else if (opcao == "2")
                {
                    tela = new TelaRevista(controladorRevista, telaCaixa);
                }

                else if (opcao == "3")
                {
                    tela = new TelaAmigo(controladorAmigo);
                }

                else if (opcao == "4")
                {
                    telaEmprestimos = new TelaEmprestimo(controladorEmprestimo, telaRevista, telaAmigo);
                }

                if (opcao != "4")
                {
                    string opcaoCadastro = telaBase.ObterOpcao();

                    if (opcaoCadastro == "1")
                    {
                        tela.Registrar(0);
                    }

                    else if (opcaoCadastro == "2")
                    {
                        tela.Visualizar();
                    }

                    else if (opcaoCadastro == "3")
                    {
                        tela.Editar();
                    }

                    else if (opcaoCadastro == "4")
                    {
                        tela.Excluir();
                    }

                    else
                    {
                        break;
                    }
                }
                else
                {
                    string opcaoEmprestimo = telaBase.ObterOpcaoEmprestimo();

                    if (opcaoEmprestimo == "1")
                    {
                        telaEmprestimos.RegistrarEmprestimo(0);
                    }

                    else if (opcaoEmprestimo == "2")
                    {
                        telaEmprestimos.visualizarTodosEmprestimos();
                    }

                    else if (opcaoEmprestimo == "3")
                    {
                        telaEmprestimos.visualizarEmprestimosAbertos();
                    }

                    else if (opcaoEmprestimo == "4")
                    {
                        telaEmprestimos.RegistrarDevolucao();
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }