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

Preview:

DESCRIPTION

Slides sobre Herança e Polimorfismo.

Citation preview

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.

Recommended