Java: Heranca e polimorfismo

Post on 09-Jan-2017

24 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

Transcript

HerançaArthur E. de O. Carosia

Repetição de Código

Repetição de Código

Código Repetido

Código Novo

Poderíamos ter deixado a classe Funcionario mais genérica, ◦ mantendo nela senha de acesso, e o número de

funcionários gerenciados. ◦ Caso o funcionário não fosse um gerente,

deixaríamos estes atributos vazios. Muito atributos opcionais

◦ Muito espaço vazio Métodos

◦ Gerente tem o método autentica, que não faz sentido existir em um funcionário que não é gerente.

Problemas

Se tivéssemos um outro tipo de funcionário que tem características diferentes do funcionário comum, precisaríamos criar uma outra classe e copiar o código novamente

Se um dia precisarmos adicionar uma nova informação para todos os funcionários, precisaremos passar por todas as classes de funcionário e adicionar esse atributo.

Problemas

Centralizar as informações de Funcionário

Em Java, de relacionarmos uma classe de tal maneira que uma delas herda tudo que a outra tem.

No nosso caso, gostaríamos de fazer com que o Gerente tivesse tudo que umFuncionario tem, gostaríamos que ela fosse uma extensão de Funcionario. 

Uso do termo extends

Solução

O gerente “é um” funcionário

Solução

 A classe Gerente herda todos os atributos e métodos da classe mãe, no nosso caso, a Funcionario.

Solução

Adaptar ou alterar métodos de classes existentes, bem como também adicionar métodos ou atributos, com o objetivo de adaptar as classes para novas situações

A subclasse herda atributos e métodos da superclasse.

Herança

Super e Sub classe◦ Funcionario é a superclasse de Gerente◦ Gerente é a subclasse de Funcionario.

Todo Gerente é um Funcionário.

Herança

é-um GeneralizaçãoEspecialização

Public: ◦ qualquer classe pode alterar os atributos dos

objetos deste tipo. Private:

◦ Somente pode ser acessado de dentro da classe Protected

◦ Entre o private e o public◦ só pode ser acessado (visível) pela própria classe,

por suas subclasses e classes do mesmo pacote

Acessar Atributos em SubClasses

Herança

Métodos herdados podem ser reescritos nas subclasses

Ao herdar um método, podemos alterar seu comportamento.

Reescrever (@override) o método:

Reescrita de Método

Métodos (ou atributos) da superclasse podem ser invocados com o uso da palavra chave super

Invocando métodos da Superclasse

Construtores da superclasse também podem ser invocados

Invocando métodos da Superclasse

Construtores da superclasse também podem ser invocados

Invocando métodos da Superclasse

A chamada a super deve ser a primeira instrução do construtor da subclasse

Se não houver a chamada a super, então o construtor padrão (sem argumentos) da superclasse é chamado

Se a superclasse não tiver construtor padrão, ocorrerá um erro de compilação

Invocando métodos da Superclasse

Lista de Exercícios no Moodle

Exercícios

Na herança, todo Gerente é um Funcionario Podemos nos referir a um Gerente como

sendo um Funcionario. Se alguém precisa falar com

um Funcionario do banco, pode falar com um Gerente.

Polimorfismo

Polimorfismo é a capacidade de um objeto poder ser referenciado de várias formas.

Polimorfismo

Polimorfismo é a capacidade de um objeto poder ser referenciado de várias formas.

Polimorfismo

 No Java, a invocação de método sempre vai ser decidida em tempo de execução.

O método executado é o do Gerente.

Polimorfismo - Exemplo

Polimorfismo - Exemplo

Sistema de Faculdade que controle despesas com funcionários e professores

Polimorfismo – Exemplo 2

Funcionário

Polimorfismo

O gasto que temos com o professor não é apenas seu salário. Temos de somar um bônus de 10 reais por hora/aula.

Polimorfismo

Gerador de Relatórios◦ Podemos passar para nossa classe

qualquer EmpregadoDaFaculdade. ◦ Vai funcionar tanto para professor, quanto para

funcionário comum.

Polimorfismo

Benefício:◦ Se desejarmos adicionar uma nova classe que

estende EmpregadoDaFaculdade, não é necessário alterar a classe Relatório.

Polimorfismo

Moodle

Exercício Futebol de RuaGrupos de 2 Pessoas

HerançaArthur E. de O. Carosia

top related