SlideShare uma empresa Scribd logo
1 de 34
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
Formas
geométricas
área( )
área = (b x h)/2
área = b x h
área = π x r2
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
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

Mais conteúdo relacionado

Semelhante a Herança e Polimorfismo.ppt

Como usar a documentação da API Java 2
Como usar a documentação da API Java 2Como usar a documentação da API Java 2
Como usar a documentação da API Java 2
Denis L Presciliano
 
Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)
jose-junior89
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++
Sérgio Souza Costa
 
Aula 03 passagem de parâmetros
Aula 03   passagem de parâmetrosAula 03   passagem de parâmetros
Aula 03 passagem de parâmetros
Danilo Alves
 

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

Orientação a Objetos
Orientação a ObjetosOrientação a Objetos
Orientação a Objetos
 
10 heranca
10   heranca10   heranca
10 heranca
 
Introdução a classes e objetos
Introdução a classes e objetosIntrodução a classes e objetos
Introdução a classes e objetos
 
Como usar a documentação da API Java 2
Como usar a documentação da API Java 2Como usar a documentação da API Java 2
Como usar a documentação da API Java 2
 
OOP Java
OOP JavaOOP Java
OOP Java
 
[Curso Java Basico - Orientacao a Objetos] Aula 30: Palavra chave this
[Curso Java Basico - Orientacao a Objetos] Aula 30: Palavra chave this[Curso Java Basico - Orientacao a Objetos] Aula 30: Palavra chave this
[Curso Java Basico - Orientacao a Objetos] Aula 30: Palavra chave this
 
[Curso Java Basico - Orientacao a Objetos] Aula 27: Classes e metodos com par...
[Curso Java Basico - Orientacao a Objetos] Aula 27: Classes e metodos com par...[Curso Java Basico - Orientacao a Objetos] Aula 27: Classes e metodos com par...
[Curso Java Basico - Orientacao a Objetos] Aula 27: Classes e metodos com par...
 
Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)
 
Fundamentos da Programação PHP OO - Aula 2
Fundamentos da Programação PHP OO - Aula 2Fundamentos da Programação PHP OO - Aula 2
Fundamentos da Programação PHP OO - Aula 2
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/
 
Java generics-basics
Java generics-basicsJava generics-basics
Java generics-basics
 
[Curso Java Basico - Orientacao a Objetos] Aula 26: Classes e metodos com ret...
[Curso Java Basico - Orientacao a Objetos] Aula 26: Classes e metodos com ret...[Curso Java Basico - Orientacao a Objetos] Aula 26: Classes e metodos com ret...
[Curso Java Basico - Orientacao a Objetos] Aula 26: Classes e metodos com ret...
 
Tutorial Java: Herança
Tutorial Java: HerançaTutorial Java: Herança
Tutorial Java: Herança
 
Construtores_Sobrecarga.pptx
Construtores_Sobrecarga.pptxConstrutores_Sobrecarga.pptx
Construtores_Sobrecarga.pptx
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserver
 
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
 
Aula 4 herança, sobrescrita de métodos, construtor
Aula 4   herança, sobrescrita de métodos, construtorAula 4   herança, sobrescrita de métodos, construtor
Aula 4 herança, sobrescrita de métodos, construtor
 
Aula 03 passagem de parâmetros
Aula 03   passagem de parâmetrosAula 03   passagem de parâmetros
Aula 03 passagem de parâmetros
 

Mais de JoberthSilva

Mais de JoberthSilva (20)

AULA 1 - Classes e Objetos com codigicação Java.ppt
AULA 1 - Classes e Objetos com codigicação Java.pptAULA 1 - Classes e Objetos com codigicação Java.ppt
AULA 1 - Classes e Objetos com codigicação Java.ppt
 
Curso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação CCurso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação C
 
8 - ATIVIDADE DE OPERADORES TERNÁRIOS E IF.pdf
8 - ATIVIDADE DE OPERADORES TERNÁRIOS E IF.pdf8 - ATIVIDADE DE OPERADORES TERNÁRIOS E IF.pdf
8 - ATIVIDADE DE OPERADORES TERNÁRIOS E IF.pdf
 
A função scanf na programção para dispositivos embarcados
A função scanf na programção para dispositivos embarcadosA função scanf na programção para dispositivos embarcados
A função scanf na programção para dispositivos embarcados
 
A CRIAÇÃO DO UNIVERSO.ppt
A CRIAÇÃO DO UNIVERSO.pptA CRIAÇÃO DO UNIVERSO.ppt
A CRIAÇÃO DO UNIVERSO.ppt
 
Apocalipse - Cartas as Igrejas.pptx
Apocalipse - Cartas as Igrejas.pptxApocalipse - Cartas as Igrejas.pptx
Apocalipse - Cartas as Igrejas.pptx
 
PHP.ppt
PHP.pptPHP.ppt
PHP.ppt
 
Aula_1.pptx
Aula_1.pptxAula_1.pptx
Aula_1.pptx
 
5 - Resistores.ppt
5 - Resistores.ppt5 - Resistores.ppt
5 - Resistores.ppt
 
Problemas de Carater.pptx
Problemas de Carater.pptxProblemas de Carater.pptx
Problemas de Carater.pptx
 
Mapeamento de Objetos para o Modelo Relacional.ppt
Mapeamento de Objetos para o Modelo Relacional.pptMapeamento de Objetos para o Modelo Relacional.ppt
Mapeamento de Objetos para o Modelo Relacional.ppt
 
capacitores1.ppt
capacitores1.pptcapacitores1.ppt
capacitores1.ppt
 
Materiais Semicondutores
Materiais SemicondutoresMateriais Semicondutores
Materiais Semicondutores
 
Algoritmos - Modificado.ppt
Algoritmos - Modificado.pptAlgoritmos - Modificado.ppt
Algoritmos - Modificado.ppt
 
Fibra Óptica
Fibra ÓpticaFibra Óptica
Fibra Óptica
 
actividade1-140709100755-phpapp02.pdf
actividade1-140709100755-phpapp02.pdfactividade1-140709100755-phpapp02.pdf
actividade1-140709100755-phpapp02.pdf
 
50524(1).ppt
50524(1).ppt50524(1).ppt
50524(1).ppt
 
Rede sem fio 2.ppt
Rede sem fio 2.pptRede sem fio 2.ppt
Rede sem fio 2.ppt
 
bom-1.pdf
bom-1.pdfbom-1.pdf
bom-1.pdf
 
PHP.ppt
PHP.pptPHP.ppt
PHP.ppt
 

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
  • 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?
  • 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.
  • 27. 27 Exercício – Subclasse Retangulo  Atributos básicos – Base – Altura  Métodos – Sets/ Gets – Construtor (base, altura) – area() – imprime()
  • 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