Você está na página 1de 27

PROGRAMAO

MULTIPLATAFORMA
polimorfismo classe abstrata interface
NGUESSANDESIRE@IG.COM.BR

Dsir NGuessan

Polimorfismo
Polimorfismo vem do grego:
Poli (muitas) + morfo (forma)

O que ?
Propriedade pela qual uma mesma operao
pode ser definida em mais de uma classe e
tomar diferentes implementaes.
Capacidade de uma varivel assumir
referncia a diferentes objetos em tempos
diferentes
Dsir NGuessan

Polimorfismo

public void
plotar(Forma2D figura)
{
...
figura.desenhar();
...
}
Essa chamada vinculada
dinamicamente verso correta de
desenhar
Dsir NGuessan

Polimorfismo
Exemplo:
Quadrado quadrado = new Quadrado();
Forma2D forma2D = quadrado;
forma2D. desenhar();
Qual o retorno desse mtodo? Desenha
forma 2D ou um quadrado?

um

O polimorfismo a capacidade de um objeto


pode ser referenciado de varias formas
Dsir NGuessan

Polimorfismo
Exemplo:
Qual o retorno desse mtodo? Desenha
forma 2D ou um quadrado?
A resposta desenhar um quadrado

Dsir NGuessan

um

Polimorfismo
Quadrado

Forma2D

quadrado

forma2D

Forma2D

O polimorfismo a capacidade de um objeto


pode ser referenciado de varias formas
Dsir NGuessan

Polimorfismo
Vantagens:
O polimorfismo permite que programadores
tratem de generalidades e deixem que o
ambiente de tempo de execuo trate as
especificidades.
Os programadores podem instruir objetos a se
comportarem de maneiras apropriadas para
esses objetos, sem nem mesmo conhecer os
tipos dos objetos (contanto que os objetos
Dsir NGuessan
pertenam mesma
hierarquia de herana).

Polimorfismo
Bonificaes:
Funcionario: 5% do salrio
Diretor: 15% do salrio
Gerente:10% do salrio

Dsir NGuessan

Classe Abstrata
uma classe que apenas idealiza um tipo,
define apenas um rascunho.
Usa-se a palavra chave abstract para impedir
que ela possa ser instanciada.
O intuito de uma classe abstrata criar uma
interface comum para todas as classes
derivadas dela.
Dsir NGuessan

Classe Abstrata
Declarando uma classe abstrata:
abstract class Funcionario {
// corpo da classe
}

Dsir NGuessan

Classe Abstrata

Dsir NGuessan

Classe Abstrata
Mtodo abstrato:
Em uma classe abstrata, podemos
escrever que determinado mtodo ser
sempre escrito pelas classes filhas. Isto
, um mtodo abstrato.
Ele indica que todas as classes filhas
devem escrever esse mtodo ou no
compilaro. como se elas herdassem
Dsir NGuessan
a responsabilidade
de ter aquele

Classe Abstrata
Mtodo abstrato:
Qualquer classe que estender a classe
abstrata ser obrigada a escrever este
mtodo, tornando-o concreto. Se no
reescrever esse mtodo, um erro de
compilao ocorrer.

Dsir NGuessan

Classe Abstrata
Declarando mtodo abstrato:
abstract class Funcionario {
abstract double getBonificacao();
/*
outros atributos e metodos
*/

}
Dsir NGuessan

Classe Abstrata
Exerccio
Com base no exerccio prtico do exemplo de
polimorfismo
sobre Funcionario, Gerente e
getBonificacao, reescreva o exemplo usando o
conceito de classe abstrata. A empresa, neste
contexto tem apenas diretores, gerentes, etc. A
classe Funcionario uma classe que apenas idealiza
um tipo, define apenas um rascunho. Para o nosso
sistema, inadmissvel que um objeto seja apenas
do tipo Funcionario.
Dsir NGuessan

Interfaces
Toda classe define 2 itens:

O que ela faz, quais as tarefas que ela faz


(as assinaturas dos mtodos)

Como ela faz essas tarefas (o corpo dos


mtodos e atributos privados)

Uma interface um contrato que define


tudo o que uma classe deve fazer
Dsir NGuessan

Interfaces
Interface um contrato onde, quem
assina se responsabiliza por implementar
os mtodos definidos no contrato (cumprir
o contrato).
Pode pensar uma interface como uma
classe abstrata pura, porque ela pode
conter somente mtodos pblicos e
abstratos (abstract).
Dsir NGuessan

Interfaces
Uma interface pode definir uma srie de
mtodos, mas nunca conter implementao
deles.
A interface s expe o que o objeto deve
fazer, e no como ele faz. Como ele faz vai
ser definido em uma implementao dessa
interface.
Dsir NGuessan

Interfaces
Criando uma interface
interface NomeInterface {
// assinaturas dos mtodos;
}
Exemplo
interface Autenticavel {
abstract boolean autentica(int
senha);
Dsir NGuessan
}

Interfaces
Implementando uma interface
pode-se assinar o contrato, ou seja,
implementar a interface, para isso preciso
escrever os mtodos pedidos pela interface
(muito parecido com o efeito de herdar
mtodos abstratos, alis, mtodos de uma
interface so pblicos e abstratos, sempre).
Para implementar usamos a palavra chave
implements na classe.
Dsir NGuessan

Interfaces
Exemplo

Dsir NGuessan

Interfaces
class Gerente extends Funcionario
implements Autenticavel {
private int senha;
//outros atributos e mtodos
public boolean autentica(int senha)
{
if(this.senha != senha)
return false;
return true;}
Dsir NGuessan
}

Interfaces
Principais aspectos:
Uma interface s pode conter mtodos
pblicos e abstratos.
Uma interface pode conter variveis, mas
elas devem ser estticas (static) e finais
(final).
Uma interface implementada com a palavra
chave implements.
Dsir NGuessan

Interfaces
Principais aspectos:
Uma classe pode implementar mltiplas
interfaces mas pode estender somente uma
nica classe.
Uma classe que implementa uma interface
deve sobrescrever todos seus mtodos ou
deve ser declarada como uma classe abstrata
(asbtract).
Dsir NGuessan

Interfaces
Principais aspectos:
Interfaces no podem ser instanciadas, mas
podem ser usadas como tipo da referncia.

Dsir NGuessan

Interfaces
public class MainActivity extends Activity implements OnTouchListener
{
EcranDessin v;
Bitmap Bille;
float x, y;
// implementao de mtodos abstratos
// ...
}

Dsir NGuessan

Interfaces
public class EcranDessin extends SurfaceView implements Runnable {
Thread t = null;
SurfaceHolder holder;
boolean isItOk = false;
public EcranDessin(Context context) {
super(context);
// -- lancement du Holder
holder = getHolder();
}

Dsir NGuessan

Você também pode gostar