Programação Orientação a Objetos - Herança

profDanielBrandao 1,206 views 31 slides May 28, 2016
Slide 1
Slide 1 of 31
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31

About This Presentation

Apostila sobre herança, um dos principais conceitos da programação orientada a objetos.


Slide Content

Herança

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
•Imagineseumdiaprecisarmosadicionarumanova
informação(CPF,porexemplo),paratodasasPessoasdo
controleacadêmico?
•Precisaríamosirdeclasseemclasseadicionandoa
informaçãodoCPF.
Herança 6

Conceito
•Aomodelarumconjuntodeclasses,podemosencontrar
classessemelhantesnaestruturaenocomportamento.
•Existeumamaneira,emJava,derelacionarmosumaclasse
detalmaneiraqueumadelasherdatudoqueaoutratem.
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.
•Subclasseherda 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ção
Pessoa
-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 é umaPessoa

Sobreposição
•Pode-se modificar algum método da minha superclasse?
Sim, através da sobreposição!
•Métodosimplementadospreviamenteemumasuperclassepodem
serredefinidosporqualquersubclasse
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ça
Pura
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últiplacom classes
Herança 12

Recapitulando...
•Se Bé uma subclasse de A, então:
•Os objetos de Bsuportam todas as operações suportadas
pelos objetos de A, exceto aquelas que foram redefinidas
•Os objetos de Bincluem todas as variáveis de instância de
B+ todas as variáveis de instância de A
•Métodos declarados como privatenã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?
Herança 14

Como acessar os atributos que herdamos?
•Sedeixarmososatributoscomopublic,qualquerumpoderiaalterar
osatributosdosobjetosdestetipo.
•Existeumoutromodificadordeacesso,oprotected,queficaentre
oprivateeopublic.Umatributoprotectedsópodeseracessado
(visível)pelaprópriaclasseeporsuassubclasses.
Herança 15

Como implementar nosso
primeiro exemplo?
Herança 16

Antes de aplicar Herança
Herança 17

Depois
Herança 18

Exercício 1
A)Seguindoomodelodoexemplo,vamoscriarumaclasse
chamadaPessoa.Eladeveráterascaracterísticasnome,
email,telefone,idade,sexo.
B)Teremostambém3tiposdepessoas,como:Alunoqueterá
aindaMatriculaeaNota.Professorterácomoatributos
adicionaisseuSalárioeDisciplina.EaSecretáriaterácomo
adicionalapenasosalário.Crieumaclasseparacadaum.
C)Porultimo,vamoscriarumaclasseparatestarcadaumdos
atributos.
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
ContaCorrentee
ContaPoupançairã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?
SisBank

•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 entre
ContaCorrentee 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 ContaCorrentee
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)VamoscriarumaclasseConta,quepossuaumsaldo,os
métodosparapegarsaldo,creditaredebitar
B)AdicioneummétodonaclasseConta,queatualizaessa
contadeacordocomumataxapercentualfornecida
C)CrieduassubclassesdaclasseConta:ContaCorrentee
ContaPoupanca.Ambasterãoométodoatualiza
sobrescrito:AContaCorrentedeveatualizar-secomodobro
dataxaeaContaPoupancadeveatualizar-secomotriploda
taxa
•D)Alémdisso,aContaCorrentedevereescreverométodo
creditar,afimderetirarumataxabancáriadedezcentavos
decadadepósito
32Herança