You are on page 1of 18

Programao Orientada a

Objetos - POO
-

Interface
Prof. DSc. Gilvan Martins Dures

Roteiro

O que vimos na ltima aula


Modificador final
Interface
Exemplos
Exerccios

Prof. DSc. Gilvan M. Dures

POO 2015.2

O que vimos nas ltimas aulas...

Herana

Classes Abstratas
Polimorfismo
Sobrescrita x Sobrecarga de mtodos
mtodo String toString()
mtodo boolean equals(Objecto o)

Prof. DSc. Gilvan M. Dures

POO 2015.2

O Modificador final

classes finais no podem ser estendidas (ter


subclasses).

variveis finais so equivalentes a CONSTANTES.

mtodos finais no podem ser sobrescritos


(overriden) por subclasses da classe em que ele foi
declarado.

Prof. DSc. Gilvan M. Dures

POO 2015.2

O Modificador final

So usadas basicamente por segurana e eficincia.

Segurana porque ningum poder fazer uma


subclasse de uma classe e adicionar comportamento
malicioso a ela. Exemplo: estender uma classe do
pacote system para copiar informao crtica de outros
programas.

Eficincia pois a mquina virtual pode ser otimizada


para classes no estendidas.

Prof. DSc. Gilvan M. Dures

POO 2015.2

Classe final
// Uma classe final
public final class UmaClasseFinal {
//...
}

Prof. DSc. Gilvan M. Dures

POO 2015.2

Variveis finais
//So usadas para declarar constantes em
programas Java
public class Constantes {
public final String AUTOR = Gilvan
Duraes;
private final float PI = 3.14159;
}
Prof. DSc. Gilvan M. Dures

POO 2015.2

Mtodos finais
public class ClassesComMetodosFinais {
public static final void metodoUnicoEutil() {
//...
}
private final void apenasEuChamoEste() {
//...
}
}
Prof. DSc. Gilvan M. Dures

POO 2015.2

Interface

As interfaces so estritamente modelos de


comportamento.
As interfaces no podem ser instanciadas pois no
produzem objetos.
A relao existente entre as classes que implementam
uma Interface e a Interface uma relao do tipo
implementa os mtodos de.
Se uma classe definida por apenas mtodos
abstratos ento melhor defini-la como uma Interface.

Prof. DSc. Gilvan M. Dures

POO 2015.2

Interface

Nenhum mtodo de interface pode ter um corpo, ou


seja, no tem um algoritmo definido para executar o
comportamento. Mas, as classes que prometem
implementar uma interface so obrigadas a
implementar todos os mtodos nela especificados.

Prof. DSc. Gilvan M. Dures

POO 2015.2

10

Interface

Uma interface no herda de Object pois, alm de


Object ser uma classe, interfaces no possuem
nenhuma classe no topo de sua hierarquia de herana.

Diferente de Herana, uma classe pode implementar mais de


uma Interface!

Prof. DSc. Gilvan M. Dures

POO 2015.2

11

Interface
public interface UmaInterface
extends Interface1, Interface2, Interface3 {
// todos as variveis aqui so pblicas, estticas e finais
public static final int umaVariavel = 0;
// todos os mtodos aqui so pblicos e abstratos
public abstract int umMetodoAbstrato();
}
Prof. DSc. Gilvan M. Dures

POO 2015.2

12

Interface
public interface UmaInterface
extends Interface1, Interface2, Interface3 {
// todos as variveis se tornam pblicas, estticas e
finais
int umaVariavel = 0;
// todos os mtodos se tornam pblicos e abstratos
int umMetodoAbstrato();
}
Prof. DSc. Gilvan M. Dures

POO 2015.2

13

Interface
// colocada sob UmaOutraClasse na rvore de herana
public class MinhaClasse extends UmaOutraClasse
implements UmaInterface, OutraInterface {
//...
}
// colocada sob Object na rvore de herana
public class MinhaClasse2
implements UmaInterface {
//...
}
Prof. DSc. Gilvan M. Dures

POO 2015.2

14

Interface
interface Fruta {
void apodrece();
void machuca();
}
class FrutaCitrica extends Food implements Fruta {
private Color minhaCor;
private int diasAteEstragar;
//...
}
Prof. DSc. Gilvan M. Dures

POO 2015.2

15

Interface
interface Esfera {
void jogar();
void rolar();
}
class Laranja extends FrutaCitrica implements Esfera
{
// implementa jogar e rolar
}

Prof. DSc. Gilvan M. Dures

POO 2015.2

16

Usando Interfaces
Laranja umaLaranja = new Laranja();
FrutaCitrica umaFrutaCitrica = (FrutaCitrica) new Laranja();
Fruta umaFruta = (Fruta) new Laranja();
Esfera umaEsfera = (Esfera) new Laranja();
umaFruta.apodrece(); // OK!
umaFruta.machuca(); // OK!
umaFrutaCitrica.apodrece(); // OK!
umaFrutaCitrica.machuca(); // OK!
umaFruta.jogar(); // No pode !!!
umaEsfera.jogar(); // OK!
umaLaranja.apodrece(); // OK!
umaLaranja.machuca(); // OK!
umaLaranja.jogar(); // OK!
umaLaranja.rolar(); // OK!
Prof. DSc. Gilvan M. Dures

POO 2015.2

17

Atividade em sala...

...

Prof. DSc. Gilvan M. Dures

POO 2015.2

18