Vamos imaginar o funcionamento do sistema acadêmico do Unipê, que controla o cadastro de alunos, professores e
funcionários.
Herança 4
Vamos imaginar o funcionamento de um sistema acadêmico do Unipê, que controla o cadastro de alunos, professores e funcionários
Herança 5
Conceito
• Imagine se um dia precisarmos adicionar uma novainformação(CPF, por exemplo), para todas as Pessoas docontrole acadêmico?
• Precisaríamos ir de classe em classe adicionando ainformação do CPF.
Herança 6
Conceito
• Ao modelar um conjunto de classes, podemos encontrarclasses semelhantes na estrutura e no comportamento.
• Existe uma maneira, em Java, de relacionarmos uma classede tal maneira que uma delas herda tudo que a outra tem.
Herança 7
Então, como implementar?
•A ideia central de herança é que novas classes são criadas a partir de classes já existentes.• Subclasse herda de uma Superclasse• Subclasse é mais específica que a Superclasse
•Herança é uma técnica para prover suporte a especialização• Classes mais abaixo: especializadas• Classes mais acima: genéricas
Herança 8
RepresentaçãoPessoa
-nome-email-telefone-idade-sexo
Herança 9
Professor
-salario-disciplina
Aluno
-matricula-notas
Funcionario
-salario
Em todo momento que criarmos um objeto do tipo Professor, ou Aluno, ou Funcionário, este objeto possuirá também os atributos e métodos definidos
na classe Pessoa, pois agora ele é uma Pessoa
Sobreposição
• Pode-se modificar algum método da minha superclasse?
Sim, através da sobreposição!
• Métodos implementados previamente em uma superclasse podemser redefinidos por qualquer subclasse
Herança 10
Para isso, mantém-se a mesma assinatura do método herdado, redefinindo apenas o corpo do
método
Tipos de Herança
Herança pura métodos genéricos são sobrepostos
Extensão novos comportamentos são adicionados nas classes de
especialização (métodos genéricos herdados)
• Por exemplo:
Herança 11
Forma
+desenha()+apaga()
Quadrado
+desenha()+apaga()
Circulo
+desenha()+apaga()+defineRaio()
HerançaPura
Extensão
Posso herdar de várias Classes?
•Cada subclasse possui uma única superclasse • A isso, chamamos de herança simples• Em algumas linguagens, é possível herdar a partir de
diversas superclasses (como em C++)• Java não permite herança múltipla com classes
Herança 12
Recapitulando...
• Se B é uma subclasse de A, então: • Os objetos de B suportam todas as operações suportadas
pelos objetos de A, exceto aquelas que foram redefinidas • Os objetos de B incluem todas as variáveis de instância de
B + todas as variáveis de instância de A • Métodos declarados como private não serão herdados
• Construtores também não são herdados • Serão chamados (em cascata) na construção de objetos
especializados(super()).
Herança 13
Como acessar os atributos que herdamos?
• Se deixarmos os atributos como public, qualquer um poderia alteraros atributos dos objetos deste tipo.
• Existe um outro modificador de acesso, o protected, que fica entreo private e o public. Um atributo protected só pode ser acessado(visível) pela própria classe e por suas subclasses .
Herança 15
Exercício 1
A) Seguindo o modelo do exemplo, vamos criar uma classechamada Pessoa. Ela deverá ter as características nome,email, telefone, idade, sexo.
B) Teremos também 3 tipos de pessoas, como: Aluno que teráainda Matricula e a Nota. Professor terá como atributosadicionais seu Salário e Disciplina. E a Secretária terá comoadicional apenas o salário. Crie uma classe para cada um.
C) Por ultimo, vamos criar uma classe para testar cada um dosatributos.
Herança 19
• Vamos supor um sistema de um banco, que controle seus clientes e suas contas...
Estudo de Caso 2 > Sistema Bancário
Conta Poupança
• Cliente
• Número
• DataAbertura
• Saldo
• TaxaRendimento
• Creditar
• Debitar
• CreditarRendimento
Conta Corrente
• Cliente
• Número
• DataAbertura
• Saldo
• TaxaManutencao
• TaxaOperacao
• Creditar
• Debitar
• DebitarManutenção
Sistema Bancário > SisBank
Conta Poupança Conta Corrente
Sistema Bancário > SisBank
O que existe de semelhante entre estes dois?
R: São Contas!
Conta Poupança• Cliente
• Número
• DataAbertura
• Saldo
• TaxaRendimento
Creditar
Debitar
CreditarRendimento
Conta Corrente• Cliente
• Número
• DataAbertura
• Saldo
• TaxaManutencao
• TaxaOperacao
Creditar
Debitar
DebitarManutenção
Sistema Bancário > SisBank
• Com a herança é possível identificar que as classes ContaCorrente e ContaPoupança irão aproveitar tudo que está na classe Conta!
Implementando Herança
•Mas e o Construtor da subclasse, Como fica?
•Precisamos chamar o construtor da superclasse!• Operador: super
Implementando Herança
•Detalhe importante:•A classe Conta pode “existir” no nosso
sistema bancário?
•R: Não, essa é uma classe que apenas reúne características semelhantes entreContaCorrente e ContaPoupanca. A classe Conta não pode ser instanciada!
SisBank
•Como implementar para que a classe Conta não possa ser instanciada?•R: Definindo-a como “classe abstrata”!
Classe Abstrata
•O que é uma classe Abstrata?•É uma classe que não pode ser instanciada, ou
seja, não gera objetos;•É utilizada apenas como superclasse em
hierarquia de heranças;•Também é conhecida como “superclasse
abstrata”;•Reúne características semelhantes de classes.•Operador: abstract
Classe Abstrata
• No nosso sistema bancário, o método debitar irá se comportar de maneira diferente para as implementações em ContaCorrente e ContaPoupanca:
• Corrente: ao solicitar para se debitar um valor, deve-se também debitar o valor da taxa de operação da conta;
• Poupança: ao solicitar para se debitar um valor, deve-se verificar se a conta já possui mais de um ano de abertura;
SisBank
•Como garantir que as classes herdeiras irão implementar um método?• R: Métodos abstratos!
• Não possui implementação;
• Toda classe herdeira direta deverá obrigatoriamente implementar.
• Esse é um conceito do Polimorfismo: o mesmo nome e assinatura de método podem ser utilizados para realizar diferentes ações, dependendo da implementação do método da classe!
Métodos Abstratos
Exercício 2
A) Vamos criar uma classe Conta, que possua um saldo, osmétodos para pegar saldo, creditar e debitar
B) Adicione um método na classe Conta, que atualiza essaconta de acordo com uma taxa percentual fornecida
C) Crie duas subclasses da classe Conta: ContaCorrente eContaPoupanca. Ambas terão o método atualizasobrescrito: A ContaCorrente deve atualizar-se com o dobroda taxa e a ContaPoupanca deve atualizar-se com o triplo dataxa
• D) Além disso, a ContaCorrente deve reescrever o métodocreditar, a fim de retirar uma taxa bancária de dez centavosde cada depósito
32Herança
Top Related