3
respostas

Instancia do Objeto tipo FUNCIONARIO diferencia do tipo DIRETOR

Boa tarde

Tenho uma dúvida a respeito da construção do objeto do tipo funcionario ... veja o codigo abaixo ao construir o objeto Roberta porque o tipo do objeto deve ser do tipo funcionario sendo que o objeto é do tipo diretor??? o correto não seria

Diretor roberta = new Diretor("159.753.398-04"); roberta.Nome = "Roberta";

ao invés de

Funcionario roberta = new Diretor("159.753.398-04"); roberta.Nome = "Roberta";

Codigo completo da aplicação abaixo

 public static void CalcularBonificacao() 
        {
            GerenciadorBonificacao gerenciadorBonificacao = new GerenciadorBonificacao();

            Funcionario pedro = new Designer("833.222.048-39");
            pedro.Nome = "Pedro";

            Funcionario roberta = new Diretor("159.753.398-04");
            roberta.Nome = "Roberta";

            Funcionario igor = new Auxiliar("981.198.778-53");
            igor.Nome = "Igor";

            Funcionario camila = new GerenteDeConta("326.985.628-89");
            camila.Nome = "Camila";

            Desenvolvedor guilherme = new Desenvolvedor("456.175.468-20"); 
            guilherme.Nome = "Guilherme"; 

            gerenciadorBonificacao.Registrar(guilherme);
            gerenciadorBonificacao.Registrar(pedro);
            gerenciadorBonificacao.Registrar(roberta);
            gerenciadorBonificacao.Registrar(igor);
            gerenciadorBonificacao.Registrar(camila);

            Console.WriteLine("Total de bonificações do mês " +
                gerenciadorBonificacao.GetTotalBonificacao());
        }
    }

3 respostas

Isso acontece por que a classe Funcionário herda Diretor, assim como herda Designer, Auxilar, GerenteDeConta. Todos eles são funcionários. Você pode fazer tanto: Funcionario fulano = new Diretor(); como: Diretor fulano = new Diretor();

Lucas boa tarde

Não há nenhuma regra feita pela comunidade na forma de instanciar neste caso? ou seja não a uma forma correta e unica de se fazer?

Olá Priscila,

Não existe uma forma correta de se fazer, depende muito de como o desenvolvedor olha o próprio código.

Indo mais afundo do que o Lucas explicou, isso acontece porque Diretor, GerenteDeConta, Designer, Auxiliar todos eles são Funcionários e sendo assim, todas essas classes possuem atributos iguais entre elas.. Ao invés de você escrever os atributos em todas as classes você escreve apenas na classe Funcionário e todas as outras classes (Diretor, GerenteDeConta, Designer, Auxiliar) vão fazer uma "herança" e herdar da classe Funcionário os seus atributos e métodos.

Espero poder ter ajudado!!!