programação orientada a objetos: herança e polimorfismo
DESCRIPTION
Slides sobre Herança e Polimorfismo.TRANSCRIPT
Herança e Polimorfismo
Prof. Daniel Lobão
Herança“É uma técnica que permite projetar classes genéricas que podem ser especializadas em classes mais particulares, em que as classes especializadas reutilizam o código das mais genéricas”
Estruras de Dados e Algoritmos em Java, 4ª Edição.
Herança!
O que é Herança➔ Reutilização de uma classe
O que é Herança➔ Reutilização de uma classe
◆ As características serão herdadas
O que é Herança➔ Reutilização de uma classe
◆ As características serão herdadas◆ O comportamento herdado pode ser mantido
ou especializado (modificado)
O que é Herança➔ Reutilização de uma classe
◆ As características serão herdadas◆ O comportamento herdado pode ser mantido
ou especializado (modificado)◆ Todos os atributos e métodos da classe
herdada existirão na classe que a utiliza
Hierarquia➔ Superclasse (Classe Base)
Hierarquia➔ Superclasse (Classe Base)
◆ Atributos e métodos serão herdados
Hierarquia➔ Superclasse (Classe Base)
◆ Atributos e métodos serão herdados◆ Desconhece os “herdeiros”
Hierarquia➔ Superclasse (Classe Base)
◆ Atributos e métodos serão herdados◆ Desconhece os “herdeiros”
➔ Subclasse (Classe Filha)
Hierarquia➔ Superclasse (Classe Base)
◆ Atributos e métodos serão herdados◆ Desconhece os “herdeiros”
➔ Subclasse (Classe Filha)◆ Explicitamente herda de uma classe
Hierarquia➔ Superclasse (Classe Base)
◆ Atributos e métodos serão herdados◆ Desconhece os “herdeiros”
➔ Subclasse (Classe Filha)◆ Explicitamente herda de uma classe◆ Pode alterar o comportamento herdado e ter
seus próprios atributos e métodos
Subtipo➔ Classes-Filhas são subtipos, ou seja, “é um”
tipo da Classe-Pai
Subtipo➔ Classes-Filhas são subtipos, ou seja, “é um”
tipo da Classe-Pai◆ Carro “é um” Automóvel
Subtipo➔ Classes-Filhas são subtipos, ou seja, “é um”
tipo da Classe-Pai◆ Carro “é um” Automóvel◆ Cachorro “é um” Mamífero
Subtipo➔ Classes-Filhas são subtipos, ou seja, “é um”
tipo da Classe-Pai◆ Carro “é um” Automóvel◆ Cachorro “é um” Mamífero◆ Real “é uma” Moeda
Tipo de Superclasse➔ Superclasse direta
Tipo de Superclasse➔ Superclasse direta
◆ Declaração explícita
Tipo de Superclasse➔ Superclasse direta
◆ Declaração explícita➔ Superclasse indireta
Tipo de Superclasse➔ Superclasse direta
◆ Declaração explícita➔ Superclasse indireta
◆ Superclasse da Superclasse
Tipo de Superclasse➔ Superclasse direta
◆ Declaração explícita➔ Superclasse indireta
◆ Superclasse da Superclasse◆ E assim sucessivamente
Tipo de Superclasse➔ Superclasse direta
◆ Declaração explícita➔ Superclasse indireta
◆ Superclasse da Superclasse◆ E assim sucessivamente◆ A classe Object é a mais indireta
RepresentaçãoEm UML: seta vazia Em Java: extends
➔ Ambos representam a mesma herança
Usando Herança
Classe-PaiClasse-Filha
Execução
Sobrescrita➔ Modificando o comportamento do método
herdado, com a mesma “assinatura”
Sobrecarga➔ Soma-se ao comportamento original, ou ao
comportamento especializado, oferecendo mais funcionalidades.
Invocadores➔ Usa-se o invocador super ao referenciar a
superclasse para: construtores, atributos e métodos. Muito similar ao this.
Polimorfismo➔ Um objeto de Superclasse pode
Polimorfismo➔ Um objeto de Superclasse pode
◆ Assumir diversas formas
Polimorfismo➔ Um objeto de Superclasse pode
◆ Assumir diversas formas◆ Tantas quantas houverem subclasses
Polimorfismo➔ Um objeto de Superclasse pode
◆ Assumir diversas formas◆ Tantas quantas houverem subclasses
➔ Com isso o comportamento
Polimorfismo➔ Um objeto de Superclasse pode
◆ Assumir diversas formas◆ Tantas quantas houverem subclasses
➔ Com isso o comportamento◆ Pode ser muito diferente
Polimorfismo➔ Um objeto de Superclasse pode
◆ Assumir diversas formas◆ Tantas quantas houverem subclasses
➔ Com isso o comportamento◆ Pode ser muito diferente◆ Apenas “descobre-se” ao executar
Polimorfismo➔ Um objeto de Superclasse pode
◆ Assumir diversas formas◆ Tantas quantas houverem subclasses
➔ Com isso o comportamento◆ Pode ser muito diferente◆ Apenas “descobre-se” ao executar◆ Isso é a chamada ligação tardia
Polimorfismo➔ Só é preciso usar a Superclasse
Polimorfismo➔ Só é preciso usar a Superclasse➔ Para não precisar se preocupar com as Sub
Próxima Aula
➔ Modificadores de visibilidade➔ Classes abstratas➔ Classes finais➔ Interfaces
Exercícios1. Defina uma classe Conta e duas subclasses ContaCorrente e
ContaPoupanca, com as operações bancárias básicas: saque, deposito, saldo, extrato.
2. Na ContaCorrente altere os métodos saldo, extrato e saque para ter um custo de um real cada.
3. No caso da ContaPoupança apenas saque e extrato terão custo, e de apenas cinquenta centavos.
4. No main declare duas variáveis, cada uma com uma das subclasses, utilize-as com a mesma sequência de comandos e observe se existe diferença no funcionamento.
Material Online➔ Slideshare: slideshare.net/daniellobao
◆ Plano de Aula: slideshare.net/daniellobao/planode-aula
◆ Slides (esses): slideshare.net/daniellobao/programao-orientada-a-objetos-31321414
➔ Youtube: youtube.com/lobaorn
Referências● NETO, Plácido. Relação em Classes: Herança. Disponível em
<http://placidoneto.wdfiles.com/local--files/oop/10_Heranca.pdf>. Acesso em 17 de fevereiro de 2014.
● GOODRICH, M. T.; TAMASSIA, R.; Estruturas de Dados e Algoritmos em Java. 4ª Edição. Porto Alegre, 2006.