herança e polimorfismo p. o. o. prof. Ângela e grace

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

Upload: internet

Post on 17-Apr-2015

106 views

Category:

Documents


1 download

TRANSCRIPT

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