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