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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/1.jpg)
Herança e Polimorfismo
P. O. O.
Prof. Ângela e Grace
![Page 2: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/2.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/3.jpg)
3
Classe Caminhao
Atributos específicos
construtor da super classe
![Page 4: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/4.jpg)
4
Classe Caminhao (cont.)
Atributos herdados
![Page 5: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/5.jpg)
5
Teste – Classe Caminhao
Reescrito na subclasse: isso é sobrecarga?
![Page 6: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/6.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/7.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/8.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/9.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/10.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/11.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/12.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/13.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/14.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/15.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/16.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/17.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/18.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/19.jpg)
19
Classe FormaGeometrica
Atributo protected
Método concreto
![Page 20: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/20.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/21.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/22.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/23.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/24.jpg)
24
Classe Circulo - Método imprime( )
sobrescreve imprime( )
![Page 25: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/25.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/26.jpg)
26
Alterando a superclasse
![Page 27: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/27.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/28.jpg)
28
Classe Retangulo
![Page 29: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/29.jpg)
29
Classe Retangulo (cont.)
![Page 30: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/30.jpg)
30
Teste Formas
![Page 31: Herança e Polimorfismo P. O. O. Prof. Ângela e Grace.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/31.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/32.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/33.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc11b497959413d8c9ff8/html5/thumbnails/34.jpg)
34
Exercício para entregar
Classe triângulo Classe de teste com as 3 formas