Пример #1
0
            static void Main(string[] args)
            {
                int NumFuncs = 8;

                Funcionario[] funcionarios = criaFuncionários(NumFuncs);



                Funcionario maria = new Executivo("Maria");

                maria.setSalario(2000);
                maria.imprime(maria);



                /**
                 * Esta chamada é válida, pois o TIPO ESTÁTICO (tipo declarado) de f1 é Funcio-nario e
                 * o método getNome foi declarado em Funcionario.
                 */


                /**
                 * Chamar f1.setAreaAtuacao("Suporte") é um erro, pois o
                 * TIPO DINÂMICO (tipo do objeto referenciado) de f1 é Tecnico,
                 * mas o tipo estático é Funcionário e setAreaAtuacao NÃO existe em Funcionario.
                 * Assim, é preciso "forçar a barra" fazendo a "coerção" ou "type casting" ou "casting".
                 */
                // Casting para o tipo Tecnico, que é o tipo dinâmico referenciado por f1...


                Console.ReadKey();
            }
Пример #2
0
        //Método que cria uma lista de funcionários aleatoriamente...
        static Funcionario[] criaFuncionários(int quantos)
        {
            Funcionario[] funcs   = new Funcionario[quantos];
            Random        gerador = new Random();

            for (int i = 0; i < funcs.Length; i++)
            {
                int qual = gerador.Next(5);

                switch (qual)
                {
                case 0:
                case 1:
                case 2: Tecnico t = new Tecnico("Técnico " + (i + 1));
                    t.setAreaAtuacao("Area " + (i + 1));
                    t.setSalario(1000.0 * (i + 1));
                    funcs[i] = t;
                    break;

                case 3: Gerente g = new Gerente("Gerente " + (i + 1));
                    g.setSalario(1000.0 * (i + 1));
                    funcs[i] = g;
                    g.setBonus(2000.0);
                    break;

                case 4: Executivo e = new Executivo("Executivo " + (i + 1));
                    e.setSalario(1000.0 * (i + 1));
                    e.setBonus(4000.0);
                    string[] linguas = { "Espanhol", "Ingles" };
                    e.setIdiomas(linguas);
                    funcs[i] = e;
                    break;
                } // fim switch
            }     // fim for

            return(funcs);
        }