Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

34
Herança e Polimorfismo P. O. O. Prof. Ângela e Grace

Transcript of Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

Page 1: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

Herança e Polimorfismo

P. O. O.

Prof. Ângela e Grace

Page 2: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

2

Exercício – Classe Caminhão

Subclasse Caminhao estende Veiculo– Atributos específicos

Capacidade Número de eixos

– Métodos Construtor Sets e gets Impressão dos dados do caminhão

Page 3: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

3

Classe Caminhao

Atributos específicos

construtor da super classe

Page 4: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

4

Classe Caminhao (cont.)

Atributos herdados

Page 5: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

5

Teste – Classe Caminhao

Reescrito na subclasse: isso é sobrecarga?

Page 6: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

6

Relembrando...

O que é Sobrecarga?– Recurso que permite que vários métodos sejam

definidos com mesmo nome.

– Obrigatório diferentes parâmetros: quantidade,

tipos ou ordem dos argumentos.

– Define vários métodos semelhantes de acordo

com a necessidade, inclusive construtores.

Page 7: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

7

Polimorfismo

“Propriedade de se apresentar sob muitas

formas”

Mesmo método chamado (invocado) pode

ter diferentes resultados

Depende do tipo do objeto que invocou o

método

Page 8: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

8

Polimorfismo

Classe veículo possui método imprime()

Classes carro/ caminhao herdam método

imprime()

Redefinição do método (para carro e

caminhao) provoca diferentes resultados

quando o mesmo método é invocado

Page 9: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

9

Definição de Polimorfismo

Princípio pelo várias classes derivadas de uma

mesma superclasse podem invocar métodos que

têm a mesma identificação (assinatura) mas

comportamentos distintos.

É necessária a redefinição de métodos com mesma

identificação, porém, não deve ser confundido com o

mecanismo de sobrecarga de métodos.

Page 10: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

10

Exemplo – Frota de veículos

Algoritmo– Solicita quantidade de veículos (n)– Leitura de n veículos

Solicita tipo de veiculo Solicita dados de acordo com o tipo Armazena em vetor de tamanho n

– Imprime dados de n veículos armazenados no vetor (polimorfismo)

Qual o tipo do vetor? Veículo? Carro? Caminhão?

Page 11: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

11

Ligação tardia

Veremos que o método pode ser invocado a partir de uma referência a um objeto do tipo da superclasse, apesar de, na prática, ser uma instância da subclasse.

Neste caso, a decisão sobre qual o método que deve ser selecionado, de acordo com o tipo da classe derivada, é tomada em tempo de execução, através do mecanismo de ligação tardia.

Ex: Frota de veículos;

Page 12: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

12

Classe Frota (parte 1 de 3)Usa classe ScannerInício da classe Frota

Declaração de Variáveis

Tamanho da Frota

Loop para entrada de dados

Page 13: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

13

Classe Frota (parte 2 de 3)

Dados comuns a qualquer veiculo

Dados objeto Carro

Page 14: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

14

Classe Frota (parte 3 de 3)Caminhão

Tipo não identificado: veículo

Polimorfismo

Page 15: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

15

Classe Abstrata

Classes demasiadamente gerais para criar objetos reais.

Utilizadas somente como superclasses abstratas para

subclasses concretas

Declara atributos e comportamentos comuns das várias

classes em uma hierarquia.

Em geral, uma classe abstrata contém um ou mais

métodos abstratos

Atributos e métodos concretos de uma classe abstrata

estão sujeitos às regras normais da herança.

Page 16: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

16

Palavra-chave abstract

Utilizada para declarar uma classe abstrata.

Utilizada para declarar um método abstrato:– Classes abstratas contêm um ou mais métodos abstratos.

– Todas as subclasses concretas devem sobrescrever todos

os métodos abstratos herdados.

Tentar instanciar um objeto de uma classe abstrata

é um erro de compilação.

Page 17: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

17

Formas geométricas

Formas geométricas

área( )

área = (b x h)/2

área = b x h

área = π x r2

Page 18: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

18

Classe Abstrata: Forma Geométrica

Atributos básicos– Número de lados

Métodos– Set/ get número de lados: métodos não abstratos– Área: método abstrato– Imprime(): métodos não abstratos– Precisa construtor?

Page 19: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

19

Classe FormaGeometrica

Atributo protected

Método concreto

Page 20: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

20

Classe Circulo

public class Circulo extends FormaGeometrica{ private double raio; // atributo especifico do circulo

public void setRaio (double raio) { if (raio<0) this.raio = 0; else this.raio = raio; } public Circulo (double raio) // construtor { setRaio(raio); }

} Compilou?

Page 21: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

21

Classe Circulo com Método Area( )

Usa classe Math

Implementa Area( )

Page 22: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

22

Classe TesteFormas

public class TesteFormas{ public static void main (String args[]) { FormaGeometrica f = new FormaGeometrica();

f.imprime();

Circulo c = new Circulo(5);c.imprime();

}}

Funcionou?

Page 23: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

23

Alterações

Classes abstratas não podem ser

instanciadas.– Corrigir código do teste

Como imprimir raio junto ao número de lados?

Altero em Circulo ou FormaGeometrica?

Redefinir método imprime( )

Page 24: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

24

Classe Circulo - Método imprime( )

sobrescreve imprime( )

Page 25: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

25

Mais alterações...

Como imprimir área da forma geométrica? Altero na classe Círculo? Ou na FormaGeometrica? Redefinir método imprime( ) incluindo

área.

Page 26: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

26

Alterando a superclasse

Page 27: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

27

Exercício – Subclasse Retangulo

Atributos básicos– Base– Altura

Métodos– Sets/ Gets– Construtor (base, altura)– area()– imprime()

Page 28: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

28

Classe Retangulo

Page 29: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

29

Classe Retangulo (cont.)

Page 30: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

30

Teste Formas

Page 31: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

31

Interfaces

São modelos de comportamentos; Definem e padronizam serviços que uma classe pode

oferecer; Usadas para classes não relacionadas, mas com

alguns comportamentos semelhantes– Ex.: classes Fatura e Funcionário

Não são relacionadas Ambas podem ter método calculaPagamento Usar interface que defina esse comportamento

Usadas implementar herança múltipla

Page 32: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

32

Interface Java

Descreve conjunto de métodos para instruir

como um objeto deve se comportar

Possui apenas métodos abstratos, ou seja,

não pode ter nenhum método implementado

Todos os membros (atributos e métodos)

devem ser public

Page 33: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

33

Implementação de interface

Uma classe concreta pode especificar que

implementa uma ou mais interfaces;

Todos os métodos devem ser codificados;

Caso algum método não seja implementado, essa

classe deve ser abstrata;

Implementar uma interface é como assinar um

contrato!

Ex: Interfaces gráficas (GUI) => Listener

Page 34: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.

34

Exercício para entregar

Classe triângulo Classe de teste com as 3 formas