programação orientada a objetos: herança e polimorfismo
DESCRIPTION
Slides sobre Herança e Polimorfismo.TRANSCRIPT
![Page 1: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/1.jpg)
Herança e Polimorfismo
Prof. Daniel Lobão
![Page 2: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/2.jpg)
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.
![Page 3: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/3.jpg)
Herança!
![Page 4: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/4.jpg)
O que é Herança➔ Reutilização de uma classe
![Page 5: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/5.jpg)
O que é Herança➔ Reutilização de uma classe
◆ As características serão herdadas
![Page 6: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/6.jpg)
O que é Herança➔ Reutilização de uma classe
◆ As características serão herdadas◆ O comportamento herdado pode ser mantido
ou especializado (modificado)
![Page 7: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/7.jpg)
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
![Page 8: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/8.jpg)
Hierarquia➔ Superclasse (Classe Base)
![Page 9: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/9.jpg)
Hierarquia➔ Superclasse (Classe Base)
◆ Atributos e métodos serão herdados
![Page 10: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/10.jpg)
Hierarquia➔ Superclasse (Classe Base)
◆ Atributos e métodos serão herdados◆ Desconhece os “herdeiros”
![Page 11: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/11.jpg)
Hierarquia➔ Superclasse (Classe Base)
◆ Atributos e métodos serão herdados◆ Desconhece os “herdeiros”
➔ Subclasse (Classe Filha)
![Page 12: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/12.jpg)
Hierarquia➔ Superclasse (Classe Base)
◆ Atributos e métodos serão herdados◆ Desconhece os “herdeiros”
➔ Subclasse (Classe Filha)◆ Explicitamente herda de uma classe
![Page 13: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/13.jpg)
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
![Page 14: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/14.jpg)
Subtipo➔ Classes-Filhas são subtipos, ou seja, “é um”
tipo da Classe-Pai
![Page 15: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/15.jpg)
Subtipo➔ Classes-Filhas são subtipos, ou seja, “é um”
tipo da Classe-Pai◆ Carro “é um” Automóvel
![Page 16: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/16.jpg)
Subtipo➔ Classes-Filhas são subtipos, ou seja, “é um”
tipo da Classe-Pai◆ Carro “é um” Automóvel◆ Cachorro “é um” Mamífero
![Page 17: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/17.jpg)
Subtipo➔ Classes-Filhas são subtipos, ou seja, “é um”
tipo da Classe-Pai◆ Carro “é um” Automóvel◆ Cachorro “é um” Mamífero◆ Real “é uma” Moeda
![Page 18: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/18.jpg)
Tipo de Superclasse➔ Superclasse direta
![Page 19: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/19.jpg)
Tipo de Superclasse➔ Superclasse direta
◆ Declaração explícita
![Page 20: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/20.jpg)
Tipo de Superclasse➔ Superclasse direta
◆ Declaração explícita➔ Superclasse indireta
![Page 21: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/21.jpg)
Tipo de Superclasse➔ Superclasse direta
◆ Declaração explícita➔ Superclasse indireta
◆ Superclasse da Superclasse
![Page 22: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/22.jpg)
Tipo de Superclasse➔ Superclasse direta
◆ Declaração explícita➔ Superclasse indireta
◆ Superclasse da Superclasse◆ E assim sucessivamente
![Page 23: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/23.jpg)
Tipo de Superclasse➔ Superclasse direta
◆ Declaração explícita➔ Superclasse indireta
◆ Superclasse da Superclasse◆ E assim sucessivamente◆ A classe Object é a mais indireta
![Page 24: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/24.jpg)
RepresentaçãoEm UML: seta vazia Em Java: extends
➔ Ambos representam a mesma herança
![Page 25: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/25.jpg)
Usando Herança
Classe-PaiClasse-Filha
Execução
![Page 26: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/26.jpg)
Sobrescrita➔ Modificando o comportamento do método
herdado, com a mesma “assinatura”
![Page 27: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/27.jpg)
Sobrecarga➔ Soma-se ao comportamento original, ou ao
comportamento especializado, oferecendo mais funcionalidades.
![Page 28: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/28.jpg)
Invocadores➔ Usa-se o invocador super ao referenciar a
superclasse para: construtores, atributos e métodos. Muito similar ao this.
![Page 29: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/29.jpg)
Polimorfismo➔ Um objeto de Superclasse pode
![Page 30: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/30.jpg)
Polimorfismo➔ Um objeto de Superclasse pode
◆ Assumir diversas formas
![Page 31: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/31.jpg)
Polimorfismo➔ Um objeto de Superclasse pode
◆ Assumir diversas formas◆ Tantas quantas houverem subclasses
![Page 32: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/32.jpg)
Polimorfismo➔ Um objeto de Superclasse pode
◆ Assumir diversas formas◆ Tantas quantas houverem subclasses
➔ Com isso o comportamento
![Page 33: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/33.jpg)
Polimorfismo➔ Um objeto de Superclasse pode
◆ Assumir diversas formas◆ Tantas quantas houverem subclasses
➔ Com isso o comportamento◆ Pode ser muito diferente
![Page 34: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/34.jpg)
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
![Page 35: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/35.jpg)
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
![Page 36: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/36.jpg)
Polimorfismo➔ Só é preciso usar a Superclasse
![Page 37: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/37.jpg)
Polimorfismo➔ Só é preciso usar a Superclasse➔ Para não precisar se preocupar com as Sub
![Page 38: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/38.jpg)
Próxima Aula
➔ Modificadores de visibilidade➔ Classes abstratas➔ Classes finais➔ Interfaces
![Page 39: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/39.jpg)
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.
![Page 40: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/40.jpg)
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
![Page 41: Programação Orientada a Objetos: Herança e Polimorfismo](https://reader030.vdocuments.pub/reader030/viewer/2022020716/558fbbcc1a28ab6e7e8b45ed/html5/thumbnails/41.jpg)
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.