Anúncio
Anúncio

Mais conteúdo relacionado

Similar a Herança e Polimorfismo.ppt(20)

Anúncio

Último(20)

Herança e Polimorfismo.ppt

  1. Herança e Polimorfismo P. O. O. Prof. Ângela e Grace
  2. 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. 3 Classe Caminhao Atributos específicos construtor da super classe
  4. 4 Classe Caminhao (cont.) Atributos herdados
  5. 5 Teste – Classe Caminhao Reescrito na subclasse: isso é sobrecarga?
  6. 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. 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. 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. 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. 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. 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. 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. 13 Classe Frota (parte 2 de 3) Dados comuns a qualquer veiculo Dados objeto Carro
  14. 14 Classe Frota (parte 3 de 3) Caminhão Tipo não identificado: veículo Polimorfismo
  15. 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. 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. 17 Formas geométricas Formas geométricas área( ) área = (b x h)/2 área = b x h área = π x r2
  18. 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. 19 Classe FormaGeometrica Atributo protected Método concreto
  20. 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. 21 Classe Circulo com Método Area( ) Usa classe Math Implementa Area( )
  22. 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?
  23. 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. 24 Classe Circulo - Método imprime( ) sobrescreve imprime( )
  25. 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. 26 Alterando a superclasse
  27. 27 Exercício – Subclasse Retangulo  Atributos básicos – Base – Altura  Métodos – Sets/ Gets – Construtor (base, altura) – area() – imprime()
  28. 28 Classe Retangulo
  29. 29 Classe Retangulo (cont.)
  30. 30 Teste Formas
  31. 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. 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. 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. 34 Exercício para entregar  Classe triângulo  Classe de teste com as 3 formas
Anúncio