programação orientada a objetos: herança e polimorfismo

41
Herança e Polimorfismo Prof. Daniel Lobão

Upload: daniel-lobao

Post on 28-Jun-2015

1.123 views

Category:

Technology


5 download

DESCRIPTION

Slides sobre Herança e Polimorfismo.

TRANSCRIPT

Page 1: Programação Orientada a Objetos: Herança e Polimorfismo

Herança e Polimorfismo

Prof. Daniel Lobão

Page 2: Programação Orientada a Objetos: Herança e Polimorfismo

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

Herança!

Page 4: Programação Orientada a Objetos: Herança e Polimorfismo

O que é Herança➔ Reutilização de uma classe

Page 5: Programação Orientada a Objetos: Herança e Polimorfismo

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

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

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

Hierarquia➔ Superclasse (Classe Base)

Page 9: Programação Orientada a Objetos: Herança e Polimorfismo

Hierarquia➔ Superclasse (Classe Base)

◆ Atributos e métodos serão herdados

Page 10: Programação Orientada a Objetos: Herança e Polimorfismo

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

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

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

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

Subtipo➔ Classes-Filhas são subtipos, ou seja, “é um”

tipo da Classe-Pai

Page 15: Programação Orientada a Objetos: Herança e Polimorfismo

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

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

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

Tipo de Superclasse➔ Superclasse direta

Page 19: Programação Orientada a Objetos: Herança e Polimorfismo

Tipo de Superclasse➔ Superclasse direta

◆ Declaração explícita

Page 20: Programação Orientada a Objetos: Herança e Polimorfismo

Tipo de Superclasse➔ Superclasse direta

◆ Declaração explícita➔ Superclasse indireta

Page 21: Programação Orientada a Objetos: Herança e Polimorfismo

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

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

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

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

Usando Herança

Classe-PaiClasse-Filha

Execução

Page 26: Programação Orientada a Objetos: Herança e Polimorfismo

Sobrescrita➔ Modificando o comportamento do método

herdado, com a mesma “assinatura”

Page 27: Programação Orientada a Objetos: Herança e Polimorfismo

Sobrecarga➔ Soma-se ao comportamento original, ou ao

comportamento especializado, oferecendo mais funcionalidades.

Page 28: Programação Orientada a Objetos: Herança e Polimorfismo

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

Polimorfismo➔ Um objeto de Superclasse pode

Page 30: Programação Orientada a Objetos: Herança e Polimorfismo

Polimorfismo➔ Um objeto de Superclasse pode

◆ Assumir diversas formas

Page 31: Programação Orientada a Objetos: Herança e Polimorfismo

Polimorfismo➔ Um objeto de Superclasse pode

◆ Assumir diversas formas◆ Tantas quantas houverem subclasses

Page 32: Programação Orientada a Objetos: Herança e Polimorfismo

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

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

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

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

Polimorfismo➔ Só é preciso usar a Superclasse

Page 37: Programação Orientada a Objetos: Herança e Polimorfismo

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

Próxima Aula

➔ Modificadores de visibilidade➔ Classes abstratas➔ Classes finais➔ Interfaces

Page 39: Programação Orientada a Objetos: Herança e Polimorfismo

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

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

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.