A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.

Apresentações semelhantes


Apresentação em tema: "Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes."— Transcrição da apresentação:

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


Carregar ppt "Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes."

Apresentações semelhantes


Anúncios Google