Buscar

Herança, Reescrita e Polimorfismo

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Orientação a Objetos
ghelfer@unisc.br
Herança, reescrita e 
polimorfismo
Existe uma maneira, em Java, de
relacionarmos uma classe de tal maneira
que uma delas herda tudo que a outra tem.
Isto é uma relação de classe mãe e classe
filha.
No caso ao lado, gostaríamos de fazer com
que o Gerente tivesse tudo que um
Funcionario tem, gostaríamos que ela fosse
uma extensão de Funcionario.
Fazemos isto através da palavra chave
extends.
Herança de classes 
Herança de classes 
Herança de classes 
A nomenclatura mais encontrada
é que Funcionario é a superclasse
de Gerente, e Gerente é a
subclasse de Funcionario.
Neste caso, todo Gerente é um
Funcionário.
Podemos concluir assim que
Funcionario é classe mãe de
Gerente e Gerente é classe filha
de Funcionario.
Herança de classes 
A classe Gerente herda todos os atributos e
métodos da classe mãe, no nosso caso, a
Funcionario.
Ela também herda os atributos e métodos privados,
porém não consegue acessá-los diretamente.
No Java, quando herdamos um método, podemos alterar seu
comportamento.
Podemos reescrever (reescrever, sobrescrever, override) este
método.
Exemplo: Todo fim de ano, os funcionários recebem uma
bonificação. Os funcionários em geral recebem 10% do valor do
salário e os gerentes,15%.
Reescrita de Método
Se executarmos simplesmente o código
acima, gerentes receberão 500.0, ou
seja, 10%, desobedecendo a regra.
Neste caso, criamos o mesmo método getBonificacao() de
Funcionário na classe Gerente, só que agora aplicando os 15%.
Depois de reescrito, não podemos mais chamar o método antigo
que fora herdado da classe mãe
Reescrita de Método
Agora sim, se executarmos o código
acima, gerentes receberão 750.00,
ou seja, 15%, de acordo com a regra.
Ao utilizar a reescrita, caso seja necessário acessar o método da
classe mãe, para não ter que copiar e colocar o conteúdo desse
método e depois incluir alguma informação extra, utilizamos o
método super().
Exemplo:
Método Super
A novidade, aqui, é a palavra chave super, fazendo referência a
classe mãe.
Método Super
Polimorfismo é a capacidade de um objeto
poder ser referenciado de várias formas.
Polimorfismo
No exemplo acima conseguimos passar um Gerente para um
método que recebe um Funcionario como argumento.
Pense como numa porta na agência bancária com o seguinte
aviso: "Permitida a entrada apenas de Funcionários".
Um gerente pode passar nessa porta?
Sim, pois Gerente não deixa de ser um Funcionario.
Polimorfismo
Como tiramos proveito do polimorfismo?
Imagine uma classe de relatório:
Ao instanciar Relatorio e chamar o método Imprime, devido ao
argumento ser do tipo classe mãe, todas as outras herdadas dela
terão impressos seus dados.
Polimorfismo
1- Reproduza todos os algoritmos dessa apresentação.
2 - Cria uma Classe Pessoa, contendo os atributos encapsulados, com seus
respectivos seletores (getters) e modificadores (setters), e ainda o
construtor padrão e pelo menos mais uma opção de construtor conforme
sua percepção. Atributos: String nome; String endereço; String telefone;
3. Considere, como subclasse da classe Pessoa (desenvolvida no exercício
anterior) a classe Fornecedor.
Considere que cada instância da classe Fornecedor tem, para além dos
atributos que caracterizam a classe Pessoa, os atributos valorCredito
(correspondente ao crédito máximo atribuído ao fornecedor) e valorDivida
(montante da dívida para com o fornecedor).
Implemente na classe Fornecedor, para além dos usuais métodos seletores
e modificadores, um método obterSaldo() que devolve a diferença entre os
valores dos atributos valorCredito e valorDivida.
Depois de implementada a classe Fornecedor, crie um programa adequado
que lhe permita verificar o funcionamento dos métodos implementados na
classe Fornecedor e os herdados da classe Pessoa.
Exercícios
4- Resolva a seguinte situação utilizando os conceitos aprendidos. Uma
empresa quer manter o registro da vida acadêmica de todos os funcionários,
o modelo deve contemplar o registro das seguintes informações, de forma
incremental:
a) Para o funcionário que não estudou, apenas o nome e o código funcional;
b) Para o funcionário que concluiu o ensino básico, a escola;
c) Para o funcionário que concluiu o ensino médio, a escola;
d) Para o funcionário que concluiu a graduação, a Universidade;
5- Estenda o modelo implementado no exercício anterior de forma que todo
funcionário possua uma renda básica de R$ 1000,00 e:
a) Com a conclusão do ensino básico a renda total é renda básica
acrescentada em 10%;
b)Com a conclusão do ensino médio a renda total é a renda do nível
anterior acrescentada em 25%;
c) Com a conclusão da graduação a renda total é a renda do nível anterior
acrescentada em 50%;
d) Todos os cálculos são efetuados sempre sobre a última renda obtida.
6- Crie um método estático Imprime numa classe Relatorio que faça a
impressão de todos os cargos e salários.
Depois de implementado tudo, crie um programa adequado que lhe permita
verificar o funcionamento dos métodos implementados.
Exercícios

Continue navegando