A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Herança e Polimorfismo

Apresentações semelhantes


Apresentação em tema: "Herança e Polimorfismo"— Transcrição da apresentação:

1 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

3 Classe Caminhao Atributos específicos construtor da super classe

4 Classe Caminhao (cont.)
Atributos herdados

5 Teste – Classe Caminhao
Reescrito na subclasse: isso é sobrecarga?

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.

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

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

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.

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?

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;

12 Classe Frota (parte 1 de 3)
Usa classe Scanner Início da classe Frota Declaração de Variáveis Tamanho da Frota Loop para entrada de dados

13 Classe Frota (parte 2 de 3)
Dados comuns a qualquer veiculo Dados objeto Carro

14 Classe Frota (parte 3 de 3)
Caminhão Tipo não identificado: veículo Polimorfismo

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.

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.

17 Formas geométricas área( ) Formas geométricas área = π x r2
área = (b x h)/2 área = b x h

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?

19 Classe FormaGeometrica
Atributo protected Método concreto

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?

21 Classe Circulo com Método Area( )
Usa classe Math Implementa Area( )

22 Classe TesteFormas Funcionou?
public class TesteFormas { public static void main (String args[]) { FormaGeometrica f = new FormaGeometrica(); f.imprime(); Circulo c = new Circulo(5); c.imprime(); } } Funcionou?

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( )

24 Classe Circulo - Método imprime( )
sobrescreve imprime( )

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.

26 Alterando a superclasse

27 Exercício – Subclasse Retangulo
Atributos básicos Base Altura Métodos Sets/ Gets Construtor (base, altura) area() imprime()

28 Classe Retangulo

29 Classe Retangulo (cont.)

30 Teste Formas

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

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

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

34 Exercício para entregar
Classe triângulo Classe de teste com as 3 formas


Carregar ppt "Herança e Polimorfismo"

Apresentações semelhantes


Anúncios Google