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 Prof. Thiago Pereira Rique

Apresentações semelhantes


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

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

2 A GENDA Classes abstratas Métodos abstratos

3 C LASSES ABSTRATAS Vamos recordar um possível estado da classe Funcionario

4 C LASSES ABSTRATAS Considere agora a classe ControleDeBonificacoes

5 C LASSES 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 C LASSES ABSTRATAS Polimorfismo de referência Utilizar new em Funcionario pode não fazer sentido. Queremos algo mais concreto que Funcionario.

7 C LASSES 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 C LASSES 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 C LASSES ABSTRATAS Classe abstrata Funcionario.

10 C LASSES ABSTRATAS Considere o código: O problema é instanciar a classe. Criar referência é permitido.

11 C LASSES 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 Prof. Thiago Pereira Rique"

Apresentações semelhantes


Anúncios Google