Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouJonatas Goncalves Alterado mais de 9 anos atrás
1
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes
2
Polimorfismo O polimorfismo é a capacidade de um objeto ser referenciado de várias formas. O objeto não muda. Ele nasce e morre pertencendo a uma mesma classe, porém, podemos referenciá-lo de formas diferentes
3
Polimorfismo Relembrando: Uma variável do tipo Funcionário não guarda um objeto Funcionário, mas sim uma referência a ele!
4
Polimorfismo Como o gerente é um funcionário, podemos nos referir a ele como sendo um Funcionário. Em uma porta do banco onde vemos “Permita a entrada somente de funcionários”. Um gerente pode entrar?
5
Polimorfismo.... Gerente g = new Gerente(); Funcionario f= new Funcionario (); f.setSalario (5000);....
6
Polimorfismo E se agora eu fizer: f.getBonificacao (); Qual método de bonificação iremos chamar? O do funcionário, que retorna 10% (500) do salário? ou o do gerente que retorna 15% (750) ?
7
Polimorfismo No Java a chamada do método vai ser decidida sempre em tempo de execução O Java vai procurar na memória o objeto na memória e então decidir qual método deve ser chamado, sempre relacionando com a classe com o qual ele foi criado (e não com a classe que estamos usando para referencia-lo no momento) No nosso exemplo o retorno será 750 (método do gerente)
8
Polimorfismo Qual a vantagem disto? Por que iriamos querer criar um Gerente e referencia-lo como Funcionário? Isto é importante porque desta forma podemos criar um método capaz de receber objetos de qualquer classe da hierarquia.
9
Polimorfismo Vamos a um exemplo. Na nossa hierarquia de classes temos: Funcionário: Classe mãe; Bonus de 10% Gerente: Filha de funcionário; Bônus de 15% Diretor: Filha de funcionário; Bônus de 20%
10
Polimorfismo O nosso sistema precisa calcular o valor total pago em bônus de todos os funcionários da empresa Como construir tal método, uma vez que cada tipo de funcionário recebe quantias distintas?
11
Polimorfismo
12
ControleDeBonificacoes controle = new ControleDeBonificacoes(); Gerente g1 = new Gerente (); g1.setSalario (5000); controle.registra(g1); Funcionario f1 = new Funcionario(); f1.setSalario(1000); controle.registra(f1); Secretaria s1 = new Secretaria(); s1.setSalario (800); controle.registra(s1); System.out.println(“Total de bônus = ” + controle.getTotalDeBonificacoes());
13
Polimorfismo Se agora precisarmos criar um novo tipo de Funcionario chamado Presidente, que recebe 50% de bônus, precisaremos alterar qual classe para que o total de bônus seja calculado corretamente? Exercício: Implemente as classes do nosso exemplo: Incluindo a classe de Controle de Bonificações Implemente uma classe de teste (nela, crie Funcionário, Gerente, Secretaria, Diretor e Presidente) Execute e veja o resultado
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.