Buscar

POO 16 herança continuacao pratica

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 17 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 17 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 17 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

HERANÇA
Thaís Alves Burity Rocha
Agenda
 Herança Múltipla
 Modificador protected
 Classe Object
 Composição
 Boas práticas de programação OO
 Exercícios
Herança Múltipla
 Em Java, uma classe pode estender apenas uma
superclasse diretamente
 Herança simples
 Outras linguagens OO permitem que uma classe
estenda mais de uma superclasse diretamente
 Herança múltipla
 Exemplo:
Conta
Poupanca ContaBonificada
OvíparoMamífero
Ornitorrinco
Herança Múltipla
 No geral, parece vantajoso, pois maximiza a 
capacidade de reuso
 Mas pode causar problema de ambiguidade
 Exemplo
 Duas classes implementam o mesmo método
 Se uma subclasse herdar de ambas, herdará ambos os
métodos
 Ao chamar o método, qual versão será utilizada?
Modificador de Acesso protected
 Atributos e métodos definidos com o modificador 
protected podem ser acessados:
 Na classe em que foram declarados
 Nas subclasses de classes em que foram declarados
 Em classes no mesmo pacote da classe em que foram
declarados
 Em síntese: protected = default + subclasses
Modificador de Acesso protected
package pacoteA;
public class ClassA {
protected int valor;
}
package pacoteB;
import pacoteA.ClassA;
public class ClassB extends ClassA{
public void copiar(){
int x = this.valor;
}
}
package pacoteB;
public class ClassC {
public void copiar(){
ClassB b = new ClassB();
int x = b.valor;}
}
package pacoteA;
public class ClassD {
public void copiar(){
ClassA a = new ClassA();
int x = a.valor;}
}
Classe Object
 Toda classe em Java é subclasse de Object
(java.lang.Object)
 Principais métodos (para a disciplina)
 equals()
 toString()
 Esses métodos devem ser sobrescritos
 Vamos estudá-los para entender melhor sobre 
herança (e conceitos relacionados)
Classe Object: Método equals()
 Assinatura: public boolean equals(Object obj)
 Sinaliza se dois objetos são semânticamente
equivalentes
 Se não for sobrescrito, se comporta de maneira
equivalente ao operador ==
Classe Object: Método equals()
public class Conta {
private String numero;
private double saldo; 
private Cliente cliente;
...
public boolean equals(Object obj){
if(obj instanceof Conta){
Conta conta2 = (Conta)obj;
if( numero.equals(conta2.getNumero()) ){
return true;
}
}
return false;
}
}
Classe Object: Método toString()
 Assinatura: public String toString()
 Retorna uma representação em String do objeto
 Quando não é sobrescrito, gera um “código”
 <Nome da classe do objeto>@<representação em
hexadecimal do hash code do objeto>
public class Cliente{
private String nome; 
private String cpf;
...
public String toString(){
return "Nome: " + nome + "CPF: " + cpf;
}
}
Composição
 Herança não é a única forma de reutilizar classes
 Composição (ou Delegação)
 Conta possui um atributo do tipo Cliente
 Cliente possui um atributo do tipo Endereco
 Cada classe tem sua responsabilidade e é usada
por outra classe
Relacionamento TEM-UM (HAS-A)
Boas Práticas de Programação OO
 Considere usar herança quando tiver um 
comportamento compartilhado entre várias classes
 creditar(), debitar() e transferir() são comportamentos
comuns à toda conta
 Não use herança se a subclasse e a superclasse não
passarem no teste É-UM
 Chá É-UMA Bebida (OK)
 Bebida É-UM Chá (ERRADO)
Boas Práticas de Programação OO
 Não use herança apenas para poder reusar código
 Alarme emite som
 Piano emite som
 Utilizar anotação na sobrescrita de métodos
Alarme
Piano
Não faz sentido!
Apesar do reuso do 
método de emitir som!
@Override
public void creditar(double valor){...}
Exercícios
Lista 6, Questão 16 (adaptada)
 Escreva uma superclasse Funcionario e duas subclasses, 
Gerente e Atendente.
 A classe Funcionario deve possuir os atributos nome, 
CPF, salario e dataNascimento.
 A classe Atendente deve ter ainda o atributo 
comissao.
 Crie um método getSalario que deve retornar o salário 
do Funcionario. No caso de Gerente, deve ser 
retornado o salário acrescido de uma bonificação de 
R$2000,00.
 Crie uma classe para testar o seu código, que demonstre o 
comportamento polimórfico pela chamada do método 
getSalario.
Lista 6, Questão 10
 Implemente a classe Poupanca utilizando 
herança.
 Em seguida, teste a inserção de poupanças em um 
repositório do tipo 
RepositorioContasVetor.
Lista 6, Questão 11
 Utilizando a classe 
RepositorioContasVetor, procure por uma 
conta e tente chamar o método renderJuros(), 
específico de poupanças.
 O que acontece se a procura retornar um objeto do 
tipo Conta e não do tipo Poupanca?
 Em caso de ocorrência de erro, ajuste a sua 
implementação para preveni-lo.

Continue navegando