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

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

LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS CLASSES ABSTRATAS

Apresentações semelhantes


Apresentação em tema: "LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS CLASSES ABSTRATAS"— Transcrição da apresentação:

1 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS CLASSES ABSTRATAS
Prof. Thiago Pereira Rique

2 Agenda Classes abstratas Métodos abstratos

3 Classes abstratas Vamos recordar um possível estado da classe Funcionario

4 Classes abstratas Considere agora a classe ControleDeBonificacoes

5 Classes abstratas O método registra recebe qualquer referência do tipo Funcionario. Funcionario ou seus subtipos (Gerente, Diretor, etc.). Estamos utilizando a classe Funcionario para o polimorfismo. Em alguns sistemas (como é o nosso caso), usamos uma classe com o objetivo de economizar código e ganhar polimorfismos para criar métodos genéricos. “Faz sentido ter um objeto do tipo Funcionario?” X “Faz sentido ter uma referência do tipo Funcionario?”

6 Classes abstratas Polimorfismo de referência
Utilizar new em Funcionario pode não fazer sentido. Queremos algo mais concreto que Funcionario.

7 Classes abstratas Outro caso:
Classe Pessoa Classe PessoaFisica Classe PessoaJuridica A classe Pessoa estaria sendo usada apenas para ganhar o polimorfismo. Não faz sentido permitir instanciá-la. Solução para este problema? Classes abstratas!!!

8 Classes abstratas Suponha que nossa empresa tenha apenas gerentes, diretores, secretárias, etc. O que vem a ser exatamente nossa classe Funcionario? Idealização de um tipo (um rascunho) Para nosso sistema, é inadmissível que um objeto seja apenas do tipo Funcionario. Palavra-chave abstract Impede a classe Funcionario de ser instanciada.

9 Classes abstratas Classe abstrata Funcionario.

10 Classes abstratas Considere o código:
O problema é instanciar a classe. Criar referência é permitido.

11 Classes abstratas Podemos então herdar da classe Funcionario, reescrevendo o método getBonificacao. OBS.: “Fique claro que a decisão de transformar Funcionario em uma classe abstrata dependeu do nosso domínio!”

12 Métodos abstratos Se getBonificacao não fosse reescrito, seria herdado da classe mãe. Retornaria o salário + 20% Não existe uma regra para a bonificação de funcionários. Poderíamos então jogar fora o método getBonificacao da classe Funcionario? Funcionario f f.getBonificacao(); //não poderíamos fazer isto Em uma classe abstrata, podemos determinar que um método será sempre escrito pelas classes filhas.

13 Métodos abstratos Um método abstrato indica que todas as subclasses (classes filhas, concretas) devem reescrever o método.

14 Métodos abstratos Voltando ao método registra na classe ControleDeBonificacoes.

15 Métodos abstratos Voltando ao método registra na classe ControleDeBonificacoes. A chamada f.getBonificacao() não vai falhar! O método é abstrato, logo suas subclasses reescrevem o método (concreto).

16 REFERÊNCIA Apostila caelum-java-objetos-fj11


Carregar ppt "LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS CLASSES ABSTRATAS"

Apresentações semelhantes


Anúncios Google